list_tests.nbt 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. let xs = [1, 2, 3]
  2. assert_eq(len([]), 0)
  3. assert_eq(len(xs), 3)
  4. assert_eq(head(xs), 1)
  5. assert_eq(head(tail(xs)), 2)
  6. assert_eq(tail(xs), [2, 3])
  7. assert_eq(cons(0, xs), [0, 1, 2, 3])
  8. assert(is_empty([]))
  9. assert(!is_empty(xs))
  10. assert_eq(concat([], []), [])
  11. assert_eq(concat([], xs), xs)
  12. assert_eq(concat(xs, []), xs)
  13. assert_eq(concat(xs, xs), [1, 2, 3, 1, 2, 3])
  14. assert_eq(range(0, 0), [0])
  15. assert_eq(range(0, 5), [0, 1, 2, 3, 4, 5])
  16. assert_eq(reverse([]), [])
  17. assert_eq(reverse(xs), [3, 2, 1])
  18. fn inc(x) = x + 1
  19. assert_eq(map(inc, xs), [2, 3, 4])
  20. fn is_even(x) = mod(x, 2) == 0
  21. assert_eq(filter(is_even, range(1, 10)), [2, 4, 6, 8, 10])
  22. fn mul(x, y) = x * y
  23. assert_eq(foldl(mul, 1, [1, 2, 3, 4, 5]), 120)
  24. assert_eq(intersperse(0, []), [])
  25. assert_eq(intersperse(0, [1]), [1])
  26. assert_eq(intersperse(0, [1, 2, 3]), [1, 0, 2, 0, 3])
  27. assert_eq(sum([1, 2, 3, 4, 5]), 15)
  28. assert_eq(sum([1 m, 200 cm, 3 m]), 6 m)
  29. # Non-dtype lists
  30. let words = ["hello", "world"]
  31. assert_eq(head(words), "hello")
  32. fn join(xs: List<String>, sep: String) =
  33. if is_empty(xs)
  34. then ""
  35. else if len(xs) == 1
  36. then head(xs)
  37. else "{head(xs)}{sep}{join(tail(xs), sep)}"
  38. assert_eq(join(words, " "), "hello world")
  39. fn gen_range(n) = range(1, n)
  40. assert_eq(map(gen_range, xs), [[1], [1, 2], [1, 2, 3]])
  41. fn to_string(x) = "{x}"
  42. assert_eq(map(to_string, xs), ["1", "2", "3"])