constructor.rs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. // SPDX-License-Identifier: Apache-2.0
  2. use crate::SorobanEnv;
  3. use indexmap::Equivalent;
  4. use soroban_sdk::{testutils::Address as _, Address, FromVal, IntoVal, String, Val};
  5. #[test]
  6. fn constructor_profile_test() {
  7. let mut runtime = SorobanEnv::new();
  8. let user = Address::generate(&runtime.env);
  9. let name = String::from_str(&runtime.env, "Alice");
  10. let age: Val = 30_u32.into_val(&runtime.env);
  11. let contract_src = r#"
  12. contract profile {
  13. address public user;
  14. string public name;
  15. uint32 public age;
  16. constructor(address _user, string memory _name, uint32 _age) {
  17. user = _user;
  18. name = _name;
  19. age = _age;
  20. }
  21. }
  22. "#;
  23. let addr = runtime.deploy_contract_with_args(contract_src, (user.clone(), name.clone(), age));
  24. let user_ret = runtime.invoke_contract(&addr, "user", vec![]);
  25. let name_ret = runtime.invoke_contract(&addr, "name", vec![]);
  26. let age_ret = runtime.invoke_contract(&addr, "age", vec![]);
  27. let expected_user = Address::from_val(&runtime.env, &user_ret);
  28. assert!(expected_user.equivalent(&user));
  29. let expected_name = String::from_val(&runtime.env, &name_ret);
  30. assert!(expected_name.equivalent(&name));
  31. let expected_age: u32 = FromVal::from_val(&runtime.env, &age_ret);
  32. assert_eq!(expected_age, 30);
  33. }