-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathtest.sh
executable file
·139 lines (109 loc) · 1.15 KB
/
test.sh
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
#!/bin/sh -eu
# SPDX-License-Identifier: WTFPL
# shellcheck enable=
cd "$(dirname "$0")"
got=$(mktemp sorted.XXXXXX)
trap 'rm "$got"' EXIT
init () {
./sort-with-numbers "$@" > "$got"
}
check () {
diff -u - "$got"
}
# test string
LANG=C init <<- EOF
foo
bar
EOF
check <<- EOF
bar
foo
EOF
# basic test numbers
LANG=C init <<- EOF
1
10
2
EOF
check <<- EOF
1
2
10
EOF
# test multiple numbers
LANG=C init <<- EOF
1
10 10
10 2
2
EOF
check <<- EOF
1
2
10 2
10 10
EOF
# test numbers with strings
LANG=C init <<- EOF
1
10
2
EOF
check <<- EOF
1
2
10
EOF
# test strings with numbers
LANG=C init <<- EOF
foo 1
foo 10
foo 2
bar 3
EOF
check <<- EOF
bar 3
foo 1
foo 2
foo 10
EOF
# test mix
LANG=C init <<- EOF
foo 1 foo
foo 10 foo
foo 10 bar
foo 2 bar
bar 3
EOF
check <<- EOF
bar 3
foo 1 foo
foo 2 bar
foo 10 bar
foo 10 foo
EOF
# test collation (C)
LANG=C init <<- EOF
z
a
é
EOF
check <<- EOF
a
z
é
EOF
# test collation (fr_FR)
LANG=fr_FR.UTF-8 init <<- EOF
z
a
é
EOF
check <<- EOF
a
é
z
EOF
# NUL separator
printf "foo\000qux\000baz\000bar\000" | init -z
printf "bar\000baz\000foo\000qux\000" | check