-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathtests-3.4-req.scm
83 lines (76 loc) · 3.81 KB
/
tests-3.4-req.scm
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
(add-tests-with-string-output "nontail apply"
[(let ([f (lambda () 12)])
(fx+ (apply f '()) 1)) => "13\n"]
[(let ([f (lambda (x) (fx+ x 12))])
(fx+ (apply f 13 '()) 1)) => "26\n"]
[(let ([f (lambda (x) (fx+ x 12))])
(fx+ (apply f (cons 13 '())) 1)) => "26\n"]
[(let ([f (lambda (x y z) (fx+ x (fx* y z)))])
(fx+ (apply f 12 '(7 2)) 1)) => "27\n"]
[(cons (apply vector '(1 2 3 4 5 6 7 8)) '()) => "(#(1 2 3 4 5 6 7 8))\n"]
[(cons (apply vector 1 '(2 3 4 5 6 7 8)) '()) => "(#(1 2 3 4 5 6 7 8))\n"]
[(cons (apply vector 1 2 '(3 4 5 6 7 8)) '()) => "(#(1 2 3 4 5 6 7 8))\n"]
[(cons (apply vector 1 2 3 '(4 5 6 7 8)) '()) => "(#(1 2 3 4 5 6 7 8))\n"]
[(cons (apply vector 1 2 3 4 '(5 6 7 8)) '()) => "(#(1 2 3 4 5 6 7 8))\n"]
[(cons (apply vector 1 2 3 4 5 '(6 7 8)) '()) => "(#(1 2 3 4 5 6 7 8))\n"]
[(cons (apply vector 1 2 3 4 5 6 '(7 8)) '()) => "(#(1 2 3 4 5 6 7 8))\n"]
[(cons (apply vector 1 2 3 4 5 6 7 '(8)) '()) => "(#(1 2 3 4 5 6 7 8))\n"]
[(cons (apply vector 1 2 3 4 5 6 7 8 ()) '()) => "(#(1 2 3 4 5 6 7 8))\n"]
)
(add-tests-with-string-output "tail apply"
[(let ([f (lambda () 12)])
(apply f '())) => "12\n"]
[(let ([f (lambda (x) (fx+ x 12))])
(apply f 13 '())) => "25\n"]
[(let ([f (lambda (x) (fx+ x 12))])
(apply f (cons 13 '()))) => "25\n"]
[(let ([f (lambda (x y z) (fx+ x (fx* y z)))])
(apply f 12 '(7 2))) => "26\n"]
[(apply vector '(1 2 3 4 5 6 7 8)) => "#(1 2 3 4 5 6 7 8)\n"]
[(apply vector 1 '(2 3 4 5 6 7 8)) => "#(1 2 3 4 5 6 7 8)\n"]
[(apply vector 1 2 '(3 4 5 6 7 8)) => "#(1 2 3 4 5 6 7 8)\n"]
[(apply vector 1 2 3 '(4 5 6 7 8)) => "#(1 2 3 4 5 6 7 8)\n"]
[(apply vector 1 2 3 4 '(5 6 7 8)) => "#(1 2 3 4 5 6 7 8)\n"]
[(apply vector 1 2 3 4 5 '(6 7 8)) => "#(1 2 3 4 5 6 7 8)\n"]
[(apply vector 1 2 3 4 5 6 '(7 8)) => "#(1 2 3 4 5 6 7 8)\n"]
[(apply vector 1 2 3 4 5 6 7 '(8)) => "#(1 2 3 4 5 6 7 8)\n"]
[(apply vector 1 2 3 4 5 6 7 8 ()) => "#(1 2 3 4 5 6 7 8)\n"]
)
(add-tests-with-string-output "nontail apply"
[(let ([f (lambda () 12)])
(fx+ (apply f '()) 1)) => "13\n"]
[(let ([f (lambda (x) (fx+ x 12))])
(fx+ (apply f 13 '()) 1)) => "26\n"]
[(let ([f (lambda (x) (fx+ x 12))])
(fx+ (apply f (cons 13 '())) 1)) => "26\n"]
[(let ([f (lambda (x y z) (fx+ x (fx* y z)))])
(fx+ (apply f 12 '(7 2)) 1)) => "27\n"]
[(cons (apply vector '(1 2 3 4 5 6 7 8)) '()) => "(#(1 2 3 4 5 6 7 8))\n"]
[(cons (apply vector 1 '(2 3 4 5 6 7 8)) '()) => "(#(1 2 3 4 5 6 7 8))\n"]
[(cons (apply vector 1 2 '(3 4 5 6 7 8)) '()) => "(#(1 2 3 4 5 6 7 8))\n"]
[(cons (apply vector 1 2 3 '(4 5 6 7 8)) '()) => "(#(1 2 3 4 5 6 7 8))\n"]
[(cons (apply vector 1 2 3 4 '(5 6 7 8)) '()) => "(#(1 2 3 4 5 6 7 8))\n"]
[(cons (apply vector 1 2 3 4 5 '(6 7 8)) '()) => "(#(1 2 3 4 5 6 7 8))\n"]
[(cons (apply vector 1 2 3 4 5 6 '(7 8)) '()) => "(#(1 2 3 4 5 6 7 8))\n"]
[(cons (apply vector 1 2 3 4 5 6 7 '(8)) '()) => "(#(1 2 3 4 5 6 7 8))\n"]
[(cons (apply vector 1 2 3 4 5 6 7 8 ()) '()) => "(#(1 2 3 4 5 6 7 8))\n"]
)
(add-tests-with-string-output "tail apply"
[(let ([f (lambda () 12)])
(apply f '())) => "12\n"]
[(let ([f (lambda (x) (fx+ x 12))])
(apply f 13 '())) => "25\n"]
[(let ([f (lambda (x) (fx+ x 12))])
(apply f (cons 13 '()))) => "25\n"]
[(let ([f (lambda (x y z) (fx+ x (fx* y z)))])
(apply f 12 '(7 2))) => "26\n"]
[(apply vector '(1 2 3 4 5 6 7 8)) => "#(1 2 3 4 5 6 7 8)\n"]
[(apply vector 1 '(2 3 4 5 6 7 8)) => "#(1 2 3 4 5 6 7 8)\n"]
[(apply vector 1 2 '(3 4 5 6 7 8)) => "#(1 2 3 4 5 6 7 8)\n"]
[(apply vector 1 2 3 '(4 5 6 7 8)) => "#(1 2 3 4 5 6 7 8)\n"]
[(apply vector 1 2 3 4 '(5 6 7 8)) => "#(1 2 3 4 5 6 7 8)\n"]
[(apply vector 1 2 3 4 5 '(6 7 8)) => "#(1 2 3 4 5 6 7 8)\n"]
[(apply vector 1 2 3 4 5 6 '(7 8)) => "#(1 2 3 4 5 6 7 8)\n"]
[(apply vector 1 2 3 4 5 6 7 '(8)) => "#(1 2 3 4 5 6 7 8)\n"]
[(apply vector 1 2 3 4 5 6 7 8 ()) => "#(1 2 3 4 5 6 7 8)\n"]
)