summaryrefslogtreecommitdiff
path: root/libstd/test/sort.myr
blob: e81462386bcc5a0fb960501aaf589c02a040143a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
use std

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
	;;
}