fn test_list_length(): Unit with {Test} = { Test.assertEqual(0, List.length([])) Test.assertEqual(1, List.length([1])) Test.assertEqual(3, List.length([1, 2, 3])) } fn test_list_head(): Unit with {Test} = { Test.assertEqual(Some(1), List.head([1, 2, 3])) Test.assertEqual(None, List.head([])) } fn test_list_tail(): Unit with {Test} = { Test.assertEqual(Some([2, 3]), List.tail([1, 2, 3])) Test.assertEqual(None, List.tail([])) } fn test_list_get(): Unit with {Test} = { let xs = [10, 20, 30] Test.assertEqual(Some(10), List.get(xs, 0)) Test.assertEqual(Some(20), List.get(xs, 1)) Test.assertEqual(Some(30), List.get(xs, 2)) Test.assertEqual(None, List.get(xs, 3)) } fn test_list_map(): Unit with {Test} = { let double = fn(x: Int): Int => x * 2 Test.assertEqual([2, 4, 6], List.map([1, 2, 3], double)) Test.assertEqual([], List.map([], double)) } fn test_list_filter(): Unit with {Test} = { let isEven = fn(x: Int): Bool => x % 2 == 0 Test.assertEqual([2, 4], List.filter([1, 2, 3, 4, 5], isEven)) Test.assertEqual([], List.filter([1, 3, 5], isEven)) } fn test_list_fold(): Unit with {Test} = { let sum = fn(acc: Int, x: Int): Int => acc + x Test.assertEqual(6, List.fold([1, 2, 3], 0, sum)) Test.assertEqual(10, List.fold([1, 2, 3], 4, sum)) Test.assertEqual(0, List.fold([], 0, sum)) } fn test_list_reverse(): Unit with {Test} = { Test.assertEqual([3, 2, 1], List.reverse([1, 2, 3])) Test.assertEqual([], List.reverse([])) Test.assertEqual([1], List.reverse([1])) } fn test_list_concat(): Unit with {Test} = { Test.assertEqual([1, 2, 3, 4], List.concat([1, 2], [3, 4])) Test.assertEqual([1, 2], List.concat([1, 2], [])) Test.assertEqual([3, 4], List.concat([], [3, 4])) }