diff --git a/contracts/pool_stable/src/tests/config.rs b/contracts/pool_stable/src/tests/config.rs index 80b2d011..1c91d5e4 100644 --- a/contracts/pool_stable/src/tests/config.rs +++ b/contracts/pool_stable/src/tests/config.rs @@ -1,8 +1,11 @@ extern crate std; -use soroban_sdk::{testutils::Address as _, Address, Env}; +use soroban_sdk::{testutils::Address as _, Address, Env, IntoVal}; use super::setup::{deploy_stable_liquidity_pool_contract, deploy_token_contract}; -use crate::storage::{Config, PairType}; +use crate::{ + storage::{Config, PairType}, + token_contract, +}; #[test] fn update_config() { @@ -269,3 +272,57 @@ fn initialize_with_incorrect_amp() { 0, // init AMP ); } + +#[test] +#[should_panic(expected = "Pool Stable: Save Greatest Precision: precision above the limit")] +fn initialize_with_incorrect_precision() { + let env = Env::default(); + env.mock_all_auths(); + + let admin = Address::generate(&env); + let user1 = Address::generate(&env); + + let mut token1 = token_contract::Client::new( + &env, + &env.register_contract_wasm(None, token_contract::WASM), + ); + + token1.initialize( + &admin, + &8, + &"name1".into_val(&env), + &"symbol1".into_val(&env), + ); + + let mut token2 = token_contract::Client::new( + &env, + &env.register_contract_wasm(None, token_contract::WASM), + ); + + token2.initialize( + &admin, + &8, + &"name2".into_val(&env), + &"symbol2".into_val(&env), + ); + + if token2.address < token1.address { + std::mem::swap(&mut token1, &mut token2); + } + + let swap_fees = 0i64; + let stake_manager = Address::generate(&env); + let factory = Address::generate(&env); + deploy_stable_liquidity_pool_contract( + &env, + Some(admin.clone()), + (&token1.address, &token2.address), + swap_fees, + user1, + 500, + 200, + stake_manager, + factory, + 6, + ); +}