source: project/release/5/stack/trunk/tests/stack-test.scm @ 39694

Last change on this file since 39694 was 39694, checked in by Kon Lovett, 8 weeks ago

remove "primitives", use record-variants, add hof tests, new test runner

File size: 1.7 KB
Line 
1;;;; stack-test.scm  -*- Scheme -*-
2;;;; Kon Lovett, Jul '18
3
4(import test)
5
6(test-begin "Stack")
7
8;;;
9
10(import stack)
11
12(test-group "Empty Stack"
13  (test-assert (make-stack))
14  (test-assert (stack? (make-stack)))
15  (test-assert (stack-empty? (make-stack)))
16  (test 0 (stack-count (make-stack)))
17)
18
19(test-group "Push!/Pop!/Peek/Poke!"
20  (let ((stk (make-stack)))
21    (stack-push! stk 1)
22    (stack-push! stk 2 3)
23    (test 3 (stack-count stk))
24    (test 3 (stack-pop! stk))
25    (test 2 (stack-pop! stk))
26    (test 1 (stack-pop! stk))
27    (test-assert (stack-empty? stk))
28    (test-error (stack-pop! stk))
29    (stack-push! stk 1 2 3)
30    (test 2 (stack-peek stk 1))
31    (stack-poke! stk 4 1)
32    (test 3 (stack-pop! stk))
33    (test 4 (stack-pop! stk))
34    (test 1 (stack-count stk)) )
35)
36
37(test-group "Cut!"
38  (let ((stk (make-stack)))
39    ;3 2 1
40    (stack-push! stk 1 2 3)
41    (test '(2) (stack-cut! stk 1 2))
42    (test 2 (stack-count stk))
43    ;3 1
44    (test '(3) (stack-cut! stk 0 1))
45    (test 1 (stack-count stk))
46    ;5 4 1
47    (stack-push! stk 4 5)
48    (test '(4 1) (stack-cut! stk 1 3))
49    (test 1 (stack-count stk))
50    ;
51    (test-error (stack-cut! stk -1 3))
52    (test-error (stack-cut! stk 0 3))
53    (test-error (stack-cut! stk 0 -3)) )
54)
55
56(test-group "Stack from List"
57  (let ((stk (make-stack))
58        (stk1 (list->stack '(1 2 3))))
59    ;
60    (stack-push! stk 1 2 3)
61    (test '(3 2 1) (stack->list stk))
62    ;
63    (test-assert (stack? stk1))
64    (test 3 (stack-count stk1))
65    (test 1 (stack-pop! stk1)) )
66)
67
68(test-group "Stack HOF"
69  (let ((stk (list->stack '(1 2 3))))
70    (test 6 (stack-fold stk + 0))
71    (test '(2 3 4) (stack-map stk add1)) )
72)
73
74;;;
75
76(test-end "Stack")
77
78(test-exit)
Note: See TracBrowser for help on using the repository browser.