author | Jan Vrany <jan.vrany@fit.cvut.cz> |
Mon, 23 Nov 2015 11:14:30 +0100 | |
changeset 551 | 00ebb1b85f53 |
parent 454 | a9cd5ea7cc36 |
permissions | -rw-r--r-- |
376
a2656b27cace
Added monticelloName to package definition to ease export to .mcz
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
375
diff
changeset
|
1 |
"{ Package: 'stx:goodies/petitparser/tests' }" |
0 | 2 |
|
454
a9cd5ea7cc36
Portability: fixes for Smalltalk/X
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
377
diff
changeset
|
3 |
"{ NameSpace: Smalltalk }" |
a9cd5ea7cc36
Portability: fixes for Smalltalk/X
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
377
diff
changeset
|
4 |
|
0 | 5 |
PPCompositeParserTest subclass:#PPLambdaParserTest |
6 |
instanceVariableNames:'' |
|
7 |
classVariableNames:'' |
|
8 |
poolDictionaries:'' |
|
9 |
category:'PetitTests-Tests' |
|
10 |
! |
|
11 |
||
12 |
||
13 |
!PPLambdaParserTest methodsFor:'accessing'! |
|
14 |
||
15 |
parserClass |
|
16 |
^ PPLambdaParser |
|
17 |
! ! |
|
18 |
||
19 |
!PPLambdaParserTest methodsFor:'testing'! |
|
20 |
||
21 |
testAbstraction |
|
22 |
self assert: '\x.y' is: #('x' 'y'). |
|
23 |
self assert: '\x.\y.z' is: #('x' ('y' 'z')) |
|
24 |
! |
|
25 |
||
26 |
testApplication |
|
27 |
self assert: '(x x)' is: #('x' 'x'). |
|
28 |
self assert: '(x y)' is: #('x' 'y'). |
|
29 |
self assert: '((x y) z)' is: #(('x' 'y') 'z'). |
|
30 |
self assert: '(x (y z))' is: #('x' ('y' 'z')) |
|
31 |
! |
|
32 |
||
33 |
testVariable |
|
34 |
self assert: 'x' is: 'x'. |
|
35 |
self assert: 'xy' is: 'xy'. |
|
36 |
self assert: 'x12' is: 'x12' |
|
37 |
! ! |
|
38 |
||
39 |
!PPLambdaParserTest methodsFor:'testing-curch'! |
|
40 |
||
41 |
testAnd |
|
377
6112a403a52d
Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
376
diff
changeset
|
42 |
self assert: self parserClass and equals: #('p' #('q' #(#('p' 'q') 'p'))) |
0 | 43 |
! |
44 |
||
45 |
testFalse |
|
377
6112a403a52d
Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
376
diff
changeset
|
46 |
self assert: self parserClass false equals: #('x' #('y' 'y')) |
0 | 47 |
! |
48 |
||
49 |
testIfThenElse |
|
377
6112a403a52d
Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
376
diff
changeset
|
50 |
self assert: self parserClass ifthenelse equals: #('p' 'p') |
0 | 51 |
! |
52 |
||
53 |
testNot |
|
377
6112a403a52d
Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
376
diff
changeset
|
54 |
self assert: self parserClass not equals: #('p' #('a' #('b' #(#('p' 'b') 'a')))) |
0 | 55 |
! |
56 |
||
57 |
testOr |
|
377
6112a403a52d
Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
376
diff
changeset
|
58 |
self assert: self parserClass or equals: #('p' #('q' #(#('p' 'p') 'q'))) |
0 | 59 |
! |
60 |
||
61 |
testTrue |
|
377
6112a403a52d
Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
376
diff
changeset
|
62 |
self assert: self parserClass true equals: #('x' #('y' 'x')) |
0 | 63 |
! ! |
64 |
||
65 |
!PPLambdaParserTest methodsFor:'testing-utilities'! |
|
66 |
||
67 |
testParseOnError |
|
189 | 68 |
| beenHere | |
377
6112a403a52d
Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
376
diff
changeset
|
69 |
result := self parserClass parse: '\x.y' onError: [ self fail ]. |
6112a403a52d
Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
376
diff
changeset
|
70 |
self assert: result equals: #('x' 'y'). |
6112a403a52d
Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
376
diff
changeset
|
71 |
beenHere := false. |
6112a403a52d
Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
376
diff
changeset
|
72 |
result := self parserClass parse: '\x.' onError: [ beenHere := true ]. |
6112a403a52d
Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
376
diff
changeset
|
73 |
self assert: beenHere. |
189 | 74 |
beenHere := false. |
75 |
result := self parserClass |
|
76 |
parse: '\x.' |
|
377
6112a403a52d
Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
376
diff
changeset
|
77 |
onError: [ :fail | |
6112a403a52d
Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
376
diff
changeset
|
78 |
beenHere := true. |
6112a403a52d
Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
376
diff
changeset
|
79 |
fail ]. |
189 | 80 |
self assert: beenHere. |
377
6112a403a52d
Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
376
diff
changeset
|
81 |
self assert: (result message includesSubstring: 'separator'). |
6112a403a52d
Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
376
diff
changeset
|
82 |
self assert: (result message includesSubstring: 'expected'). |
6112a403a52d
Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
376
diff
changeset
|
83 |
self assert: result position equals: 3. |
189 | 84 |
beenHere := false. |
85 |
result := self parserClass |
|
86 |
parse: '\x.' |
|
87 |
onError: [ :msg :pos | |
|
377
6112a403a52d
Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
376
diff
changeset
|
88 |
self assert: (msg includesSubstring: 'separator'). |
6112a403a52d
Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
376
diff
changeset
|
89 |
self assert: (msg includesSubstring: 'expected'). |
6112a403a52d
Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
376
diff
changeset
|
90 |
self assert: pos equals: 3. |
189 | 91 |
beenHere := true ]. |
92 |
self assert: result. |
|
93 |
self assert: beenHere |
|
0 | 94 |
! |
95 |
||
96 |
testParseStartingAtOnError |
|
97 |
| beenHere | |
|
377
6112a403a52d
Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
376
diff
changeset
|
98 |
result := self parserClass parse: 'x' startingAt: #variable onError: [ self fail ]. |
6112a403a52d
Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
376
diff
changeset
|
99 |
self assert: result equals: 'x'. |
6112a403a52d
Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
376
diff
changeset
|
100 |
beenHere := false. |
6112a403a52d
Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
376
diff
changeset
|
101 |
result := self parserClass parse: '\' startingAt: #variable onError: [ beenHere := true ]. |
6112a403a52d
Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
376
diff
changeset
|
102 |
self assert: beenHere. |
0 | 103 |
beenHere := false. |
104 |
result := self parserClass |
|
105 |
parse: '\' |
|
106 |
startingAt: #variable |
|
377
6112a403a52d
Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
376
diff
changeset
|
107 |
onError: [ :fail | |
6112a403a52d
Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
376
diff
changeset
|
108 |
beenHere := true. |
6112a403a52d
Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
376
diff
changeset
|
109 |
fail ]. |
0 | 110 |
self assert: beenHere. |
377
6112a403a52d
Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
376
diff
changeset
|
111 |
self assert: result message equals: 'separator expected'. |
6112a403a52d
Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
376
diff
changeset
|
112 |
self assert: result position equals: 0. |
0 | 113 |
beenHere := false. |
114 |
result := self parserClass |
|
115 |
parse: '\' |
|
116 |
startingAt: #variable |
|
37 | 117 |
onError: [ :msg :pos | |
377
6112a403a52d
Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
376
diff
changeset
|
118 |
self assert: msg equals: 'separator expected'. |
6112a403a52d
Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
376
diff
changeset
|
119 |
self assert: pos equals: 0. |
0 | 120 |
beenHere := true ]. |
121 |
self assert: beenHere |
|
122 |
! |
|
123 |
||
124 |
testProductionAt |
|
125 |
self assert: (parser productionAt: #foo) isNil. |
|
126 |
self assert: (parser productionAt: #foo ifAbsent: [ true ]). |
|
37 | 127 |
|
0 | 128 |
self assert: (parser productionAt: #start) notNil. |
129 |
self assert: (parser productionAt: #start ifAbsent: [ true ]) notNil. |
|
37 | 130 |
|
0 | 131 |
self assert: (parser productionAt: #variable) notNil. |
132 |
self assert: (parser productionAt: #variable ifAbsent: [ true ]) notNil |
|
133 |
! ! |
|
134 |
||
135 |
!PPLambdaParserTest class methodsFor:'documentation'! |
|
136 |
||
37 | 137 |
version |
189 | 138 |
^ '$Header: /cvs/stx/stx/goodies/petitparser/PPLambdaParserTest.st,v 1.4 2014-03-04 14:34:18 cg Exp $' |
37 | 139 |
! |
140 |
||
141 |
version_CVS |
|
189 | 142 |
^ '$Header: /cvs/stx/stx/goodies/petitparser/PPLambdaParserTest.st,v 1.4 2014-03-04 14:34:18 cg Exp $' |
37 | 143 |
! |
144 |
||
0 | 145 |
version_SVN |
189 | 146 |
^ '$Id: PPLambdaParserTest.st,v 1.4 2014-03-04 14:34:18 cg Exp $' |
0 | 147 |
! ! |
189 | 148 |