Array.k 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. invoke {
  2. import Array from Std
  3. let a = Array<Int>([1,2,3,4])
  4. let t = Array<Int>([5])
  5. let u = a+t
  6. assert u is Array<Int>
  7. assert len(u) == 5
  8. assert u[0] == 1 && u[len(u)-1] == 5
  9. let b = a as Array<Number>
  10. set a[0] = -1
  11. // [-1, 2, 3, 4]
  12. assert a[0] == b[0]
  13. b -> append(5)
  14. assert len(b) == 5 && len(a) == 5 && a[4] == 5
  15. b -> pop()
  16. assert len(b) == 4 && len(a) == 4
  17. a -> prepend(-2)
  18. assert len(b) == 5 && len(a) == 5 && b[0] == -2
  19. a -> shift()
  20. assert len(b) == 4 && len(a) == 4
  21. a -> insert(1, 22)
  22. // [-1, 2, 22, 3, 4]
  23. b -> insert(4, 5)
  24. // [-1, 2, 22, 3, 4, 5]
  25. assert len(a) == 6 && len(b) == len(a)
  26. assert b[2] == 22 && a[5] == 5
  27. let check_sort = lambda (from, to) {
  28. let t = Array<Int>(iter(from))
  29. t -> sort -> .{ .x < .y }
  30. assert t == Array<Int>(iter(to))
  31. }
  32. check_sort([], [])
  33. check_sort([1], [1])
  34. check_sort([2,1], [1,2])
  35. check_sort (
  36. [4,1,5,72,42,61,66,88,999,123,44,55,6764,223,123],
  37. [1,4,5,42,44,55,61,66,72,88,123,123,223,999,6764]
  38. )
  39. assert Array<String>(['a','b']) != Array<String>(['a','b1'])
  40. }