math.rs 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. // SPDX-License-Identifier: Apache-2.0
  2. use crate::build_solidity;
  3. use soroban_sdk::{IntoVal, Val};
  4. #[test]
  5. fn math() {
  6. let runtime = build_solidity(
  7. r#"contract math {
  8. function max(uint64 a, uint64 b) public returns (uint64) {
  9. if (a > b) {
  10. return a;
  11. } else {
  12. return b;
  13. }
  14. }
  15. }"#,
  16. |_| {},
  17. );
  18. let arg: Val = 5_u64.into_val(&runtime.env);
  19. let arg2: Val = 4_u64.into_val(&runtime.env);
  20. let addr = runtime.contracts.last().unwrap();
  21. let res = runtime.invoke_contract(addr, "max", vec![arg, arg2]);
  22. let expected: Val = 5_u64.into_val(&runtime.env);
  23. assert!(expected.shallow_eq(&res));
  24. }
  25. #[test]
  26. fn math_same_name() {
  27. let src = build_solidity(
  28. r#"contract math {
  29. function max(uint64 a, uint64 b) public returns (uint64) {
  30. if (a > b) {
  31. return a;
  32. } else {
  33. return b;
  34. }
  35. }
  36. function max(uint64 a, uint64 b, uint64 c) public returns (uint64) {
  37. if (a > b) {
  38. if (a > c) {
  39. return a;
  40. } else {
  41. return c;
  42. }
  43. } else {
  44. if (b > c) {
  45. return b;
  46. } else {
  47. return c;
  48. }
  49. }
  50. }
  51. }
  52. "#,
  53. |_| {},
  54. );
  55. let addr = src.contracts.last().unwrap();
  56. let arg1: Val = 5_u64.into_val(&src.env);
  57. let arg2: Val = 4_u64.into_val(&src.env);
  58. let res = src.invoke_contract(addr, "max_uint64_uint64", vec![arg1, arg2]);
  59. let expected: Val = 5_u64.into_val(&src.env);
  60. assert!(expected.shallow_eq(&res));
  61. let arg1: Val = 5_u64.into_val(&src.env);
  62. let arg2: Val = 4_u64.into_val(&src.env);
  63. let arg3: Val = 6_u64.into_val(&src.env);
  64. let res = src.invoke_contract(addr, "max_uint64_uint64_uint64", vec![arg1, arg2, arg3]);
  65. let expected: Val = 6_u64.into_val(&src.env);
  66. assert!(expected.shallow_eq(&res));
  67. }