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

Last change on this file since 35980 was 35980, checked in by Kon Lovett, 3 years ago

C5 initial

File size: 1.5 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;;;
69
70(test-end "Stack")
71
72(test-exit)
Note: See TracBrowser for help on using the repository browser.