From 4a3db447ce820617a72bdd9fc6217c84c3799bea Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Sun, 6 Apr 2025 22:45:31 -0400 Subject: Rename file --- test/arrays.tm | 190 --------------------------------------------------------- test/lists.tm | 190 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 190 insertions(+), 190 deletions(-) delete mode 100644 test/arrays.tm create mode 100644 test/lists.tm (limited to 'test') diff --git a/test/arrays.tm b/test/arrays.tm deleted file mode 100644 index 71e107ef..00000000 --- a/test/arrays.tm +++ /dev/null @@ -1,190 +0,0 @@ -func main() - do - >> nums : [Num32] = [] - = [] - - do - >> nums : [Num32] - = [] - - do - >> list := [10, 20, 30] - = [10, 20, 30] - - >> list[1] - = 10 - >> list[-1] - = 30 - - >> list.length - = 3 - - sum := 0 - for x in list - sum += x - >> sum - = 60 - - str := "" - for i,x in list - str ++= "($i,$x)" - >> str - = "(1,10)(2,20)(3,30)" - - do - >> list := [10, 20] ++ [30, 40] - = [10, 20, 30, 40] - - >> list ++= [50, 60] - >> list - = [10, 20, 30, 40, 50, 60] - - do - >> list := [10, 20] - >> copy := list - >> list ++= [30] - >> list - = [10, 20, 30] - >> copy - = [10, 20] - - do - >> [10*i for i in 5] - = [10, 20, 30, 40, 50] - - >> [i*10 for i in 5] - = [10, 20, 30, 40, 50] - - >> [i*10 for i in 5 if i mod 2 != 0] - = [10, 30, 50] - - >> [x for x in y if x > 1 for y in [3, 4, 5] if y < 5] - = [2, 3, 2, 3, 4] - - do - >> list := @[10, 20] - >> copy := list[] - >> list.insert(30) - >> list - = @[10, 20, 30] - >> copy - = [10, 20] - - >> list[1] = 999 - >> list - = @[999, 20, 30] - - do - >> list := &[10, 20, 30] - >> reversed := list.reversed() - = [30, 20, 10] - # Ensure the copy-on-write behavior triggers: - >> list[1] = 999 - >> reversed - = [30, 20, 10] - - do - >> nums := @[10, -20, 30] - # Sorted function doesn't mutate original: - >> nums.sorted() - = [-20, 10, 30] - >> nums - = @[10, -20, 30] - # Sort function does mutate in place: - >> nums.sort() - >> nums - = @[-20, 10, 30] - # Custom sort functions: - >> nums.sort(func(x,y:&Int) x.abs() <> y.abs()) - >> nums - = @[10, -20, 30] - >> nums.sort(func(x,y:&Int) y[] <> x[]) - >> nums - = @[30, 10, -20] - - >> ["A", "B", "C"].sample(10, [1.0, 0.5, 0.0]) - - do - >> heap := @[(i * 1337) mod 37 for i in 10] - >> heap.heapify() - >> heap - heap_order : @[Int] - repeat - heap_order.insert(heap.heap_pop() or stop) - >> heap_order[] == heap_order.sorted() - = yes - heap_order[] = [] - for i in 10 - heap.heap_push((i*13337) mod 37) - >> heap - repeat - heap_order.insert(heap.heap_pop() or stop) - >> heap_order[] == heap_order.sorted() - = yes - - do - >> [i*10 for i in 5].from(3) - = [30, 40, 50] - >> [i*10 for i in 5].to(3) - = [10, 20, 30] - >> [i*10 for i in 5].to(-2) - = [10, 20, 30, 40] - >> [i*10 for i in 5].from(-2) - = [40, 50] - - >> [i*10 for i in 5].by(2) - = [10, 30, 50] - >> [i*10 for i in 5].by(-1) - = [50, 40, 30, 20, 10] - - >> [10, 20, 30, 40].by(2) - = [10, 30] - >> [10, 20, 30, 40].by(-2) - = [40, 20] - - >> [i*10 for i in 10].by(2).by(2) - = [10, 50, 90] - - >> [i*10 for i in 10].by(2).by(-1) - = [90, 70, 50, 30, 10] - - # Test iterating over list.from() and list.to() - xs := ["A", "B", "C", "D"] - for i,x in xs.to(-2) - for y in xs.from(i+1) - say("$(x)$(y)") - - do - >> nums := @[-7, -4, -1, 2, 5] - >> nums.sort() - >> [nums.binary_search(i) for i in nums[]] - = [1, 2, 3, 4, 5] - >> nums.sort(func(a,b:&Int) a.abs() <> b.abs()) - >> [nums.binary_search(i, func(a,b:&Int) a.abs() <> b.abs()) for i in nums[]] - = [1, 2, 3, 4, 5] - - >> ["a", "b", "c"].find("b") - = 2? - >> ["a", "b", "c"].find("XXX") - = none - - >> [10, 20].first(func(i:&Int) i.is_prime()) - = none - >> [4, 5, 6].first(func(i:&Int) i.is_prime()) - = 2? - - do - >> nums := &[10, 20, 30, 40, 50] - >> nums.pop() - = 50? - >> nums - = &[10, 20, 30, 40] - >> nums.pop(2) - = 20? - >> nums - = &[10, 30, 40] - >> nums.clear() - >> nums - = &[] - >> nums.pop() - = none diff --git a/test/lists.tm b/test/lists.tm new file mode 100644 index 00000000..71e107ef --- /dev/null +++ b/test/lists.tm @@ -0,0 +1,190 @@ +func main() + do + >> nums : [Num32] = [] + = [] + + do + >> nums : [Num32] + = [] + + do + >> list := [10, 20, 30] + = [10, 20, 30] + + >> list[1] + = 10 + >> list[-1] + = 30 + + >> list.length + = 3 + + sum := 0 + for x in list + sum += x + >> sum + = 60 + + str := "" + for i,x in list + str ++= "($i,$x)" + >> str + = "(1,10)(2,20)(3,30)" + + do + >> list := [10, 20] ++ [30, 40] + = [10, 20, 30, 40] + + >> list ++= [50, 60] + >> list + = [10, 20, 30, 40, 50, 60] + + do + >> list := [10, 20] + >> copy := list + >> list ++= [30] + >> list + = [10, 20, 30] + >> copy + = [10, 20] + + do + >> [10*i for i in 5] + = [10, 20, 30, 40, 50] + + >> [i*10 for i in 5] + = [10, 20, 30, 40, 50] + + >> [i*10 for i in 5 if i mod 2 != 0] + = [10, 30, 50] + + >> [x for x in y if x > 1 for y in [3, 4, 5] if y < 5] + = [2, 3, 2, 3, 4] + + do + >> list := @[10, 20] + >> copy := list[] + >> list.insert(30) + >> list + = @[10, 20, 30] + >> copy + = [10, 20] + + >> list[1] = 999 + >> list + = @[999, 20, 30] + + do + >> list := &[10, 20, 30] + >> reversed := list.reversed() + = [30, 20, 10] + # Ensure the copy-on-write behavior triggers: + >> list[1] = 999 + >> reversed + = [30, 20, 10] + + do + >> nums := @[10, -20, 30] + # Sorted function doesn't mutate original: + >> nums.sorted() + = [-20, 10, 30] + >> nums + = @[10, -20, 30] + # Sort function does mutate in place: + >> nums.sort() + >> nums + = @[-20, 10, 30] + # Custom sort functions: + >> nums.sort(func(x,y:&Int) x.abs() <> y.abs()) + >> nums + = @[10, -20, 30] + >> nums.sort(func(x,y:&Int) y[] <> x[]) + >> nums + = @[30, 10, -20] + + >> ["A", "B", "C"].sample(10, [1.0, 0.5, 0.0]) + + do + >> heap := @[(i * 1337) mod 37 for i in 10] + >> heap.heapify() + >> heap + heap_order : @[Int] + repeat + heap_order.insert(heap.heap_pop() or stop) + >> heap_order[] == heap_order.sorted() + = yes + heap_order[] = [] + for i in 10 + heap.heap_push((i*13337) mod 37) + >> heap + repeat + heap_order.insert(heap.heap_pop() or stop) + >> heap_order[] == heap_order.sorted() + = yes + + do + >> [i*10 for i in 5].from(3) + = [30, 40, 50] + >> [i*10 for i in 5].to(3) + = [10, 20, 30] + >> [i*10 for i in 5].to(-2) + = [10, 20, 30, 40] + >> [i*10 for i in 5].from(-2) + = [40, 50] + + >> [i*10 for i in 5].by(2) + = [10, 30, 50] + >> [i*10 for i in 5].by(-1) + = [50, 40, 30, 20, 10] + + >> [10, 20, 30, 40].by(2) + = [10, 30] + >> [10, 20, 30, 40].by(-2) + = [40, 20] + + >> [i*10 for i in 10].by(2).by(2) + = [10, 50, 90] + + >> [i*10 for i in 10].by(2).by(-1) + = [90, 70, 50, 30, 10] + + # Test iterating over list.from() and list.to() + xs := ["A", "B", "C", "D"] + for i,x in xs.to(-2) + for y in xs.from(i+1) + say("$(x)$(y)") + + do + >> nums := @[-7, -4, -1, 2, 5] + >> nums.sort() + >> [nums.binary_search(i) for i in nums[]] + = [1, 2, 3, 4, 5] + >> nums.sort(func(a,b:&Int) a.abs() <> b.abs()) + >> [nums.binary_search(i, func(a,b:&Int) a.abs() <> b.abs()) for i in nums[]] + = [1, 2, 3, 4, 5] + + >> ["a", "b", "c"].find("b") + = 2? + >> ["a", "b", "c"].find("XXX") + = none + + >> [10, 20].first(func(i:&Int) i.is_prime()) + = none + >> [4, 5, 6].first(func(i:&Int) i.is_prime()) + = 2? + + do + >> nums := &[10, 20, 30, 40, 50] + >> nums.pop() + = 50? + >> nums + = &[10, 20, 30, 40] + >> nums.pop(2) + = 20? + >> nums + = &[10, 30, 40] + >> nums.clear() + >> nums + = &[] + >> nums.pop() + = none -- cgit v1.2.3