blob: a27dec4451dd92ee3fd1c59e88b9b350d6c8ff77 (
plain)
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
|
;; -*- compile-command: "guile -L . pshiav-test.scm"; -*-
(use-modules (srfi srfi-64)
(pshiav))
(test-begin "harness")
(define coordinate-accumulator
(add-coordinates))
(test-equal "don't move"
'((0 . 0) (0 . 0))
(coordinate-accumulator '(0 . 0)))
(set! coordinate-accumulator
(add-coordinates))
(test-equal "move up"
'((0 . 1) (0 . 0))
(coordinate-accumulator '(0 . 1)))
(set! coordinate-accumulator
(add-coordinates))
(test-equal "move up twice"
'((0 . 2) (0 . 1) (0 . 0))
(begin (coordinate-accumulator '(0 . 1))
(coordinate-accumulator '(0 . 1))))
(test-equal "up maps to +y"
'(0 . 1)
(direction->pair #\^))
(test-equal "right maps to +x"
'(1 . 0)
(direction->pair #\>))
(test-equal "down maps to -y"
'(0 . -1)
(direction->pair #\v))
(test-equal "left maps to -x"
'(-1 . 0)
(direction->pair #\<))
(test-equal "? maps to no change"
'(0 . 0)
(direction->pair #\?))
(test-equal "empty input visits one place"
1
(pshiav "" 1))
(test-equal "down once visits two places"
2
(pshiav "v" 1))
(test-equal "down twice visits three places"
3
(pshiav "vv" 1))
(test-equal "down twice, up once visits three places"
3
(pshiav "vv^" 1))
(test-equal "up down visits three with two visitors"
3
(pshiav "^v" 2))
(test-equal "up right down left visits three with two visitors"
3
(pshiav "^>v<" 2))
(test-equal "opposite instructions maximizes visits with two"
11
(pshiav "^v^v^v^v^v" 2))
(test-equal "opposite instructions maximizes visits with three"
16
(pshiav "^v>^v>^v>^v>^v>" 3))
(test-end "harness")
|