Remove use of array_map to allow dex to be verifiably built by anchor docker image's version of rust
This commit is contained in:
parent
85b4f14990
commit
4d921bbbe9
|
@ -982,7 +982,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "serum_dex"
|
||||
version = "0.5.5"
|
||||
version = "0.5.6"
|
||||
dependencies = [
|
||||
"arbitrary",
|
||||
"arrayref",
|
||||
|
|
|
@ -1943,7 +1943,10 @@ pub(crate) mod account_parser {
|
|||
f: impl FnOnce(ReplaceOrdersByClientIdsArgs) -> DexResult<T>,
|
||||
) -> DexResult<T> {
|
||||
// Account indices for market, bids, asks, OpenOrders, owner, event_q
|
||||
let cancel_accounts = [0, 4, 5, 1, 7, 3].map(|i| accounts[i].clone());
|
||||
let cancel_accounts = [0, 4, 5, 1, 7, 3]
|
||||
.iter()
|
||||
.map(|i| accounts[*i].clone())
|
||||
.collect::<Vec<_>>();
|
||||
let mut client_order_ids = [0; 8];
|
||||
for (instruction, client_order_id) in
|
||||
instructions.iter().zip(client_order_ids.iter_mut())
|
||||
|
@ -1955,7 +1958,7 @@ pub(crate) mod account_parser {
|
|||
program_id,
|
||||
instructions,
|
||||
accounts,
|
||||
cancel_accounts: &cancel_accounts[..],
|
||||
cancel_accounts: cancel_accounts.as_slice(),
|
||||
client_order_ids,
|
||||
})
|
||||
}
|
||||
|
@ -3198,7 +3201,6 @@ impl State {
|
|||
|
||||
use solana_program::clock::Clock;
|
||||
|
||||
use crate::error::DexError;
|
||||
drop(open_orders);
|
||||
|
||||
if deposit_amount != 0 {
|
||||
|
|
|
@ -665,8 +665,56 @@ fn test_replace_orders() {
|
|||
assert_eq!(identity(open_orders.native_pc_total), 150_000);
|
||||
}
|
||||
|
||||
// Replace order 0xabc1
|
||||
// 0xabc1: 50K -> 60K (replaced)
|
||||
// 0xabc2: 50K (unchanged)
|
||||
// 0xabc3: 50K (unchanged)
|
||||
{
|
||||
let instruction_data = MarketInstruction::ReplaceOrderByClientId(NewOrderInstructionV3 {
|
||||
side: Side::Bid,
|
||||
limit_price: NonZeroU64::new(10_000).unwrap(),
|
||||
max_coin_qty: NonZeroU64::new(10).unwrap(),
|
||||
max_native_pc_qty_including_fees: NonZeroU64::new(60_000).unwrap(),
|
||||
order_type: OrderType::Limit,
|
||||
client_order_id: 0xabc1,
|
||||
self_trade_behavior: SelfTradeBehavior::AbortTransaction,
|
||||
limit: 5,
|
||||
max_ts: i64::MAX,
|
||||
})
|
||||
.pack();
|
||||
|
||||
let instruction_accounts: &[AccountInfo] = bump_vec![in ≎
|
||||
accounts.market.clone(),
|
||||
orders_account.clone(),
|
||||
accounts.req_q.clone(),
|
||||
accounts.event_q.clone(),
|
||||
accounts.bids.clone(),
|
||||
accounts.asks.clone(),
|
||||
pc_account.clone(),
|
||||
owner.clone(),
|
||||
accounts.coin_vault.clone(),
|
||||
accounts.pc_vault.clone(),
|
||||
spl_token_program.clone(),
|
||||
accounts.rent_sysvar.clone(),
|
||||
]
|
||||
.into_bump_slice();
|
||||
|
||||
State::process(dex_program_id, instruction_accounts, &instruction_data).unwrap();
|
||||
}
|
||||
|
||||
{
|
||||
let open_orders = Market::load(&accounts.market, &dex_program_id, false)
|
||||
.unwrap()
|
||||
.load_orders_mut(&orders_account, None, &dex_program_id, None, None)
|
||||
.unwrap();
|
||||
assert_eq!(identity(open_orders.native_coin_free), 0);
|
||||
assert_eq!(identity(open_orders.native_coin_total), 0);
|
||||
assert_eq!(identity(open_orders.native_pc_free), 0);
|
||||
assert_eq!(identity(open_orders.native_pc_total), 160_000);
|
||||
}
|
||||
|
||||
// Replace orders 0xabc1, 0xabc3, 0xabc4
|
||||
// 0xabc1: 50K -> 70K (replaced)
|
||||
// 0xabc1: 60K -> 70K (replaced)
|
||||
// 0xabc2: 50K (unchanged)
|
||||
// 0xabc3: 50K -> 70K (replaced)
|
||||
// 0xabc4: 70K (new)
|
||||
|
|
Loading…
Reference in New Issue