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