// TODO: fix unit tests
// use crate::asset::{format_lp_token_name, Asset, AssetInfo, PairInfo};
// use crate::mock_querier::mock_dependencies;
// use crate::querier::{
// query_all_balances, query_balance, query_pair_info, query_supply, query_token_balance,
// };
//
// use crate::factory::PairType;
// use crate::DecimalCheckedOps;
// use cosmwasm_std::testing::MOCK_CONTRACT_ADDR;
// use cosmwasm_std::{to_binary, Addr, BankMsg, Coin, CosmosMsg, Decimal, Uint128, WasmMsg};
// use cw20::Cw20ExecuteMsg;
//
// #[test]
// fn token_balance_querier() {
// let mut deps = mock_dependencies(&[]);
//
// deps.querier.with_token_balances(&[(
// &String::from("liquidity0000"),
// &[(&String::from(MOCK_CONTRACT_ADDR), &Uint128::new(123u128))],
// )]);
//
// deps.querier.with_cw20_query_handler();
// assert_eq!(
// Uint128::new(123u128),
// query_token_balance(
// &deps.as_ref().querier,
// Addr::unchecked("liquidity0000"),
// Addr::unchecked(MOCK_CONTRACT_ADDR),
// )
// .unwrap()
// );
// deps.querier.with_default_query_handler()
// }
//
// #[test]
// fn balance_querier() {
// let deps = mock_dependencies(&[Coin {
// denom: "uusd".to_string(),
// amount: Uint128::new(200u128),
// }]);
//
// assert_eq!(
// query_balance(
// &deps.as_ref().querier,
// Addr::unchecked(MOCK_CONTRACT_ADDR),
// "uusd".to_string()
// )
// .unwrap(),
// Uint128::new(200u128)
// );
// }
//
// #[test]
// fn all_balances_querier() {
// let deps = mock_dependencies(&[
// Coin {
// denom: "uusd".to_string(),
// amount: Uint128::new(200u128),
// },
// Coin {
// denom: "ukrw".to_string(),
// amount: Uint128::new(300u128),
// },
// ]);
//
// assert_eq!(
// query_all_balances(&deps.as_ref().querier, Addr::unchecked(MOCK_CONTRACT_ADDR),).unwrap(),
// vec![
// Coin {
// denom: "uusd".to_string(),
// amount: Uint128::new(200u128),
// },
// Coin {
// denom: "ukrw".to_string(),
// amount: Uint128::new(300u128),
// }
// ]
// );
// }
//
// #[test]
// fn supply_querier() {
// let mut deps = mock_dependencies(&[]);
//
// deps.querier.with_token_balances(&[(
// &String::from("liquidity0000"),
// &[
// (&String::from(MOCK_CONTRACT_ADDR), &Uint128::new(123u128)),
// (&String::from("addr00000"), &Uint128::new(123u128)),
// (&String::from("addr00001"), &Uint128::new(123u128)),
// (&String::from("addr00002"), &Uint128::new(123u128)),
// ],
// )]);
//
// deps.querier.with_cw20_query_handler();
//
// assert_eq!(
// query_supply(&deps.as_ref().querier, Addr::unchecked("liquidity0000")).unwrap(),
// Uint128::new(492u128)
// )
// }
//
// #[test]
// fn test_asset_info() {
// let token_info: AssetInfo = AssetInfo::Token {
// contract_addr: Addr::unchecked("asset0000"),
// };
// let native_token_info: AssetInfo = AssetInfo::NativeToken {
// denom: "uusd".to_string(),
// };
//
// assert_eq!(false, token_info.equal(&native_token_info));
//
// assert_eq!(
// false,
// token_info.equal(&AssetInfo::Token {
// contract_addr: Addr::unchecked("asset0001"),
// })
// );
//
// assert_eq!(
// true,
// token_info.equal(&AssetInfo::Token {
// contract_addr: Addr::unchecked("asset0000"),
// })
// );
//
// assert_eq!(true, native_token_info.is_native_token());
// assert_eq!(false, token_info.is_native_token());
//
// let mut deps = mock_dependencies(&[Coin {
// denom: "uusd".to_string(),
// amount: Uint128::new(123),
// }]);
// deps.querier.with_token_balances(&[(
// &String::from("asset0000"),
// &[
// (&String::from(MOCK_CONTRACT_ADDR), &Uint128::new(123u128)),
// (&String::from("addr00000"), &Uint128::new(123u128)),
// (&String::from("addr00001"), &Uint128::new(123u128)),
// (&String::from("addr00002"), &Uint128::new(123u128)),
// ],
// )]);
//
// assert_eq!(
// native_token_info
// .query_pool(&deps.as_ref().querier, Addr::unchecked(MOCK_CONTRACT_ADDR))
// .unwrap(),
// Uint128::new(123u128)
// );
// deps.querier.with_cw20_query_handler();
// assert_eq!(
// token_info
// .query_pool(&deps.as_ref().querier, Addr::unchecked(MOCK_CONTRACT_ADDR))
// .unwrap(),
// Uint128::new(123u128)
// );
// }
//
// #[test]
// fn test_asset() {
// let mut deps = mock_dependencies(&[Coin {
// denom: "uusd".to_string(),
// amount: Uint128::new(123),
// }]);
//
// deps.querier.with_token_balances(&[(
// &String::from("asset0000"),
// &[
// (&String::from(MOCK_CONTRACT_ADDR), &Uint128::new(123u128)),
// (&String::from("addr00000"), &Uint128::new(123u128)),
// (&String::from("addr00001"), &Uint128::new(123u128)),
// (&String::from("addr00002"), &Uint128::new(123u128)),
// ],
// )]);
//
// deps.querier.with_tax(
// Decimal::percent(1),
// &[(&"uusd".to_string(), &Uint128::new(1000000u128))],
// );
//
// let token_asset = Asset {
// amount: Uint128::new(123123u128),
// info: AssetInfo::Token {
// contract_addr: Addr::unchecked("asset0000"),
// },
// };
//
// let native_token_asset = Asset {
// amount: Uint128::new(123123u128),
// info: AssetInfo::NativeToken {
// denom: "uusd".to_string(),
// },
// };
//
// assert_eq!(
// token_asset.compute_tax(&deps.as_ref().querier).unwrap(),
// Uint128::zero()
// );
// assert_eq!(
// native_token_asset
// .compute_tax(&deps.as_ref().querier)
// .unwrap(),
// Uint128::new(1220u128)
// );
//
// assert_eq!(
// native_token_asset
// .deduct_tax(&deps.as_ref().querier)
// .unwrap(),
// Coin {
// denom: "uusd".to_string(),
// amount: Uint128::new(121903u128),
// }
// );
//
// assert_eq!(
// token_asset
// .into_msg(&deps.as_ref().querier, Addr::unchecked("addr0000"))
// .unwrap(),
// CosmosMsg::Wasm(WasmMsg::Execute {
// contract_addr: String::from("asset0000"),
// msg: to_binary(&Cw20ExecuteMsg::Transfer {
// recipient: String::from("addr0000"),
// amount: Uint128::new(123123u128),
// })
// .unwrap(),
// funds: vec![],
// })
// );
//
// assert_eq!(
// native_token_asset
// .into_msg(&deps.as_ref().querier, Addr::unchecked("addr0000"))
// .unwrap(),
// CosmosMsg::Bank(BankMsg::Send {
// to_address: String::from("addr0000"),
// amount: vec![Coin {
// denom: "uusd".to_string(),
// amount: Uint128::new(121903u128),
// }]
// })
// );
// }
//
// #[test]
// fn query_astroport_pair_contract() {
// let mut deps = mock_dependencies(&[]);
//
// deps.querier.with_astroport_pairs(&[(
// &"asset0000uusd".to_string(),
// &PairInfo {
// asset_infos: [
// AssetInfo::Token {
// contract_addr: Addr::unchecked("asset0000"),
// },
// AssetInfo::NativeToken {
// denom: "uusd".to_string(),
// },
// ],
// contract_addr: Addr::unchecked("pair0000"),
// liquidity_token: Addr::unchecked("liquidity0000"),
// pair_type: PairType::Xyk {},
// },
// )]);
//
// let pair_info: PairInfo = query_pair_info(
// &deps.as_ref().querier,
// Addr::unchecked(MOCK_CONTRACT_ADDR),
// &[
// AssetInfo::Token {
// contract_addr: Addr::unchecked("asset0000"),
// },
// AssetInfo::NativeToken {
// denom: "uusd".to_string(),
// },
// ],
// )
// .unwrap();
//
// assert_eq!(pair_info.contract_addr, String::from("pair0000"),);
// assert_eq!(pair_info.liquidity_token, String::from("liquidity0000"),);
// }
//
// #[test]
// fn test_format_lp_token_name() {
// let mut deps = mock_dependencies(&[]);
// deps.querier.with_astroport_pairs(&[(
// &"asset0000uusd".to_string(),
// &PairInfo {
// asset_infos: [
// AssetInfo::Token {
// contract_addr: Addr::unchecked("asset0000"),
// },
// AssetInfo::NativeToken {
// denom: "uusd".to_string(),
// },
// ],
// contract_addr: Addr::unchecked("pair0000"),
// liquidity_token: Addr::unchecked("liquidity0000"),
// pair_type: PairType::Xyk {},
// },
// )]);
//
// let pair_info: PairInfo = query_pair_info(
// &deps.as_ref().querier,
// Addr::unchecked(MOCK_CONTRACT_ADDR),
// &[
// AssetInfo::Token {
// contract_addr: Addr::unchecked("asset0000"),
// },
// AssetInfo::NativeToken {
// denom: "uusd".to_string(),
// },
// ],
// )
// .unwrap();
//
// deps.querier.with_token_balances(&[(
// &String::from("asset0000"),
// &[(&String::from(MOCK_CONTRACT_ADDR), &Uint128::new(123u128))],
// )]);
//
// deps.querier.with_cw20_query_handler();
//
// let lp_name = format_lp_token_name(pair_info.asset_infos, &deps.as_ref().querier).unwrap();
// assert_eq!(lp_name, "MAPP-UUSD-LP")
// }
//
// #[test]
// fn test_decimal_checked_ops() {
// for i in 0u32..100u32 {
// let dec = Decimal::from_ratio(i, 1u32);
// assert_eq!(dec + dec, dec.checked_add(dec).unwrap());
// }
// assert!(
// Decimal::from_ratio(Uint128::MAX, Uint128::from(10u128.pow(18u32)))
// .checked_add(Decimal::one())
// .is_err()
// );
//
// for i in 0u128..100u128 {
// let dec = Decimal::from_ratio(i, 1u128);
// assert_eq!(
// dec * Uint128::new(i),
// dec.checked_mul(Uint128::new(i)).unwrap()
// );
// }
// assert!(
// Decimal::from_ratio(Uint128::MAX, Uint128::from(10u128.pow(18u32)))
// .checked_mul(Uint128::from(10u128.pow(18u32) + 1))
// .is_err()
// );
// }