diff --git a/contracts/adapters/swap/drop/src/contract.rs b/contracts/adapters/swap/drop/src/contract.rs index 5482d50..52489d1 100644 --- a/contracts/adapters/swap/drop/src/contract.rs +++ b/contracts/adapters/swap/drop/src/contract.rs @@ -212,7 +212,7 @@ pub fn query(deps: Deps, _env: Env, msg: QueryMsg) -> ContractResult { let exchange_rate = get_exchange_rate(deps)?; to_json_binary(&Asset::Native(Coin::new( - (exchange_rate * asset_in.amount()).into(), + (asset_in.amount().div_floor(exchange_rate)).into(), //(asset_in.amount().div_floor(exchange_rate)).into() asset_out_denom, ))) } @@ -223,7 +223,7 @@ pub fn query(deps: Deps, _env: Env, msg: QueryMsg) -> ContractResult { let exchange_rate = get_exchange_rate(deps)?; to_json_binary(&Asset::Native(Coin::new( - (asset_out.amount().div_floor(exchange_rate)).into(), + (exchange_rate * asset_out.amount()).into(), //(exchange_rate * asset_out.amount()).into() asset_in_denom, ))) } @@ -245,7 +245,7 @@ pub fn query(deps: Deps, _env: Env, msg: QueryMsg) -> ContractResult { to_json_binary(&SimulateSwapExactAssetInResponse { asset_out: Asset::Native(Coin::new( - (exchange_rate * asset_in.amount()).into(), + (asset_in.amount().div_floor(exchange_rate)).into(), asset_out_denom, )), spot_price, @@ -269,7 +269,7 @@ pub fn query(deps: Deps, _env: Env, msg: QueryMsg) -> ContractResult { to_json_binary(&SimulateSwapExactAssetOutResponse { asset_in: Asset::Native(Coin::new( - (asset_out.amount().div_floor(exchange_rate)).into(), + (exchange_rate * asset_out.amount()).into(), asset_in_denom, )), spot_price, @@ -282,7 +282,7 @@ pub fn query(deps: Deps, _env: Env, msg: QueryMsg) -> ContractResult { let exchange_rate = get_exchange_rate(deps)?; to_json_binary(&Asset::Native(Coin::new( - (exchange_rate * asset_in.amount()).into(), + (asset_in.amount().div_floor(exchange_rate)).into(), asset_out_denom, ))) } @@ -304,7 +304,7 @@ pub fn query(deps: Deps, _env: Env, msg: QueryMsg) -> ContractResult { to_json_binary(&SimulateSwapExactAssetInResponse { asset_out: Asset::Native(Coin::new( - (exchange_rate * asset_in.amount()).into(), + (asset_in.amount().div_floor(exchange_rate)).into(), asset_out_denom, )), spot_price, diff --git a/contracts/adapters/swap/drop/tests/test_queries.rs b/contracts/adapters/swap/drop/tests/test_queries.rs index 3083c59..0c35972 100644 --- a/contracts/adapters/swap/drop/tests/test_queries.rs +++ b/contracts/adapters/swap/drop/tests/test_queries.rs @@ -42,7 +42,7 @@ struct Params { asset_in: Asset::Native(Coin::new(100, "ibc/uatom")), }, response: to_json_binary(&Asset::Native(Coin::new( - 50, + 200, "factory/uatom", ))).unwrap(), exchange_rate: Decimal::from_atomics(cosmwasm_std::Uint128::new(5), 1).unwrap(), @@ -81,7 +81,7 @@ struct Params { asset_out: Asset::Native(Coin::new(100, "factory/uatom")), }, response: to_json_binary(&Asset::Native(Coin::new( - 200, + 50, "ibc/uatom", ))).unwrap(), exchange_rate: Decimal::from_atomics(cosmwasm_std::Uint128::new(5), 1).unwrap(), @@ -126,7 +126,7 @@ struct Params { }, response: to_json_binary(&skip::swap::SimulateSwapExactAssetInResponse{ asset_out: Asset::Native(Coin::new( - 50, + 200, "factory/uatom", )), spot_price: Some(Decimal::from_atomics(cosmwasm_std::Uint128::new(5), 1).unwrap()) @@ -186,7 +186,7 @@ struct Params { }, response: to_json_binary(&skip::swap::SimulateSwapExactAssetOutResponse{ asset_in: Asset::Native(Coin::new( - 200, + 50, "ibc/uatom", )), spot_price: Some(Decimal::from_atomics(cosmwasm_std::Uint128::new(5), 1).unwrap()) @@ -261,6 +261,7 @@ fn test_queries(params: Params) -> ContractResult<()> { assert_eq!(err, params.expected_error.unwrap()); } } + println!("{:?}", exchange_rate); Ok(()) }