342
|
1 |
"{ Package: 'stx:goodies/petitparser/gui/tests' }"
|
|
2 |
|
|
3 |
TestCase subclass:#PPGrammarRefactoringTest
|
|
4 |
instanceVariableNames:'refactoring'
|
|
5 |
classVariableNames:''
|
|
6 |
poolDictionaries:''
|
|
7 |
category:'PetitGui-Tests'
|
|
8 |
!
|
|
9 |
|
|
10 |
|
|
11 |
!PPGrammarRefactoringTest methodsFor:'accessing'!
|
|
12 |
|
|
13 |
change
|
|
14 |
^ self refactoring changes
|
|
15 |
!
|
|
16 |
|
|
17 |
changes
|
|
18 |
^ self change changes
|
|
19 |
!
|
|
20 |
|
|
21 |
refactoring
|
|
22 |
^ refactoring
|
|
23 |
! !
|
|
24 |
|
|
25 |
!PPGrammarRefactoringTest methodsFor:'testing-parsers'!
|
|
26 |
|
|
27 |
testAddParser
|
|
28 |
self performRefactoring: (PPAddParserRefactoring
|
|
29 |
name: #PPMockParser
|
|
30 |
category: #'PetitGui-Mock').
|
|
31 |
self assert: self changes size = 2.
|
|
32 |
self assert: self changes first class = AddClassChange.
|
|
33 |
self assert: self changes first definitionClass = PPCompositeParser.
|
|
34 |
self assert: self changes first changeClassName = #PPMockParser.
|
|
35 |
self assert: self changes first category = #'PetitGui-Mock'.
|
|
36 |
self assert: self changes last class = AddMethodChange.
|
|
37 |
self assert: self changes last parseTree = (RBParser parseMethod: 'start ^ self shouldBeImplemented')
|
|
38 |
!
|
|
39 |
|
|
40 |
testAddParserWithSuperclass
|
|
41 |
self performRefactoring: (PPAddParserRefactoring
|
|
42 |
name: #PPMockParser
|
|
43 |
category: #'PetitGui-Mock'
|
|
44 |
superclass: PPArithmeticParser).
|
|
45 |
self assert: self changes size = 2.
|
|
46 |
self assert: self changes first class = AddClassChange.
|
|
47 |
self assert: self changes first definitionClass = PPArithmeticParser.
|
|
48 |
self assert: self changes first changeClassName = #PPMockParser.
|
|
49 |
self assert: self changes first category = #'PetitGui-Mock'.
|
|
50 |
self assert: self changes last class = AddMethodChange.
|
|
51 |
self assert: self changes last parseTree = (RBParser parseMethod: 'start ^ self shouldBeImplemented')
|
|
52 |
!
|
|
53 |
|
|
54 |
testRemoveParser
|
|
55 |
self performRefactoring: (PPRemoveParserRefactoring onClass: PPArithmeticParser).
|
|
56 |
self assert: self changes size = 1.
|
|
57 |
self assert: self changes first class = RBRemoveClassChange.
|
|
58 |
self assert: self changes first changeClassName = 'PPArithmeticParser'
|
|
59 |
! !
|
|
60 |
|
|
61 |
!PPGrammarRefactoringTest methodsFor:'testing-productions'!
|
|
62 |
|
|
63 |
testDefineProduction
|
|
64 |
self performRefactoring: (PPDefineProdcutionRefactoring
|
|
65 |
onClass: PPArithmeticParser
|
|
66 |
source: 'function ^ #any plus , $( , $) ==> [ :e | 0 ]'
|
|
67 |
protocols: (Array with: #productions)).
|
|
68 |
self assert: self changes size = 2.
|
|
69 |
self assert: self changes first class = RBAddInstanceVariableChange.
|
|
70 |
self assert: self changes first variable = 'function'.
|
|
71 |
self assert: self changes last class = RBAddMethodChange.
|
|
72 |
self assert: self changes last parseTree = (RBParser parseMethod: 'function ^ #any asParser plus , $( asParser , $) asParser ==> [ :e | 0 ]')
|
|
73 |
!
|
|
74 |
|
|
75 |
testExtractProduction
|
|
76 |
self performRefactoring: (PPExtractProdcutionRefactoring
|
|
77 |
onClass: PPArithmeticParser
|
|
78 |
production: #addition
|
|
79 |
interval: (36 to: 60)
|
|
80 |
to: #plusOrMinus).
|
|
81 |
self assert: self changes size = 3.
|
|
82 |
self assert: self changes first class = RBAddInstanceVariableChange.
|
|
83 |
self assert: self changes first variable = 'plusOrMinus'.
|
|
84 |
self assert: self changes second class = RBAddMethodChange.
|
|
85 |
self assert: self changes second parseTree = (RBParser parseMethod: 'plusOrMinus ^ $+ asParser / $- asParser').
|
|
86 |
self assert: self changes last class = RBAddMethodChange.
|
|
87 |
self assert: self changes last parseTree = (RBParser parseMethod: 'addition ^ (factors separatedBy: plusOrMinus trim) foldLeft: [ :a :op :b | a perform: op asSymbol with: b ]')
|
|
88 |
!
|
|
89 |
|
|
90 |
testRemoveProduction
|
|
91 |
self performRefactoring: (PPRemoveProdcutionRefactoring
|
|
92 |
onClass: PPArithmeticParser
|
|
93 |
production: #addition).
|
|
94 |
self assert: self changes size = 2.
|
|
95 |
self assert: self changes first class = RBRemoveMethodChange.
|
|
96 |
self assert: self changes first selector = #addition.
|
|
97 |
self assert: self changes last class = RBRemoveInstanceVariableChange.
|
|
98 |
self assert: self changes last variable = 'addition'
|
|
99 |
!
|
|
100 |
|
|
101 |
testRenameProduction
|
|
102 |
self performRefactoring: (PPRenameProdcutionRefactoring
|
|
103 |
onClass: PPArithmeticParser
|
|
104 |
rename: #addition
|
|
105 |
to: #add).
|
|
106 |
self assert: self changes size = 3.
|
|
107 |
self assert: self changes first class = RBRenameInstanceVariableChange.
|
|
108 |
self assert: self changes first oldName = 'addition'.
|
|
109 |
self assert: self changes first newName = 'add'.
|
|
110 |
self assert: self changes second class = RBAddMethodChange.
|
|
111 |
self assert: self changes second parseTree = (RBParser parseMethod: 'add ^ (factors separatedBy: ($+ asParser / $- asParser) trim) foldLeft: [ :a :op :b | a perform: op asSymbol with: b ]').
|
|
112 |
self assert: self changes last class = RBRemoveMethodChange.
|
|
113 |
self assert: self changes last selector = #addition
|
|
114 |
! !
|
|
115 |
|
|
116 |
!PPGrammarRefactoringTest methodsFor:'utilities'!
|
|
117 |
|
|
118 |
performRefactoring: aRefactoring
|
|
119 |
refactoring := aRefactoring.
|
|
120 |
aRefactoring primitiveExecute
|
|
121 |
! !
|
|
122 |
|
|
123 |
!PPGrammarRefactoringTest class methodsFor:'documentation'!
|
|
124 |
|
|
125 |
version
|
|
126 |
^ '$Header: /cvs/stx/stx/goodies/petitparser/gui/tests/PPGrammarRefactoringTest.st,v 1.1 2014-03-04 21:16:20 cg Exp $'
|
|
127 |
!
|
|
128 |
|
|
129 |
version_CVS
|
|
130 |
^ '$Header: /cvs/stx/stx/goodies/petitparser/gui/tests/PPGrammarRefactoringTest.st,v 1.1 2014-03-04 21:16:20 cg Exp $'
|
|
131 |
! !
|
|
132 |
|