summaryrefslogtreecommitdiff
path: root/libstd/test/sort.myr
diff options
context:
space:
mode:
authorOri Bernstein <ori@eigenstate.org>2015-02-21 22:42:42 -0800
committerOri Bernstein <ori@eigenstate.org>2015-02-21 22:42:42 -0800
commit73b28cf5864bbe111dd5bf3fd47ea03090130d0f (patch)
treeb1a58bdcd2af9f2cd0a41525f3b7ef1b2ee1cb01 /libstd/test/sort.myr
parent64141a6e1d3bd0c0d648563e9333d3395fd7df86 (diff)
downloadmc-73b28cf5864bbe111dd5bf3fd47ea03090130d0f.tar.gz
Start adding in some unit tests to run with mbld.
Diffstat (limited to 'libstd/test/sort.myr')
-rw-r--r--libstd/test/sort.myr43
1 files changed, 43 insertions, 0 deletions
diff --git a/libstd/test/sort.myr b/libstd/test/sort.myr
new file mode 100644
index 0000000..4c6bd38
--- /dev/null
+++ b/libstd/test/sort.myr
@@ -0,0 +1,43 @@
+use "sort.use"
+
+use "fmt.use"
+use "die.use"
+use "sleq.use"
+use "cmp.use"
+
+const main = {
+ var i
+
+ var a = [ 3, 5, 4, 9, 7, 2, 6, 0, 1, 8, ]
+ var a_sorted = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
+ var b = [3, 4, 5, 1, 2, 6, 7, 8, 9, 10]
+ var b_sorted = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
+ var c = ["a", "aa", "b", "C", "Cc", "cC", "d", "f", "fuckit", "go",]
+ var c_sorted = ["C", "Cc", "a", "aa", "b", "cC", "d", "f", "fuckit", "go"]
+
+ /* with custom intcmp */
+ std.sort(a[:], intcmp)
+ std.assert(std.sleq(a[:], a_sorted[:]), "a was missorted")
+
+ /* with libstd generic numcmp */
+ std.sort(b[:], std.numcmp)
+ std.assert(std.sleq(b[:], b_sorted[:]), "b was missorted")
+
+ /* string sorting */
+ std.sort(c[:], std.strcmp)
+ for i = 0; i < c.len; i++
+ std.assert(std.sleq(c[i], c_sorted[i]), "c was missorted")
+ ;;
+}
+
+const intcmp = {a, b
+ if a < b
+ -> `std.Before
+ elif a == b
+ -> `std.Equal
+ else
+ -> `std.After
+ ;;
+}
+
+