mirror of
https://github.com/ashinn/chibi-scheme.git
synced 2025-05-19 13:49:17 +02:00
They can be close()d explicitly with close-file-descriptor, and will close() on gc, but only explicitly closing the last port on them will close the fileno. Notably needed for network sockets where we open separate input and output ports on the same socket.
108 lines
4.1 KiB
Scheme
108 lines
4.1 KiB
Scheme
|
|
(cond-expand
|
|
(modules (import (srfi 95) (only (chibi test) test-begin test test-end)))
|
|
(else #f))
|
|
|
|
(test-begin "sorting")
|
|
|
|
(test "sort null" '() (sort '()))
|
|
(test "sort null <" '() (sort '() <))
|
|
(test "sort null < car" '() (sort '() < car))
|
|
(test "sort equal list" '(0 0 0 0 0 0 0 0 0) (sort '(0 0 0 0 0 0 0 0 0)))
|
|
(test "sort equal list cmp" '(0 0 0 0 0 0 0 0 0)
|
|
(sort '(0 0 0 0 0 0 0 0 0) (lambda (a b) (< a b))))
|
|
(test "sort ordered list" '(1 2 3 4 5 6 7 8 9) (sort '(1 2 3 4 5 6 7 8 9)))
|
|
(test "sort reversed list" '(1 2 3 4 5 6 7 8 9) (sort '(9 8 7 6 5 4 3 2 1)))
|
|
(test "sort random list 1" '(1 2 3 4 5 6 7 8 9) (sort '(7 5 2 8 1 6 4 9 3)))
|
|
(test "sort random list 2" '(1 2 3 4 5 6 7 8) (sort '(5 3 4 1 7 6 8 2)))
|
|
(test "sort random list 3" '(1 2 3 4 5 6 7 8 9) (sort '(5 3 4 1 7 9 6 8 2)))
|
|
(test "sort short equal list" '(0 0 0) (sort '(0 0 0)))
|
|
(test "sort short random list" '(1 2 3) (sort '(2 1 3)))
|
|
(test "sort short random list cmp" '(1 2 3) (sort '(2 1 3) (lambda (a b) (< a b))))
|
|
(test "sort numeric list <" '(1 2 3 4 5 6 7 8 9)
|
|
(sort '(7 5 2 8 1 6 4 9 3) <))
|
|
(test "sort numeric list < car" '((1) (2) (3) (4) (5) (6) (7) (8) (9))
|
|
(sort '((7) (5) (2) (8) (1) (6) (4) (9) (3)) < car))
|
|
(test "sort list (lambda (a b) (< (car a) (car b)))"
|
|
'((1) (2) (3) (4) (5) (6) (7) (8) (9))
|
|
(sort '((7) (5) (2) (8) (1) (6) (4) (9) (3))
|
|
(lambda (a b) (< (car a) (car b)))))
|
|
(test "sort 1-char symbols" '(a b c d e f g h i j k)
|
|
(sort '(h b k d a c j i e g f)))
|
|
(test "sort short symbols" '(a aa b c d e ee f g h i j k)
|
|
(sort '(h b aa k d a ee c j i e g f)))
|
|
(test "sort long symbol"
|
|
'(a aa b bzzzzzzzzzzzzzzzzzzzzzzz c d e ee f g h i j k)
|
|
(sort '(h b aa k d a ee c j i bzzzzzzzzzzzzzzzzzzzzzzz e g f)))
|
|
(test "sort long symbols"
|
|
'(a aa b bzzzzzzzzzzzzzzzzzzzzzzz czzzzzzzzzzzzz dzzzzzzzz e ee f g h i j k)
|
|
(sort '(h b aa k dzzzzzzzz a ee czzzzzzzzzzzzz j i bzzzzzzzzzzzzzzzzzzzzzzz e g f)))
|
|
(test "sort strings"
|
|
'("ape" "bear" "cat" "dog" "elephant" "fox" "goat" "hawk")
|
|
(sort '("elephant" "cat" "dog" "ape" "goat" "fox" "hawk" "bear")))
|
|
(test "sort strings string-ci<?"
|
|
'("ape" "Bear" "CaT" "DOG" "elephant" "Fox" "GoAt" "HAWK")
|
|
(sort '("elephant" "CaT" "DOG" "ape" "GoAt" "Fox" "HAWK" "Bear")
|
|
string-ci<?))
|
|
|
|
(test "sort numeric inexact vector <" '#(1.1 2.2 3.3 4.4 5.5 6.6 7.7 8.8 9.9)
|
|
(sort '#(7.7 5.5 2.2 8.8 1.1 6.6 4.4 9.9 3.3) <))
|
|
(test "sort numeric signed inexact vector <"
|
|
'#(-9.9 -7.7 -5.5 -3.3 -1.1 2.2 4.4 6.6 8.8)
|
|
(sort '#(-7.7 -5.5 2.2 8.8 -1.1 6.6 4.4 -9.9 -3.3) <))
|
|
(test "sort numeric same whole number inexact vector"
|
|
'#(-5.2155
|
|
-4.3817
|
|
-4.3055
|
|
-4.0415
|
|
-3.5883
|
|
-3.5714
|
|
-3.4059
|
|
-2.7829
|
|
-2.6406
|
|
-2.4985
|
|
-2.4607
|
|
-1.2487
|
|
-0.537800000000001
|
|
-0.481999999999999
|
|
-0.469100000000001
|
|
-0.0932999999999993
|
|
0.0066999999999986)
|
|
(sort '#(-5.2155
|
|
-3.5714
|
|
-4.3817
|
|
-3.5883
|
|
-4.3055
|
|
-2.4985
|
|
-4.0415
|
|
-3.4059
|
|
-0.0932999999999993
|
|
-0.537800000000001
|
|
-2.6406
|
|
-0.481999999999999
|
|
-2.7829
|
|
-2.4607
|
|
-1.2487
|
|
-0.469100000000001
|
|
0.0066999999999986)
|
|
<))
|
|
|
|
(test "sort watson no dups"
|
|
'#(-0.3096 -0.307000000000002 -0.303800000000003 -0.301600000000001
|
|
-0.300599999999999 -0.3003 -0.3002 -0.2942)
|
|
(sort '#(-0.3096 -0.307000000000002 -0.303800000000003 -0.301600000000001
|
|
-0.300599999999999 -0.2942 -0.3003 -0.3002)))
|
|
|
|
(test "sort watson"
|
|
'#(-0.3096 -0.307000000000002 -0.303800000000003 -0.301600000000001
|
|
-0.300599999999999 -0.3003 -0.3003 -0.3002 -0.2942)
|
|
(sort '#(-0.3096 -0.307000000000002 -0.303800000000003 -0.301600000000001
|
|
-0.300599999999999 -0.2942 -0.3003 -0.3003 -0.3002)))
|
|
|
|
(test "sort ratios" '(1/5 1/4 1/3 2/5 1/2 3/5 2/3 3/4 4/5)
|
|
(sort '(1/2 1/3 1/4 1/5 2/3 3/4 2/5 3/5 4/5)))
|
|
|
|
(test "sort complex" '(1+1i 1+2i 1+3i 2+2i 3+3i 4+4i 5+5i 6+6i 7+7i 8+8i 9+9i)
|
|
(sort '(7+7i 1+2i 5+5i 2+2i 8+8i 1+1i 6+6i 4+4i 9+9i 1+3i 3+3i)))
|
|
|
|
(test-end)
|