20 | duplicate before between after result | |
20 | duplicate before between after result | |
21 duplicate := PPPattern any. |
21 duplicate := PPPattern any. |
22 before := PPListPattern any. |
22 before := PPListPattern any. |
23 between := PPListPattern any. |
23 between := PPListPattern any. |
24 after := PPListPattern any. |
24 after := PPListPattern any. |
25 rewriter |
25 rewriter replace: before / duplicate / between / duplicate / after with: before / duplicate / between / after. |
26 replace: before / duplicate / between / duplicate / after |
|
27 with: before / duplicate / between / after. |
|
28 |
|
29 result := rewriter execute: $a asParser / $a asParser. |
26 result := rewriter execute: $a asParser / $a asParser. |
30 self assert: rewriter hasChanged. |
27 self assert: rewriter hasChanged. |
31 self assert: result children size = 1. |
28 self assert: result children size equals: 1. |
32 self assert: result children first literal = $a. |
29 self assert: result children first literal equals: $a. |
33 |
|
34 result := rewriter execute: $b asParser / $a asParser / $a asParser. |
30 result := rewriter execute: $b asParser / $a asParser / $a asParser. |
35 self assert: rewriter hasChanged. |
31 self assert: rewriter hasChanged. |
36 self assert: result children size = 2. |
32 self assert: result children size equals: 2. |
37 self assert: result children first literal = $b. |
33 self assert: result children first literal equals: $b. |
38 self assert: result children last literal = $a. |
34 self assert: result children last literal equals: $a. |
39 |
|
40 result := rewriter execute: $a asParser / $b asParser / $a asParser. |
35 result := rewriter execute: $a asParser / $b asParser / $a asParser. |
41 self assert: rewriter hasChanged. |
36 self assert: rewriter hasChanged. |
42 self assert: result children size = 2. |
37 self assert: result children size equals: 2. |
43 self assert: result children first literal = $a. |
38 self assert: result children first literal equals: $a. |
44 self assert: result children last literal = $b. |
39 self assert: result children last literal equals: $b. |
45 |
|
46 result := rewriter execute: $a asParser / $a asParser / $b asParser. |
40 result := rewriter execute: $a asParser / $a asParser / $b asParser. |
47 self assert: rewriter hasChanged. |
41 self assert: rewriter hasChanged. |
48 self assert: result children size = 2. |
42 self assert: result children size equals: 2. |
49 self assert: result children first literal = $a. |
43 self assert: result children first literal equals: $a. |
50 self assert: result children last literal = $b |
44 self assert: result children last literal equals: $b |
51 ! |
45 ! |
52 |
46 |
53 testPatternRemoval |
47 testPatternRemoval |
54 | pattern result | |
48 | pattern result | |
55 pattern := PPPattern class: PPLiteralObjectParser. |
49 pattern := PPPattern class: PPLiteralObjectParser. |
56 rewriter |
50 rewriter replace: pattern / pattern with: pattern. |
57 replace: pattern / pattern |
|
58 with: pattern. |
|
59 |
|
60 result := rewriter execute: $a asParser / $a asParser. |
51 result := rewriter execute: $a asParser / $a asParser. |
61 self assert: rewriter hasChanged. |
52 self assert: rewriter hasChanged. |
62 self assert: result class = PPLiteralObjectParser. |
53 self assert: result class equals: PPLiteralObjectParser. |
63 self assert: result literal = $a. |
54 self assert: result literal equals: $a. |
64 |
|
65 result := rewriter execute: $a asParser / $a asParser / $a asParser. |
55 result := rewriter execute: $a asParser / $a asParser / $a asParser. |
66 self deny: rewriter hasChanged. |
56 self deny: rewriter hasChanged. |
67 self assert: result class = PPChoiceParser. |
57 self assert: result class equals: PPChoiceParser. |
68 self assert: result children size = 3 |
58 self assert: result children size equals: 3 |
69 ! |
59 ! |
70 |
60 |
71 testPatternReplacement |
61 testPatternReplacement |
72 | pattern result | |
62 | pattern result | |
73 pattern := PPPattern class: PPLiteralObjectParser. |
63 pattern := PPPattern class: PPLiteralObjectParser. |
74 rewriter |
64 rewriter replace: pattern with: pattern , pattern. |
75 replace: pattern |
|
76 with: pattern , pattern. |
|
77 |
|
78 result := rewriter execute: $a asParser. |
65 result := rewriter execute: $a asParser. |
79 self assert: rewriter hasChanged. |
66 self assert: rewriter hasChanged. |
80 self assert: result class = PPSequenceParser. |
67 self assert: result class equals: PPSequenceParser. |
81 self assert: result children first literal = $a. |
68 self assert: result children first literal equals: $a. |
82 self assert: result children last literal = $a. |
69 self assert: result children last literal equals: $a. |
83 |
|
84 result := rewriter execute: #any asParser. |
70 result := rewriter execute: #any asParser. |
85 self deny: rewriter hasChanged. |
71 self deny: rewriter hasChanged. |
86 self assert: result class = PPPredicateObjectParser |
72 self assert: result class equals: PPPredicateObjectParser |
87 ! |
73 ! |
88 |
74 |
89 testReplaceLiteral |
75 testReplaceLiteral |
90 | result | |
76 | result | |
91 rewriter |
77 rewriter replace: $a asParser with: $b asParser. |
92 replace: $a asParser |
|
93 with: $b asParser. |
|
94 |
|
95 result := rewriter execute: $a asParser. |
78 result := rewriter execute: $a asParser. |
96 self assert: rewriter hasChanged. |
79 self assert: rewriter hasChanged. |
97 self assert: result literal = $b. |
80 self assert: result literal equals: $b. |
98 |
|
99 result := rewriter execute: $c asParser. |
81 result := rewriter execute: $c asParser. |
100 self deny: rewriter hasChanged. |
82 self deny: rewriter hasChanged. |
101 self assert: result literal = $c. |
83 self assert: result literal equals: $c. |
102 |
|
103 result := rewriter execute: $a asParser , $b asParser , $c asParser. |
84 result := rewriter execute: $a asParser , $b asParser , $c asParser. |
104 self assert: rewriter hasChanged. |
85 self assert: rewriter hasChanged. |
105 self assert: result children size = 3. |
86 self assert: result children size equals: 3. |
106 self assert: result children first literal = $b. |
87 self assert: result children first literal equals: $b. |
107 self assert: result children last literal = $c |
88 self assert: result children last literal equals: $c |
108 ! |
89 ! |
109 |
90 |
110 testSwapTwoPattern |
91 testSwapTwoPattern |
111 | first second result | |
92 | first second result | |
112 first := PPPattern any. |
93 first := PPPattern any. |
113 second := PPPattern any. |
94 second := PPPattern any. |
114 rewriter |
95 rewriter replace: first , second with: second , first. |
115 replace: first , second |
|
116 with: second , first. |
|
117 |
|
118 result := rewriter execute: $a asParser , $b asParser. |
96 result := rewriter execute: $a asParser , $b asParser. |
119 self assert: rewriter hasChanged. |
97 self assert: rewriter hasChanged. |
120 self assert: result children first literal = $b. |
98 self assert: result children first literal equals: $b. |
121 self assert: result children last literal = $a. |
99 self assert: result children last literal equals: $a. |
122 |
|
123 result := rewriter execute: $a asParser / $b asParser. |
100 result := rewriter execute: $a asParser / $b asParser. |
124 self deny: rewriter hasChanged. |
101 self deny: rewriter hasChanged. |
125 self assert: result children first literal = $a. |
102 self assert: result children first literal equals: $a. |
126 self assert: result children last literal = $b |
103 self assert: result children last literal equals: $b |
127 ! |
104 ! |
128 |
105 |
129 testWrapLiteral |
106 testWrapLiteral |
130 | result | |
107 | result | |
131 rewriter |
108 rewriter replace: $a asParser withValueFrom: [ :parser | parser token ]. |
132 replace: $a asParser |
|
133 withValueFrom: [ :parser | parser token ]. |
|
134 |
|
135 result := rewriter execute: $a asParser. |
109 result := rewriter execute: $a asParser. |
136 self assert: rewriter hasChanged. |
110 self assert: rewriter hasChanged. |
137 self assert: result class = PPTokenParser. |
111 self assert: result class equals: PPTokenParser. |
138 self assert: result children first literal = $a. |
112 self assert: result children first literal equals: $a. |
139 |
|
140 result := rewriter execute: $c asParser. |
113 result := rewriter execute: $c asParser. |
141 self deny: rewriter hasChanged. |
114 self deny: rewriter hasChanged. |
142 self assert: result literal = $c. |
115 self assert: result literal equals: $c. |
143 |
|
144 result := rewriter execute: $a asParser , $b asParser. |
116 result := rewriter execute: $a asParser , $b asParser. |
145 self assert: rewriter hasChanged. |
117 self assert: rewriter hasChanged. |
146 self assert: result children first class = PPTokenParser. |
118 self assert: result children first class equals: PPTokenParser. |
147 self assert: result children first children first literal = $a. |
119 self assert: result children first children first literal equals: $a. |
148 self assert: result children last class = PPLiteralObjectParser. |
120 self assert: result children last class equals: PPLiteralObjectParser. |
149 self assert: result children last literal = $b |
121 self assert: result children last literal equals: $b |
150 ! ! |
122 ! ! |
151 |
123 |
152 !PPRewriterTest class methodsFor:'documentation'! |
124 !PPRewriterTest class methodsFor:'documentation'! |
153 |
125 |
154 version |
126 version |