--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/parsers/smalltalk/tests/PPSmalltalkParserTests.st Tue Oct 07 09:42:03 2014 +0100
@@ -0,0 +1,1301 @@
+"{ Package: 'stx:goodies/petitparser/parsers/smalltalk/tests' }"
+
+PPSmalltalkGrammarTests subclass:#PPSmalltalkParserTests
+ instanceVariableNames:''
+ classVariableNames:''
+ poolDictionaries:''
+ category:'PetitSmalltalk-Tests'
+!
+
+PPSmalltalkParserTests comment:''
+!
+
+!PPSmalltalkParserTests methodsFor:'accessing'!
+
+parserClass
+ ^ PPSmalltalkParser
+! !
+
+!PPSmalltalkParserTests methodsFor:'private'!
+
+assert: aNode format: aString
+ aNode isCollection
+ ifFalse: [ ^ self assert: (Array with: aNode) format: (Array with: aString) ].
+ self assert: aNode size equals: aString size.
+ aNode with: aString do: [ :node :string | self assert: (RBConfigurableFormatter format: node) equals: string ]
+! !
+
+!PPSmalltalkParserTests methodsFor:'testing'!
+
+testArray1
+ super testArray1.
+ self assert: result isArray.
+ self assert: result statements isEmpty.
+ self assert: result periods isEmpty
+!
+
+testArray2
+ super testArray2.
+ self assert: result isArray.
+ self assert: result periods isEmpty.
+ self assert: result statements size equals: 1.
+ self assert: result statements first isMessage.
+ self assert: result statements first selector equals: #foo
+!
+
+testArray3
+ super testArray3.
+ self assert: result isArray.
+ self assert: result periods size equals: 1.
+ self assert: result statements size equals: 2.
+ self assert: result statements first isMessage.
+ self assert: result statements first selector equals: #foo.
+ self assert: result statements last isMessage.
+ self assert: result statements last selector equals: #bar
+!
+
+testArray4
+ super testArray4.
+ self assert: result isArray.
+ self assert: result periods size equals: 2.
+ self assert: result statements size equals: 2.
+ self assert: result statements first isMessage.
+ self assert: result statements first selector equals: #foo.
+ self assert: result statements last isMessage.
+ self assert: result statements last selector equals: #bar
+!
+
+testAssignment1
+ super testAssignment1.
+ self assert: result isLiteralNode.
+ self assert: result value equals: 1
+!
+
+testAssignment2
+ super testAssignment2.
+ self assert: result isAssignment.
+ self assert: result variable isVariable.
+ self assert: result variable name equals: 'a'.
+ self assert: result value isLiteralNode.
+ self assert: result value value equals: 1
+!
+
+testAssignment3
+ super testAssignment3.
+ self assert: result isAssignment.
+ self assert: result variable isVariable.
+ self assert: result variable name equals: 'a'.
+ self assert: result value isAssignment.
+ self assert: result value variable isVariable.
+ self assert: result value variable name equals: 'b'.
+ self assert: result value value isLiteralNode.
+ self assert: result value value value equals: 1
+!
+
+testAssignment4
+ super testAssignment4.
+ PPSmalltalkGrammar allowUnderscoreAssignment
+ ifFalse: [ ^ self ].
+ self assert: result isAssignment.
+ self assert: result variable isVariable.
+ self assert: result variable name equals: 'a'.
+ self assert: result value isLiteralNode.
+ self assert: result value value equals: 1
+!
+
+testAssignment5
+ super testAssignment5.
+ PPSmalltalkGrammar allowUnderscoreAssignment
+ ifFalse: [ ^ self ].
+ self assert: result isAssignment.
+ self assert: result variable isVariable.
+ self assert: result variable name equals: 'a'.
+ self assert: result value isAssignment.
+ self assert: result value variable isVariable.
+ self assert: result value variable name equals: 'b'.
+ self assert: result value value isLiteralNode.
+ self assert: result value value value equals: 1
+!
+
+testAssignment6
+ super testAssignment6.
+ self assert: result isAssignment.
+ self assert: result variable isVariable.
+ self assert: result variable name equals: 'a'.
+ self assert: result value isAssignment.
+ self assert: result value variable isVariable.
+ self assert: result value variable name equals: 'b'.
+ self assert: result value value isVariable.
+ self assert: result value value name equals: 'c'
+!
+
+testComment1
+ super testComment1.
+ self assert: result isMessage.
+ self assert: result receiver isValue.
+ self assert: result selector equals: #+.
+ self assert: result arguments first isValue
+!
+
+testComment2
+ super testComment2.
+ self assert: result isMessage.
+ self assert: result receiver isValue.
+ self assert: result selector equals: #+.
+ self assert: result arguments first isValue
+!
+
+testComment3
+ super testComment3.
+ self assert: result isMessage.
+ self assert: result receiver isValue.
+ self assert: result selector equals: #+.
+ self assert: result arguments first isValue
+!
+
+testComment4
+ super testComment4.
+ self assert: result isMessage.
+ self assert: result receiver isValue.
+ self assert: result selector equals: #+.
+ self assert: result arguments first isValue
+!
+
+testComment5
+ super testComment5.
+ self assert: result isMessage.
+ self assert: result receiver isValue.
+ self assert: result selector equals: #+.
+ self assert: result arguments first isValue
+!
+
+testMethod1
+ super testMethod1.
+ self assert: result isMethod.
+ self assert: result arguments isEmpty.
+ self assert: result body temporaries isEmpty.
+ self assert: result body statements size equals: 1.
+ self assert: result body statements first isReturn.
+ self assert: result body statements first value isMessage.
+ self assert: result body statements first value receiver isLiteralNode.
+ self assert: result body statements first value selector equals: #-.
+ self assert: result body statements first value arguments size equals: 1.
+ self assert: result body statements first value arguments first isVariable
+!
+
+testMethod2
+ super testMethod2.
+ self assert: result isMethod.
+ self assert: result arguments isEmpty.
+ self assert: result body temporaries isEmpty.
+ self assert: result body statements size equals: 1.
+ self assert: result body statements first isReturn.
+ self assert: result body statements first value isMessage.
+ self assert: result body statements first value receiver isLiteralNode.
+ self assert: result body statements first value selector equals: #-.
+ self assert: result body statements first value arguments size equals: 1.
+ self assert: result body statements first value arguments first isVariable
+!
+
+testMethod3
+ super testMethod3.
+ self assert: result isMethod.
+ self assert: result arguments isEmpty.
+ self assert: result body temporaries isEmpty.
+ self assert: result body statements size equals: 1.
+ self assert: result body statements first isReturn.
+ self assert: result body statements first value isMessage.
+ self assert: result body statements first value receiver isLiteralNode.
+ self assert: result body statements first value selector equals: #-.
+ self assert: result body statements first value arguments size equals: 1.
+ self assert: result body statements first value arguments first isVariable
+!
+
+testSequence1
+ super testSequence1.
+ self assert: result isSequence.
+ self assert: result temporaries size equals: 1.
+ self assert: result temporaries first isVariable.
+ self assert: result temporaries first name equals: 'a'.
+ self assert: result statements size equals: 2.
+ self assert: result statements first isLiteralNode.
+ self assert: result statements first value equals: 1.
+ self assert: result statements second isLiteralNode.
+ self assert: result statements second value equals: 2
+!
+
+testStatements1
+ super testStatements1.
+ self assert: result isSequence.
+ self assert: result temporaries isEmpty.
+ self assert: result statements size equals: 1.
+ self assert: result statements first isLiteralNode.
+ self assert: result statements first value equals: 1.
+ self assert: result statements first value isInteger
+!
+
+testStatements2
+ super testStatements2.
+ self assert: result isSequence.
+ self assert: result temporaries isEmpty.
+ self assert: result statements size equals: 2.
+ self assert: result statements first isLiteralNode.
+ self assert: result statements first value equals: 1.
+ self assert: result statements first value isInteger.
+ self assert: result statements second isLiteralNode.
+ self assert: result statements second value equals: 2.
+ self assert: result statements second value isInteger
+!
+
+testStatements3
+ super testStatements3.
+ self assert: result isSequence.
+ self assert: result temporaries isEmpty.
+ self assert: result statements size equals: 3.
+ self assert: result statements first isLiteralNode.
+ self assert: result statements first value equals: 1.
+ self assert: result statements first value isInteger.
+ self assert: result statements second isLiteralNode.
+ self assert: result statements second value equals: 2.
+ self assert: result statements second value isInteger.
+ self assert: result statements third isLiteralNode.
+ self assert: result statements third value equals: 3.
+ self assert: result statements third value isInteger
+!
+
+testStatements4
+ super testStatements4.
+ self assert: result isSequence.
+ self assert: result temporaries isEmpty.
+ self assert: result statements size equals: 3.
+ self assert: result statements first isLiteralNode.
+ self assert: result statements first value equals: 1.
+ self assert: result statements first value isInteger.
+ self assert: result statements second isLiteralNode.
+ self assert: result statements second value equals: 2.
+ self assert: result statements second value isInteger.
+ self assert: result statements third isLiteralNode.
+ self assert: result statements third value equals: 3.
+ self assert: result statements third value isInteger
+!
+
+testStatements5
+ super testStatements5.
+ self assert: result isSequence.
+ self assert: result temporaries isEmpty.
+ self assert: result statements size equals: 2.
+ self assert: result statements first isLiteralNode.
+ self assert: result statements first value equals: 1.
+ self assert: result statements first value isInteger.
+ self assert: result statements second isLiteralNode.
+ self assert: result statements second value equals: 2.
+ self assert: result statements second value isInteger
+!
+
+testStatements6
+ super testStatements6.
+ self assert: result isSequence.
+ self assert: result temporaries isEmpty.
+ self assert: result statements size equals: 2.
+ self assert: result statements first isLiteralNode.
+ self assert: result statements first value equals: 1.
+ self assert: result statements first value isInteger.
+ self assert: result statements second isLiteralNode.
+ self assert: result statements second value equals: 2.
+ self assert: result statements second value isInteger
+!
+
+testStatements7
+ super testStatements7.
+ self assert: result isSequence.
+ self assert: result temporaries isEmpty.
+ self assert: result statements size equals: 1.
+ self assert: result statements first isLiteralNode.
+ self assert: result statements first value equals: 1.
+ self assert: result statements first value isInteger
+!
+
+testStatements8
+ super testStatements8.
+ self assert: result isSequence.
+ self assert: result temporaries isEmpty.
+ self assert: result statements size equals: 1.
+ self assert: result statements first isLiteralNode.
+ self assert: result statements first value equals: 1.
+ self assert: result statements first value isInteger
+!
+
+testTemporaries1
+ super testTemporaries1.
+ self assert: result isSequence.
+ self assert: result temporaries size equals: 1.
+ self assert: result temporaries first isVariable.
+ self assert: result temporaries first name equals: 'a'.
+ self assert: result statements isEmpty
+!
+
+testTemporaries2
+ super testTemporaries2.
+ self assert: result isSequence.
+ self assert: result temporaries size equals: 2.
+ self assert: result temporaries first isVariable.
+ self assert: result temporaries first name equals: 'a'.
+ self assert: result temporaries second isVariable.
+ self assert: result temporaries second name equals: 'b'.
+ self assert: result statements isEmpty
+!
+
+testTemporaries3
+ super testTemporaries3.
+ self assert: result isSequence.
+ self assert: result temporaries size equals: 3.
+ self assert: result temporaries first isVariable.
+ self assert: result temporaries first name equals: 'a'.
+ self assert: result temporaries second isVariable.
+ self assert: result temporaries second name equals: 'b'.
+ self assert: result temporaries third isVariable.
+ self assert: result temporaries third name equals: 'c'.
+ self assert: result statements isEmpty
+!
+
+testVariable1
+ super testVariable1.
+ self assert: result isVariable.
+ self assert: result name equals: 'trueBinding'
+!
+
+testVariable2
+ super testVariable2.
+ self assert: result isVariable.
+ self assert: result name equals: 'falseBinding'
+!
+
+testVariable3
+ super testVariable3.
+ self assert: result isVariable.
+ self assert: result name equals: 'nilly'
+!
+
+testVariable4
+ super testVariable4.
+ self assert: result isVariable.
+ self assert: result name equals: 'selfish'
+!
+
+testVariable5
+ super testVariable5.
+ self assert: result isVariable.
+ self assert: result name equals: 'supernanny'
+!
+
+testVariable6
+ super testVariable6.
+ PPSmalltalkGrammar allowUnderscoreAssignment
+ ifTrue: [ ^ self ].
+ self assert: result isVariable.
+ self assert: result name equals: 'super_nanny'
+!
+
+testVariable7
+ super testVariable7.
+ PPSmalltalkGrammar allowUnderscoreAssignment
+ ifTrue: [ ^ self ].
+ self assert: result isVariable.
+ self assert: result name equals: '__gen_var_123__'
+! !
+
+!PPSmalltalkParserTests methodsFor:'testing-blocks'!
+
+testArgumentsBlock1
+ super testArgumentsBlock1.
+ self assert: result isBlock.
+ self assert: result arguments size equals: 1.
+ self assert: result arguments first isVariable.
+ self assert: result arguments first name equals: 'a'.
+ self assert: result body temporaries isEmpty.
+ self assert: result body statements isEmpty
+!
+
+testArgumentsBlock2
+ super testArgumentsBlock2.
+ self assert: result isBlock.
+ self assert: result arguments size equals: 2.
+ self assert: result arguments first isVariable.
+ self assert: result arguments first name equals: 'a'.
+ self assert: result arguments second isVariable.
+ self assert: result arguments second name equals: 'b'.
+ self assert: result body temporaries isEmpty.
+ self assert: result body statements isEmpty
+!
+
+testArgumentsBlock3
+ super testArgumentsBlock3.
+ self assert: result isBlock.
+ self assert: result arguments size equals: 3.
+ self assert: result arguments first isVariable.
+ self assert: result arguments first name equals: 'a'.
+ self assert: result arguments second isVariable.
+ self assert: result arguments second name equals: 'b'.
+ self assert: result arguments third isVariable.
+ self assert: result arguments third name equals: 'c'.
+ self assert: result body temporaries isEmpty.
+ self assert: result body statements isEmpty
+!
+
+testComplexBlock1
+ super testComplexBlock1.
+ self assert: result isBlock.
+ self assert: result arguments size equals: 1.
+ self assert: result body temporaries size equals: 1.
+ self assert: result body statements size equals: 1
+!
+
+testComplexBlock2
+ super testComplexBlock2.
+ self assert: result isBlock.
+ self assert: result arguments size equals: 1.
+ self assert: result body temporaries size equals: 1.
+ self assert: result body statements size equals: 1
+!
+
+testSimpleBlock1
+ super testSimpleBlock1.
+ self assert: result isBlock.
+ self assert: result arguments isEmpty.
+ self assert: result body temporaries isEmpty.
+ self assert: result body statements isEmpty
+!
+
+testSimpleBlock2
+ super testSimpleBlock2.
+ self assert: result isBlock.
+ self assert: result arguments isEmpty.
+ self assert: result body temporaries isEmpty.
+ self assert: result body statements size equals: 1
+!
+
+testSimpleBlock3
+ super testSimpleBlock3.
+ self assert: result isBlock.
+ self assert: result arguments size equals: 1.
+ self assert: result body temporaries isEmpty.
+ self assert: result body statements isEmpty
+!
+
+testStatementBlock1
+ super testStatementBlock1.
+ self assert: result isBlock.
+ self assert: result arguments isEmpty.
+ self assert: result body temporaries isEmpty.
+ self assert: result body statements size equals: 1
+!
+
+testStatementBlock2
+ super testStatementBlock2.
+ self assert: result isBlock.
+ self assert: result arguments isEmpty.
+ self assert: result body temporaries size equals: 1.
+ self assert: result body statements size equals: 1
+!
+
+testStatementBlock3
+ super testStatementBlock3.
+ self assert: result isBlock.
+ self assert: result arguments isEmpty.
+ self assert: result body temporaries size equals: 2.
+ self assert: result body statements size equals: 1
+! !
+
+!PPSmalltalkParserTests methodsFor:'testing-literals'!
+
+testArrayLiteral1
+ super testArrayLiteral1.
+ self assert: result isLiteralNode.
+ self assert: result value equals: #()
+!
+
+testArrayLiteral10
+ super testArrayLiteral10.
+ self assert: result isLiteralNode.
+ self assert: result value equals: #(#(1 2) #(1 2 3))
+!
+
+testArrayLiteral11
+ super testArrayLiteral11.
+ self assert: result isLiteralNode.
+ self assert: result value size equals: 2.
+ self assert: (result value first isKindOf: ByteArray).
+ self assert: result value first size equals: 2.
+ self assert: (result value last isKindOf: ByteArray).
+ self assert: result value last size equals: 3
+!
+
+testArrayLiteral2
+ super testArrayLiteral2.
+ self assert: result isLiteralNode.
+ self assert: result value equals: #(1)
+!
+
+testArrayLiteral3
+ super testArrayLiteral3.
+ self assert: result isLiteralNode.
+ self assert: result value equals: #(1 2)
+!
+
+testArrayLiteral4
+ super testArrayLiteral4.
+ self assert: result isLiteralNode.
+ self assert: result value equals: #(true false nil)
+!
+
+testArrayLiteral5
+ super testArrayLiteral5.
+ self assert: result isLiteralNode.
+ self assert: result value equals: #($a)
+!
+
+testArrayLiteral6
+ super testArrayLiteral6.
+ self assert: result isLiteralNode.
+ self assert: result value equals: #(1.2)
+!
+
+testArrayLiteral7
+ super testArrayLiteral7.
+ self assert: result isLiteralNode.
+ self assert: result value equals: #(#size #at: #at:put: #==).
+ result value do: [ :each | self assert: each isSymbol ]
+!
+
+testArrayLiteral8
+ super testArrayLiteral8.
+ self assert: result isLiteralNode.
+ self assert: result value equals: #('baz').
+ self assert: result value first isString.
+ self assert: result value first isSymbol not
+!
+
+testArrayLiteral9
+ super testArrayLiteral9.
+ self assert: result isLiteralNode.
+ self assert: result value equals: #(#(1) 2)
+!
+
+testByteLiteral1
+ super testByteLiteral1.
+ self assert: result isLiteralNode.
+ self assert: (result value isKindOf: ByteArray).
+ self assert: result value isEmpty
+!
+
+testByteLiteral2
+ super testByteLiteral2.
+ self assert: result isLiteralNode.
+ self assert: (result value isKindOf: ByteArray).
+ self assert: result value size equals: 1.
+ self assert: result value first equals: 0
+!
+
+testByteLiteral3
+ super testByteLiteral3.
+ self assert: result isLiteralNode.
+ self assert: (result value isKindOf: ByteArray).
+ self assert: result value size equals: 1.
+ self assert: result value first equals: 255
+!
+
+testByteLiteral4
+ super testByteLiteral4.
+ self assert: result isLiteralNode.
+ self assert: (result value isKindOf: ByteArray).
+ self assert: result value size equals: 2.
+ self assert: result value first equals: 1.
+ self assert: result value last equals: 2
+!
+
+testByteLiteral5
+ super testByteLiteral5.
+ self assert: result isLiteralNode.
+ self assert: (result value isKindOf: ByteArray).
+ self assert: result value size equals: 3.
+ self assert: result value first equals: 10.
+ self assert: result value second equals: 63.
+ self assert: result value last equals: 255
+!
+
+testCharLiteral1
+ super testCharLiteral1.
+ self assert: result isLiteralNode.
+ self assert: result value equals: $a
+!
+
+testCharLiteral2
+ super testCharLiteral2.
+ self assert: result isLiteralNode.
+ self assert: result value equals: Character space
+!
+
+testCharLiteral3
+ super testCharLiteral3.
+ self assert: result isLiteralNode.
+ self assert: result value equals: $$
+!
+
+testNumberLiteral1
+ super testNumberLiteral1.
+ self assert: result isLiteralNode.
+ self assert: result value equals: 0.
+ self assert: result value isInteger
+!
+
+testNumberLiteral10
+ super testNumberLiteral10.
+ self assert: result isLiteralNode.
+ self assert: result value equals: 10.
+ self assert: result value isInteger
+!
+
+testNumberLiteral11
+ super testNumberLiteral11.
+ self assert: result isLiteralNode.
+ self assert: result value equals: 511.
+ self assert: result value isInteger
+!
+
+testNumberLiteral12
+ super testNumberLiteral12.
+ self assert: result isLiteralNode.
+ self assert: result value equals: 175.
+ self assert: result value isInteger
+!
+
+testNumberLiteral13
+ super testNumberLiteral13.
+ self assert: result isLiteralNode.
+ self assert: result value equals: 202.9921875.
+ self assert: result value isFloat
+!
+
+testNumberLiteral14
+ super testNumberLiteral14.
+ self assert: result isLiteralNode.
+ self assert: result value floor equals: -9.
+ self assert: result value isFloat
+!
+
+testNumberLiteral15
+ super testNumberLiteral15.
+ self assert: result isLiteralNode.
+ self assert: result value equals: 1 / 2
+!
+
+testNumberLiteral2
+ super testNumberLiteral2.
+ self assert: result isLiteralNode.
+ self assert: result value equals: 0.1.
+ self assert: result value isFloat
+!
+
+testNumberLiteral3
+ super testNumberLiteral3.
+ self assert: result isLiteralNode.
+ self assert: result value equals: 123.
+ self assert: result value isInteger
+!
+
+testNumberLiteral4
+ super testNumberLiteral4.
+ self assert: result isLiteralNode.
+ self assert: result value equals: 123.456.
+ self assert: result value isFloat
+!
+
+testNumberLiteral5
+ super testNumberLiteral5.
+ self assert: result isLiteralNode.
+ self assert: result value equals: 0.
+ self assert: result value isInteger
+!
+
+testNumberLiteral6
+ super testNumberLiteral6.
+ self assert: result isLiteralNode.
+ self assert: result value equals: -0.1.
+ self assert: result value isFloat
+!
+
+testNumberLiteral7
+ super testNumberLiteral7.
+ self assert: result isLiteralNode.
+ self assert: result value equals: -123.
+ self assert: result value isInteger
+!
+
+testNumberLiteral8
+ super testNumberLiteral8.
+ self assert: result isLiteralNode.
+ self assert: result value equals: -123.
+ self assert: result value isInteger
+!
+
+testNumberLiteral9
+ super testNumberLiteral9.
+ self assert: result isLiteralNode.
+ self assert: result value equals: -123.456.
+ self assert: result value isFloat
+!
+
+testSpecialLiteral1
+ super testSpecialLiteral1.
+ self assert: result isLiteralNode.
+ self assert: result value equals: true
+!
+
+testSpecialLiteral2
+ super testSpecialLiteral2.
+ self assert: result isLiteralNode.
+ self assert: result value equals: false
+!
+
+testSpecialLiteral3
+ super testSpecialLiteral3.
+ self assert: result isLiteralNode.
+ self assert: result value equals: nil
+!
+
+testStringLiteral1
+ super testStringLiteral1.
+ self assert: result isLiteralNode.
+ self assert: result value equals: ''
+!
+
+testStringLiteral2
+ super testStringLiteral2.
+ self assert: result isLiteralNode.
+ self assert: result value equals: 'ab'
+!
+
+testStringLiteral3
+ super testStringLiteral3.
+ self assert: result isLiteralNode.
+ self assert: result value equals: 'ab''cd'
+!
+
+testSymbolLiteral1
+ super testSymbolLiteral1.
+ self assert: result isLiteralNode.
+ self assert: result value equals: #foo.
+ self assert: result value isSymbol
+!
+
+testSymbolLiteral2
+ super testSymbolLiteral2.
+ self assert: result isLiteralNode.
+ self assert: result value equals: #+.
+ self assert: result value isSymbol
+!
+
+testSymbolLiteral3
+ super testSymbolLiteral3.
+ self assert: result isLiteralNode.
+ self assert: result value equals: #key:.
+ self assert: result value isSymbol
+!
+
+testSymbolLiteral4
+ super testSymbolLiteral4.
+ self assert: result isLiteralNode.
+ self assert: result value equals: #key:value:.
+ self assert: result value isSymbol
+!
+
+testSymbolLiteral5
+ super testSymbolLiteral5.
+ self assert: result isLiteralNode.
+ self assert: result value equals: #'testing-result'.
+ self assert: result value isSymbol
+!
+
+testSymbolLiteral6
+ super testSymbolLiteral6.
+ PPSmalltalkGrammar allowUnderscoreAssignment
+ ifTrue: [ ^ self ].
+ self assert: result isLiteralNode.
+ self assert: result value equals: #'__gen__binding'.
+ self assert: result value isSymbol
+!
+
+testSymbolLiteral7
+ super testSymbolLiteral7.
+ self assert: result isLiteralNode.
+ self assert: result value equals: #fucker.
+ self assert: result value isSymbol
+!
+
+testSymbolLiteral8
+ super testSymbolLiteral8.
+ self assert: result isLiteralNode.
+ self assert: result value equals: #fucker.
+ self assert: result value isSymbol
+!
+
+testSymbolLiteral9
+ super testSymbolLiteral9.
+ self assert: result isLiteralNode.
+ self assert: result value equals: #fucker.
+ self assert: result value isSymbol
+! !
+
+!PPSmalltalkParserTests methodsFor:'testing-messages'!
+
+testBinaryExpression1
+ super testBinaryExpression1.
+ self assert: result isMessage.
+ self assert: result receiver isLiteralNode.
+ self assert: result receiver value equals: 1.
+ self assert: result arguments size equals: 1.
+ self assert: result arguments first isLiteralNode.
+ self assert: result arguments first value equals: 2
+!
+
+testBinaryExpression2
+ super testBinaryExpression2.
+ self assert: result isMessage.
+ self assert: result receiver isMessage.
+ self assert: result receiver receiver isLiteralNode.
+ self assert: result receiver receiver value equals: 1.
+ self assert: result receiver arguments size equals: 1.
+ self assert: result receiver arguments first isLiteralNode.
+ self assert: result receiver arguments first value equals: 2.
+ self assert: result arguments size equals: 1.
+ self assert: result arguments first isLiteralNode.
+ self assert: result arguments first value equals: 3
+!
+
+testBinaryExpression3
+ super testBinaryExpression3.
+ self assert: result isMessage.
+ self assert: result receiver isLiteralNode.
+ self assert: result receiver value equals: 1.
+ self assert: result selector equals: #//.
+ self assert: result arguments size equals: 1.
+ self assert: result arguments first isLiteralNode.
+ self assert: result arguments first value equals: 2
+!
+
+testBinaryExpression4
+ super testBinaryExpression4.
+ self assert: result isMessage.
+ self assert: result receiver isLiteralNode.
+ self assert: result receiver value equals: 1.
+ self assert: result selector equals: #--.
+ self assert: result arguments size equals: 1.
+ self assert: result arguments first isLiteralNode.
+ self assert: result arguments first value equals: 2
+!
+
+testBinaryExpression5
+ super testBinaryExpression5.
+ self assert: result isMessage.
+ self assert: result receiver isLiteralNode.
+ self assert: result receiver value equals: 1.
+ self assert: result selector equals: #'==>'.
+ self assert: result arguments size equals: 1.
+ self assert: result arguments first isLiteralNode.
+ self assert: result arguments first value equals: 2
+
+ "Created: / 07-10-2014 / 00:22:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+testBinaryMethod1
+ super testBinaryMethod1.
+ self assert: result isMethod.
+ self assert: result selector equals: #+.
+ self assert: result arguments size equals: 1.
+ self assert: result arguments first isVariable.
+ self assert: result arguments first name equals: 'a'.
+ self assert: result body temporaries isEmpty.
+ self assert: result body statements isEmpty
+!
+
+testBinaryMethod2
+ super testBinaryMethod2.
+ self assert: result isMethod.
+ self assert: result selector equals: #+.
+ self assert: result arguments size equals: 1.
+ self assert: result arguments first isVariable.
+ self assert: result arguments first name equals: 'a'.
+ self assert: result body temporaries size equals: 1.
+ self assert: result body statements isEmpty
+!
+
+testBinaryMethod3
+ super testBinaryMethod3.
+ self assert: result isMethod.
+ self assert: result selector equals: #+.
+ self assert: result arguments size equals: 1.
+ self assert: result arguments first isVariable.
+ self assert: result arguments first name equals: 'a'.
+ self assert: result body temporaries isEmpty.
+ self assert: result body statements size equals: 1
+!
+
+testBinaryMethod4
+ super testBinaryMethod4.
+ self assert: result isMethod.
+ self assert: result selector equals: #+.
+ self assert: result arguments size equals: 1.
+ self assert: result arguments first isVariable.
+ self assert: result arguments first name equals: 'a'.
+ self assert: result body temporaries size equals: 1.
+ self assert: result body statements size equals: 1
+!
+
+testBinaryMethod5
+ super testBinaryMethod5.
+ self assert: result isMethod.
+ self assert: result selector equals: #--.
+ self assert: result arguments size equals: 1.
+ self assert: result arguments first isVariable.
+ self assert: result arguments first name equals: 'a'.
+ self assert: result body temporaries isEmpty.
+ self assert: result body statements isEmpty
+!
+
+testCascadeExpression1
+ super testCascadeExpression1.
+ self assert: result isCascade.
+ self assert: result receiver isLiteralNode.
+ self assert: result messages size equals: 2.
+ self assert: result messages first receiver equals: result receiver.
+ self assert: result messages first selector equals: #abs.
+ self assert: result messages second receiver equals: result receiver.
+ self assert: result messages second selector equals: #negated
+!
+
+testCascadeExpression2
+ super testCascadeExpression2.
+ self assert: result isCascade.
+ self assert: result receiver isMessage.
+ self assert: result receiver receiver isLiteralNode.
+ self assert: result receiver receiver value equals: 1.
+ self assert: result receiver selector equals: #abs.
+ self assert: result messages size equals: 3.
+ self assert: result messages first receiver equals: result receiver.
+ self assert: result messages first selector equals: #negated.
+ self assert: result messages second receiver equals: result receiver.
+ self assert: result messages second selector equals: #raisedTo:.
+ self assert: result messages third receiver equals: result receiver.
+ self assert: result messages third selector equals: #negated
+!
+
+testCascadeExpression3
+ super testCascadeExpression3.
+ self assert: result isCascade.
+ self assert: result receiver isLiteralNode.
+ self assert: result receiver value equals: 1.
+ self assert: result messages size equals: 2.
+ self assert: result messages first receiver equals: result receiver.
+ self assert: result messages first selector equals: #+.
+ self assert: result messages first arguments size equals: 1.
+ self assert: result messages second receiver equals: result receiver.
+ self assert: result messages second selector equals: #-.
+ self assert: result messages second arguments size equals: 1
+!
+
+testKeywordExpression1
+ super testKeywordExpression1.
+ self assert: result isMessage.
+ self assert: result receiver isLiteralNode.
+ self assert: result receiver value equals: 1.
+ self assert: result selector equals: #to:.
+ self assert: result arguments size equals: 1.
+ self assert: result arguments first isLiteralNode.
+ self assert: result arguments first value equals: 2
+!
+
+testKeywordExpression2
+ super testKeywordExpression2.
+ self assert: result isMessage.
+ self assert: result receiver isLiteralNode.
+ self assert: result selector equals: #to:by:.
+ self assert: result arguments size equals: 2.
+ self assert: result arguments first isLiteralNode.
+ self assert: result arguments first value equals: 2.
+ self assert: result arguments second isLiteralNode.
+ self assert: result arguments second value equals: 3
+!
+
+testKeywordExpression3
+ super testKeywordExpression3.
+ self assert: result isMessage.
+ self assert: result receiver isLiteralNode.
+ self assert: result selector equals: #to:by:do:.
+ self assert: result arguments size equals: 3.
+ self assert: result arguments first isLiteralNode.
+ self assert: result arguments first value equals: 2.
+ self assert: result arguments second isLiteralNode.
+ self assert: result arguments second value equals: 3.
+ self assert: result arguments third isLiteralNode.
+ self assert: result arguments third value equals: 4
+!
+
+testKeywordMethod1
+ super testKeywordMethod1.
+ self assert: result isMethod.
+ self assert: result selector equals: #to:.
+ self assert: result arguments size equals: 1.
+ self assert: result arguments first isVariable.
+ self assert: result arguments first name equals: 'a'.
+ self assert: result body temporaries isEmpty.
+ self assert: result body statements isEmpty
+!
+
+testKeywordMethod2
+ super testKeywordMethod2.
+ self assert: result isMethod.
+ self assert: result selector equals: #to:do:.
+ self assert: result arguments size equals: 2.
+ self assert: result arguments first isVariable.
+ self assert: result arguments first name equals: 'a'.
+ self assert: result arguments second isVariable.
+ self assert: result arguments second name equals: 'b'.
+ self assert: result body temporaries size equals: 1.
+ self assert: result body statements isEmpty
+!
+
+testKeywordMethod3
+ super testKeywordMethod3.
+ self assert: result isMethod.
+ self assert: result selector equals: #to:do:by:.
+ self assert: result arguments size equals: 3.
+ self assert: result arguments first isVariable.
+ self assert: result arguments first name equals: 'a'.
+ self assert: result arguments second isVariable.
+ self assert: result arguments second name equals: 'b'.
+ self assert: result arguments third isVariable.
+ self assert: result arguments third name equals: 'c'.
+ self assert: result body temporaries isEmpty.
+ self assert: result body statements size equals: 1
+!
+
+testKeywordMethod4
+ super testKeywordMethod4.
+ self assert: result isMethod.
+ self assert: result selector equals: #to:do:by:.
+ self assert: result arguments size equals: 3.
+ self assert: result arguments first isVariable.
+ self assert: result arguments first name equals: 'a'.
+ self assert: result arguments second isVariable.
+ self assert: result arguments second name equals: 'b'.
+ self assert: result arguments third isVariable.
+ self assert: result arguments third name equals: 'c'.
+ self assert: result body temporaries size equals: 1.
+ self assert: result body statements size equals: 1
+!
+
+testUnaryExpression1
+ super testUnaryExpression1.
+ self assert: result isMessage.
+ self assert: result receiver isLiteralNode.
+ self assert: result selector equals: #abs.
+ self assert: result arguments isEmpty
+!
+
+testUnaryExpression2
+ super testUnaryExpression2.
+ self assert: result isMessage.
+ self assert: result receiver isMessage.
+ self assert: result receiver receiver isLiteralNode.
+ self assert: result receiver receiver value equals: 1.
+ self assert: result receiver selector equals: #abs.
+ self assert: result receiver arguments isEmpty.
+ self assert: result selector equals: #negated.
+ self assert: result arguments isEmpty
+!
+
+testUnaryMethod1
+ super testUnaryMethod1.
+ self assert: result isMethod.
+ self assert: result selector equals: #abs.
+ self assert: result arguments isEmpty.
+ self assert: result body temporaries isEmpty.
+ self assert: result body statements isEmpty
+!
+
+testUnaryMethod2
+ super testUnaryMethod2.
+ self assert: result isMethod.
+ self assert: result selector equals: #abs.
+ self assert: result arguments isEmpty.
+ self assert: result body temporaries size equals: 1.
+ self assert: result body statements isEmpty
+!
+
+testUnaryMethod3
+ super testUnaryMethod3.
+ self assert: result isMethod.
+ self assert: result selector equals: #abs.
+ self assert: result arguments isEmpty.
+ self assert: result body temporaries isEmpty.
+ self assert: result body statements size equals: 1
+!
+
+testUnaryMethod4
+ super testUnaryMethod4.
+ self assert: result isMethod.
+ self assert: result selector equals: #abs.
+ self assert: result arguments isEmpty.
+ self assert: result body temporaries size equals: 1.
+ self assert: result body statements size equals: 1
+!
+
+testUnaryMethod5
+ super testUnaryMethod5.
+ self assert: result isMethod.
+ self assert: result selector equals: #abs.
+ self assert: result arguments isEmpty.
+ self assert: result body temporaries size equals: 1.
+ self assert: result body statements isEmpty
+! !
+
+!PPSmalltalkParserTests methodsFor:'testing-pragmas'!
+
+testPragma1
+ super testPragma1.
+ self
+ assert: result pragmas
+ format: #('<foo>' ).
+ self assert: result body temporaries isEmpty.
+ self assert: result body statements isEmpty
+!
+
+testPragma10
+ super testPragma10.
+ self
+ assert: result pragmas
+ format: #('<foo: #bar>' ).
+ self assert: result body temporaries isEmpty.
+ self assert: result body statements isEmpty
+!
+
+testPragma11
+ super testPragma11.
+ self
+ assert: result pragmas
+ format: #('<foo: true>' ).
+ self assert: result body temporaries isEmpty.
+ self assert: result body statements isEmpty
+!
+
+testPragma12
+ super testPragma12.
+ self
+ assert: result pragmas
+ format: #('<foo: false>' ).
+ self assert: result body temporaries isEmpty.
+ self assert: result body statements isEmpty
+!
+
+testPragma13
+ super testPragma13.
+ self
+ assert: result pragmas
+ format: #('<foo: nil>' ).
+ self assert: result body temporaries isEmpty.
+ self assert: result body statements isEmpty
+!
+
+testPragma14
+ super testPragma14.
+ self
+ assert: result pragmas
+ format: #('<foo: #()>' ).
+ self assert: result body temporaries isEmpty.
+ self assert: result body statements isEmpty
+!
+
+testPragma15
+ super testPragma15.
+ self
+ assert: result pragmas
+ format: #('<foo: #()>' ).
+ self assert: result body temporaries isEmpty.
+ self assert: result body statements isEmpty
+!
+
+testPragma16
+ super testPragma16.
+ self
+ assert: result pragmas
+ format: #('< + 1>' ).
+ self assert: result body temporaries isEmpty.
+ self assert: result body statements isEmpty
+!
+
+testPragma2
+ super testPragma2.
+ self
+ assert: result pragmas
+ format: #('<foo>' '<bar>' ).
+ self assert: result body temporaries isEmpty.
+ self assert: result body statements isEmpty
+!
+
+testPragma3
+ super testPragma3.
+ self assert: result pragmas format: #('<foo>').
+ self assert: result body temporaries size equals: 1.
+ self assert: result body statements isEmpty
+!
+
+testPragma4
+ super testPragma4.
+ self assert: result pragmas format: #('<foo>').
+ self assert: result body temporaries size equals: 1.
+ self assert: result body statements isEmpty
+!
+
+testPragma5
+ super testPragma5.
+ self assert: result pragmas format: #('<foo>' '<bar>').
+ self assert: result body temporaries size equals: 1.
+ self assert: result body statements isEmpty
+!
+
+testPragma6
+ super testPragma6.
+ self
+ assert: result pragmas
+ format: #('<foo: 1>' ).
+ self assert: result body temporaries isEmpty.
+ self assert: result body statements isEmpty
+!
+
+testPragma7
+ super testPragma7.
+ self
+ assert: result pragmas
+ format: #('<foo: 1.2>' ).
+ self assert: result body temporaries isEmpty.
+ self assert: result body statements isEmpty
+!
+
+testPragma8
+ super testPragma8.
+ self
+ assert: result pragmas
+ format: #('<foo: ''bar''>' ).
+ self assert: result body temporaries isEmpty.
+ self assert: result body statements isEmpty
+!
+
+testPragma9
+ super testPragma9.
+ self
+ assert: result pragmas
+ format: #('<foo: #bar>' ).
+ self assert: result body temporaries isEmpty.
+ self assert: result body statements isEmpty
+! !
+