lvalues.sf 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. #!/usr/bin/ruby
  2. #
  3. ## Test assignment lvalues
  4. #
  5. ((var x) = 41).add!(1);
  6. assert_eq(x, 42);
  7. (var y = 41).add!(1);
  8. assert_eq(y, 42);
  9. var a = [1,2] += [3,4];
  10. assert_eq(a, [1,2,3,4]);
  11. ((var b) = [1,2]) += [3,4];
  12. assert_eq(b, [1,2,3,4])
  13. (var c = [1,2,3]).map!{_**2};
  14. assert_eq(c, [1,4,9]);
  15. ((var d) = [1,2,3]).map!{_**2}
  16. assert_eq(d, [1,4,9]);
  17. var e = 1 -> add!(2) -> add!(3);
  18. assert_eq(e, 6);
  19. ((var f) = 1).add!(2).add!(3);
  20. assert_eq(f, 6);
  21. assert_eq(e, 6);
  22. var g = 1 += 2 += 3;
  23. assert_eq(g, 6);
  24. ((var h) = 1) += 2 += 3;
  25. assert_eq(h, 6);
  26. #
  27. ## Test other lvalues
  28. #
  29. var arr = [1,2,3];
  30. arr[0] += 1 += 2;
  31. assert_eq(arr, [4,2,3]);
  32. (((arr[0]) -= 1) -= 2);
  33. assert_eq(arr, [1,2,3]);
  34. arr[1].add!(1).add!(2);
  35. assert_eq(arr, [1,5,3]);
  36. ((arr[1]).sub!(1)).sub!(2);
  37. assert_eq(arr, [1,2,3]);
  38. do {
  39. var x = 42 -> sub!(2)
  40. x.log!.sqrt!
  41. assert_eq(x, sqrt(log(40)))
  42. }
  43. do {
  44. assert_eq([var x = 42 -> sub!(2)], [40])
  45. assert_eq([x.log!.sqrt!], [sqrt(log(40))])
  46. assert_eq(x, sqrt(log(40)))
  47. }
  48. say "** Test passed!";