Skip to content

Commit

Permalink
fix and add tests
Browse files Browse the repository at this point in the history
  • Loading branch information
0xbigz committed Jul 12, 2024
1 parent 0f27868 commit 0b8d30d
Showing 1 changed file with 40 additions and 1 deletion.
41 changes: 40 additions & 1 deletion programs/drift/src/state/order_params/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ mod update_perp_auction_params {
use crate::{
OracleSource, OrderParams, PositionDirection, AMM_RESERVE_PRECISION,
BID_ASK_SPREAD_PRECISION, PEG_PRECISION, PRICE_PRECISION_I64, PRICE_PRECISION_U64,
QUOTE_PRECISION_U64,
};

#[test]
Expand All @@ -56,6 +57,8 @@ mod update_perp_auction_params {
long_spread: (BID_ASK_SPREAD_PRECISION / 100) as u32,
sqrt_k: 100 * AMM_RESERVE_PRECISION,
peg_multiplier: 100 * PEG_PRECISION,
volume_24h: 1_000_000 * QUOTE_PRECISION_U64,

..AMM::default()
};
amm.last_bid_price_twap = (oracle_price - 192988) as u64;
Expand Down Expand Up @@ -149,6 +152,8 @@ mod update_perp_auction_params {
long_spread: (BID_ASK_SPREAD_PRECISION / 100) as u32,
sqrt_k: 100 * AMM_RESERVE_PRECISION,
peg_multiplier: 100 * PEG_PRECISION,
volume_24h: 1_000_000 * QUOTE_PRECISION_U64,

..AMM::default()
};
amm.last_bid_price_twap = (oracle_price * 15 / 10 - 192988) as u64;
Expand Down Expand Up @@ -194,6 +199,8 @@ mod update_perp_auction_params {
long_spread: (BID_ASK_SPREAD_PRECISION / 100) as u32,
sqrt_k: 100 * AMM_RESERVE_PRECISION,
peg_multiplier: 100 * PEG_PRECISION,
volume_24h: 1_000_000 * QUOTE_PRECISION_U64,

..AMM::default()
};
amm.last_bid_price_twap = (oracle_price * 99 / 100) as u64;
Expand Down Expand Up @@ -366,6 +373,8 @@ mod update_perp_auction_params {
long_spread: (BID_ASK_SPREAD_PRECISION / 100) as u32,
sqrt_k: 100 * AMM_RESERVE_PRECISION,
peg_multiplier: 99 * PEG_PRECISION,
volume_24h: 1_000_000 * QUOTE_PRECISION_U64,

..AMM::default()
};
amm.historical_oracle_data.last_oracle_price = oracle_price;
Expand Down Expand Up @@ -472,6 +481,8 @@ mod update_perp_auction_params {
long_spread: (BID_ASK_SPREAD_PRECISION / 100) as u32,
sqrt_k: 100 * AMM_RESERVE_PRECISION,
peg_multiplier: 100 * PEG_PRECISION,
volume_24h: 1_000_000 * QUOTE_PRECISION_U64,

..AMM::default()
};
amm.historical_oracle_data.last_oracle_price = oracle_price;
Expand Down Expand Up @@ -544,6 +555,8 @@ mod update_perp_auction_params {
long_spread: (BID_ASK_SPREAD_PRECISION / 100) as u32,
sqrt_k: 100 * AMM_RESERVE_PRECISION,
peg_multiplier: 100 * PEG_PRECISION,
volume_24h: 1_000_000 * QUOTE_PRECISION_U64,

..AMM::default()
};
amm.historical_oracle_data.last_oracle_price = oracle_price;
Expand Down Expand Up @@ -691,6 +704,7 @@ mod update_perp_auction_params {
long_spread: (BID_ASK_SPREAD_PRECISION / 100) as u32,
sqrt_k: 100 * AMM_RESERVE_PRECISION,
peg_multiplier: 100 * PEG_PRECISION,
volume_24h: 1_000_000 * QUOTE_PRECISION_U64,
..AMM::default()
};
amm.historical_oracle_data.last_oracle_price = oracle_price;
Expand Down Expand Up @@ -797,6 +811,21 @@ mod update_perp_auction_params {
);
assert_eq!(order_params_after.auction_end_price.unwrap(), 1207026);

// test sanitize skip on low volume
amm.historical_oracle_data.last_oracle_price_twap_ts = 17000000;
amm.last_mark_price_twap_ts = amm.historical_oracle_data.last_oracle_price_twap_ts;
amm.volume_24h = 183953; // under $1
let mut order_params_after = order_params_before;
order_params_after
.update_perp_auction_params(&perp_market, oracle_price)
.unwrap();
assert_eq!(
order_params_after.auction_start_price.unwrap(),
18698 - oracle_price / 400
);
assert_eq!(order_params_after.auction_end_price.unwrap(), 1207026);


// test empty
let order_params_before = OrderParams {
order_type: OrderType::Oracle,
Expand Down Expand Up @@ -858,7 +887,10 @@ mod get_close_perp_params {
use crate::state::user::{Order, OrderStatus};
use crate::test_utils::create_account_info;
use crate::validation::order::validate_order;
use crate::{OrderParams, PositionDirection, BASE_PRECISION_U64, PRICE_PRECISION_I64};
use crate::{
OrderParams, PositionDirection, BASE_PRECISION_U64, PRICE_PRECISION_I64,
QUOTE_PRECISION_U64,
};
use anchor_lang::prelude::AccountLoader;
use solana_program::pubkey::Pubkey;
use std::str::FromStr;
Expand All @@ -876,6 +908,7 @@ mod get_close_perp_params {
},
mark_std: PRICE_PRECISION_U64,
oracle_std: PRICE_PRECISION_U64,
volume_24h: 1_000_000 * QUOTE_PRECISION_U64,
..AMM::default_test()
};
let perp_market = PerpMarket {
Expand Down Expand Up @@ -913,6 +946,7 @@ mod get_close_perp_params {
},
mark_std: PRICE_PRECISION_U64,
oracle_std: PRICE_PRECISION_U64,
volume_24h: 1_000_000 * QUOTE_PRECISION_U64,
..AMM::default_test()
};
let perp_market = PerpMarket {
Expand Down Expand Up @@ -947,6 +981,7 @@ mod get_close_perp_params {
},
mark_std: PRICE_PRECISION_U64,
oracle_std: PRICE_PRECISION_U64,
volume_24h: 1_000_000 * QUOTE_PRECISION_U64,
..AMM::default_test()
};
let perp_market = PerpMarket {
Expand Down Expand Up @@ -984,6 +1019,7 @@ mod get_close_perp_params {
},
mark_std: PRICE_PRECISION_U64,
oracle_std: PRICE_PRECISION_U64,
volume_24h: 1_000_000 * QUOTE_PRECISION_U64,
..AMM::default_test()
};
let perp_market = PerpMarket {
Expand Down Expand Up @@ -1022,6 +1058,7 @@ mod get_close_perp_params {
},
mark_std: PRICE_PRECISION_U64,
oracle_std: PRICE_PRECISION_U64,
volume_24h: 1_000_000 * QUOTE_PRECISION_U64,
..AMM::default_test()
};
let perp_market = PerpMarket {
Expand Down Expand Up @@ -1058,6 +1095,8 @@ mod get_close_perp_params {
},
mark_std: PRICE_PRECISION_U64,
oracle_std: PRICE_PRECISION_U64,
volume_24h: 1_000_000 * QUOTE_PRECISION_U64,

..AMM::default_test()
};
let perp_market = PerpMarket {
Expand Down

0 comments on commit 0b8d30d

Please sign in to comment.