summaryrefslogtreecommitdiff
path: root/examples/trace.test
blob: 47008f60bca514b6e99f29591790bf1dbc0fbad4 (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
84
85
86
87
88
89
90
91
92
93
94
95
96
#!/bin/sh

# trace.test is part of the GNU m4 testsuite

. ${srcdir}/defs

cat ${srcdir}/trace.m4 >in

cat <<\EOF >ok

# Debugmode t

Move one disk from source to auxilliary.
Move one disk from source to destination.
Move one disk from auxilliary to destination.


# Debugmode taeq

Move one disk from source to auxilliary.
Move one disk from source to destination.
Move one disk from auxilliary to destination.


# Debugmode OFF

Move one disk from source to auxilliary.
Move one disk from source to destination.
Move one disk from auxilliary to destination.


# Debugmode ae


Move one disk from source to auxilliary.
Move one disk from source to destination.
Move one disk from auxilliary to destination.

EOF

cat <<\EOF >okerr
m4trace: -1- hanoi
m4trace: -1- _hanoi
m4trace: -2- eval
m4trace: -1- ifelse
m4trace: -2- decr
m4trace: -1- _hanoi
m4trace: -2- eval
m4trace: -1- ifelse
m4trace: -1- move
m4trace: -1- move
m4trace: -2- decr
m4trace: -1- _hanoi
m4trace: -2- eval
m4trace: -1- ifelse
m4trace: -1- move

m4trace: -1- hanoi(`2') -> `_hanoi(`2', source, destination, auxilliary)'
m4trace: -1- _hanoi(`2', `source', `destination', `auxilliary') -> `ifelse(eval(`2'<=1), 1, `move(source, destination)',
`_hanoi(decr(2), source, auxilliary, destination)move(source, destination)_hanoi(decr(2), auxilliary, destination, source)')'
m4trace: -2- eval(`2<=1') -> `0'
m4trace: -1- ifelse(`0', `1', `move(source, destination)', `_hanoi(decr(2), source, auxilliary, destination)move(source, destination)_hanoi(decr(2), auxilliary, destination, source)') -> `_hanoi(decr(2), source, auxilliary, destination)move(source, destination)_hanoi(decr(2), auxilliary, destination, source)'
m4trace: -2- decr(`2') -> `1'
m4trace: -1- _hanoi(`1', `source', `auxilliary', `destination') -> `ifelse(eval(`1'<=1), 1, `move(source, auxilliary)',
`_hanoi(decr(1), source, destination, auxilliary)move(source, auxilliary)_hanoi(decr(1), destination, auxilliary, source)')'
m4trace: -2- eval(`1<=1') -> `1'
m4trace: -1- ifelse(`1', `1', `move(source, auxilliary)', `_hanoi(decr(1), source, destination, auxilliary)move(source, auxilliary)_hanoi(decr(1), destination, auxilliary, source)') -> `move(source, auxilliary)'
m4trace: -1- move(`source', `auxilliary') -> `Move one disk from `source' to `auxilliary'.
'
m4trace: -1- move(`source', `destination') -> `Move one disk from `source' to `destination'.
'
m4trace: -2- decr(`2') -> `1'
m4trace: -1- _hanoi(`1', `auxilliary', `destination', `source') -> `ifelse(eval(`1'<=1), 1, `move(auxilliary, destination)',
`_hanoi(decr(1), auxilliary, source, destination)move(auxilliary, destination)_hanoi(decr(1), source, destination, auxilliary)')'
m4trace: -2- eval(`1<=1') -> `1'
m4trace: -1- ifelse(`1', `1', `move(auxilliary, destination)', `_hanoi(decr(1), auxilliary, source, destination)move(auxilliary, destination)_hanoi(decr(1), source, destination, auxilliary)') -> `move(auxilliary, destination)'
m4trace: -1- move(`auxilliary', `destination') -> `Move one disk from `auxilliary' to `destination'.
'
m4trace: -1- debugmode
m4trace: -1- _hanoi(2, source, destination, auxilliary) -> ifelse(eval(`2'<=1), 1, `move(source, destination)',
`_hanoi(decr(2), source, auxilliary, destination)move(source, destination)_hanoi(decr(2), auxilliary, destination, source)')
m4trace: -1- _hanoi(1, source, auxilliary, destination) -> ifelse(eval(`1'<=1), 1, `move(source, auxilliary)',
`_hanoi(decr(1), source, destination, auxilliary)move(source, auxilliary)_hanoi(decr(1), destination, auxilliary, source)')
m4trace: -1- move(source, auxilliary) -> Move one disk from `source' to `auxilliary'.

m4trace: -1- move(source, destination) -> Move one disk from `source' to `destination'.

m4trace: -1- _hanoi(1, auxilliary, destination, source) -> ifelse(eval(`1'<=1), 1, `move(auxilliary, destination)',
`_hanoi(decr(1), auxilliary, source, destination)move(auxilliary, destination)_hanoi(decr(1), source, destination, auxilliary)')
m4trace: -1- move(auxilliary, destination) -> Move one disk from `auxilliary' to `destination'.

EOF

M4PATH=$srcdir:$srcdir/../tests $M4 -d in >out 2>err
sed -e "s, ../../src/m4:, m4:," err >sederr && mv sederr err
$CMP -s out ok && $CMP -s err okerr