|
1 "{ Package: 'stx:goodies/petitparser/compiler/tests' }" |
|
2 |
|
3 "{ NameSpace: Smalltalk }" |
|
4 |
|
5 TestCase subclass:#PPCLTokenizingOptimizationTest |
|
6 instanceVariableNames:'configuration parser result' |
|
7 classVariableNames:'' |
|
8 poolDictionaries:'' |
|
9 category:'PetitCompiler-Tests-Core-Tokenizing' |
|
10 ! |
|
11 |
|
12 |
|
13 !PPCLTokenizingOptimizationTest methodsFor:'as yet unclassified'! |
|
14 |
|
15 assert: object type: class |
|
16 self assert: (object isKindOf: class) |
|
17 ! |
|
18 |
|
19 configuration |
|
20 configuration := PPCTokenizingConfiguration new. |
|
21 configuration arguments generate: false. |
|
22 ^ configuration |
|
23 ! |
|
24 |
|
25 optimize: aPPParser |
|
26 ^ self configuration compile: aPPParser. |
|
27 ! |
|
28 |
|
29 testCompileToken |
|
30 parser := 'foo' asParser token. |
|
31 result := self optimize: parser. |
|
32 |
|
33 self assert: result type: PPCTokenizingParserNode. |
|
34 self assert: result parser type: PPCTokenConsumeNode. |
|
35 self assert: result parser child type: PPCTokenNode. |
|
36 self assert: result parser child child literal = 'foo'. |
|
37 ! |
|
38 |
|
39 testCompileTrim |
|
40 parser := 'foo' asParser token trim. |
|
41 result := self optimize: parser. |
|
42 |
|
43 self assert: result type: PPCTokenizingParserNode. |
|
44 self assert: result parser type: PPCTokenConsumeNode. |
|
45 self assert: result parser child type: PPCTrimmingTokenNode. |
|
46 self assert: result parser child whitespace type: PPCTokenStarSeparatorNode. |
|
47 ! |
|
48 |
|
49 testCompileTrimmingToken |
|
50 parser := 'foo' asParser trimmingToken. |
|
51 result := self optimize: parser. |
|
52 |
|
53 self assert: result type: PPCTokenizingParserNode. |
|
54 self assert: result parser type: PPCTokenConsumeNode. |
|
55 self assert: result parser child type: PPCTrimmingTokenNode. |
|
56 self assert: result parser child whitespace type: PPCTokenStarSeparatorNode. |
|
57 |
|
58 self assert: result tokenizer children size = 2. |
|
59 self assert: (result tokenizer children anySatisfy: [ :e | e isKindOf: PPCTrimmingTokenNode ]) |
|
60 ! |
|
61 |
|
62 testCompileTrimmingToken2 |
|
63 | token | |
|
64 token := 'foo' asParser trimmingToken. |
|
65 parser := token wrapped |
|
66 name: 'fooToken'; |
|
67 yourself. |
|
68 result := self optimize: parser. |
|
69 |
|
70 self assert: result type: PPCTokenizingParserNode. |
|
71 self assert: result parser type: PPCTokenConsumeNode. |
|
72 self assert: result parser name = 'fooToken'. |
|
73 self assert: result parser child name = 'token_fooToken'. |
|
74 |
|
75 self assert: result tokenizer children size = 2. |
|
76 self assert: (result tokenizer children anySatisfy: [ :e | e isKindOf: PPCTrimmingTokenNode ]). |
|
77 self assert: (result tokenizer children anySatisfy: [ :e | e name = 'token_fooToken']). |
|
78 ! ! |
|
79 |
|
80 !PPCLTokenizingOptimizationTest class methodsFor:'documentation'! |
|
81 |
|
82 version_HG |
|
83 |
|
84 ^ '$Changeset: <not expanded> $' |
|
85 ! ! |
|
86 |