--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/parsers/java/PPJavaParserTest.st Tue Apr 21 14:57:16 2015 +0100
@@ -0,0 +1,733 @@
+"{ Encoding: utf8 }"
+
+"{ Package: 'stx:goodies/petitparser/parsers/java' }"
+
+"{ NameSpace: Smalltalk }"
+
+PPJavaSyntaxTest subclass:#PPJavaParserTest
+ instanceVariableNames:''
+ classVariableNames:''
+ poolDictionaries:''
+ category:'PetitJava-Tests'
+!
+
+PPJavaParserTest comment:''
+!
+
+!PPJavaParserTest methodsFor:'accessing'!
+
+parserClass
+ ^ PPJavaParser
+! !
+
+!PPJavaParserTest methodsFor:'as yet unclassified'!
+
+testCharacterLiteral1
+ super testCharacterLiteral1.
+ self assert: result class equals: PJCharacterLiteralNode.
+ self assert: result literalValue equals: 'a'
+!
+
+testCharacterLiteral2
+ super testCharacterLiteral2.
+ self assert: result class equals: PJCharacterLiteralNode.
+ self assert: result literalValue equals: '%'
+!
+
+testCharacterLiteral3
+ super testCharacterLiteral3.
+ self assert: result class equals: PJCharacterLiteralNode.
+ self assert: result literalValue equals: '\t'
+!
+
+testCharacterLiteral4
+ super testCharacterLiteral4.
+ self assert: result class equals: PJCharacterLiteralNode.
+ self assert: result literalValue equals: '\\'
+!
+
+testCharacterLiteral5
+ super testCharacterLiteral5.
+ self assert: result class equals: PJCharacterLiteralNode.
+ self assert: result literalValue equals: '\'''
+!
+
+testCharacterLiteral8
+ super testCharacterLiteral8.
+ self assert: result class equals: PJCharacterLiteralNode.
+ self assert: result literalValue equals: '\177'
+!
+
+testComment1
+ super testComment1.
+ self assert: result class equals: PJEndOfLineCommentsNode.
+ self assert: (result comment ) equals: '' .
+!
+
+testComment2
+ super testComment2.
+ self assert: result class equals: PJEndOfLineCommentsNode.
+ self assert: (result comment ) equals: 'comment' .
+
+
+!
+
+testComment3
+ super testComment3.
+ self assert: result class equals: PJEndOfLineCommentsNode .
+ self assert: (result comment ) equals: ' comment' .
+!
+
+testComment4
+ super testComment4.
+ self assert: result class equals: PJTraditionalCommentsNode.
+ self assert: (result comment) equals: ' comment ' .
+!
+
+testComment6
+ super testComment6.
+ self assert: result class equals: PJTraditionalCommentsNode.
+ self assert: (result comment) equals: ' this comment /* // /** ends here: ' .
+
+!
+
+testComment7
+ super testComment7.
+ self assert: result class equals: PJTraditionalCommentsNode .
+ self assert: (result comment) equals: '* * @param args * @return void '.
+!
+
+testSeparator1
+super testSeparator1.
+ self assert: result class equals: PJSeparatorNode .
+ self assert: result separatorValue equals: '{' .
+! !
+
+!PPJavaParserTest methodsFor:'testing'!
+
+testBlock1
+ super testBlock1.
+ self assert: result class equals: PJBlockNode.
+ self assert: result statements isEmpty
+!
+
+testBlock2
+ super testBlock2.
+ self assert: result class equals: PJBlockNode.
+ self assert: result statements size equals: 2
+!
+
+testFloatLiteral1
+ super testFloatLiteral1.
+ self assert: result class equals: PJFloatLiteralNode.
+ self assert: result literalValue equals: '1e1'.
+ self assert: result isFloat
+!
+
+testFloatLiteral10
+ super testFloatLiteral10.
+ self assert: result class equals: PJFloatLiteralNode.
+ self assert: result literalValue equals: '0.0'.
+ self assert: result isFloat not.
+!
+
+testFloatLiteral11
+ super testFloatLiteral11.
+ self assert: result class equals: PJFloatLiteralNode.
+ self assert: result literalValue equals: '3.14'.
+ self assert: result isFloat not.
+!
+
+testFloatLiteral12
+ super testFloatLiteral12.
+ self assert: result class equals: PJFloatLiteralNode.
+ self assert: result literalValue equals: '1e-9d'.
+ self assert: result isFloat not.
+!
+
+testFloatLiteral13
+ super testFloatLiteral13.
+ self assert: result class equals: PJFloatLiteralNode.
+ self assert: result literalValue equals: '1e137'.
+ self assert: result isFloat not.
+!
+
+testFloatLiteral2
+ super testFloatLiteral2.
+ self assert: result class equals: PJFloatLiteralNode.
+ self assert: result literalValue equals: '2.'.
+ self assert: result isFloat
+!
+
+testFloatLiteral3
+ super testFloatLiteral3.
+ self assert: result class equals: PJFloatLiteralNode.
+ self assert: result literalValue equals: '.3'.
+ self assert: result isFloat
+!
+
+testFloatLiteral4
+ super testFloatLiteral4.
+ self assert: result class equals: PJFloatLiteralNode.
+ self assert: result literalValue equals: '0'.
+ self assert: result isFloat
+!
+
+testFloatLiteral5
+ super testFloatLiteral5.
+ self assert: result class equals: PJFloatLiteralNode.
+ self assert: result literalValue equals: '3.14'.
+ self assert: result isFloat
+!
+
+testFloatLiteral6
+ super testFloatLiteral6.
+ self assert: result class equals: PJFloatLiteralNode.
+ self assert: result literalValue equals: '6.022137e+23'.
+ self assert: result isFloat
+!
+
+testFloatLiteral7
+ super testFloatLiteral7.
+ self assert: result class equals: PJFloatLiteralNode.
+ self assert: result literalValue equals: '1e1'.
+ self assert: result isFloat not.
+!
+
+testFloatLiteral8
+ super testFloatLiteral8.
+ self assert: result class equals: PJFloatLiteralNode.
+ self assert: result literalValue equals: '2.'.
+ self assert: result isFloat not.
+!
+
+testFloatLiteral9
+ super testFloatLiteral9.
+ self assert: result class equals: PJFloatLiteralNode.
+ self assert: result literalValue equals: '.3'.
+ self assert: result isFloat not.
+!
+
+testMethodDeclaration3
+ super testMethodDeclaration3.
+ self assert: result class equals: PJMethodDeclarationNode.
+ self assert: result body class equals: PJBlockNode
+!
+
+testMethodDeclaration4
+ super testMethodDeclaration4.
+ self assert: result class equals: PJMethodDeclarationNode.
+ self assert: result body class equals: PJBlockNode.
+ self assert: result parameters size equals: 2
+!
+
+testNormalParameterDecl1
+ super testNormalParameterDecl1.
+ self assert: result class equals: PJParameterDeclaratorNode.
+ self assert: result identifier class equals: PJIdentifierNode.
+ self assert: result arrayLevel equals: 1.
+ self assert: result modifiers size equals: 1
+!
+
+testNormalParameterDecl2
+ super testNormalParameterDecl2.
+ self assert: result class equals: PJParameterDeclaratorNode.
+ self assert: result identifier class equals: PJIdentifierNode.
+ self assert: result arrayLevel equals: 0.
+ self assert: result modifiers size equals: 0
+!
+
+testStatement1
+ super testStatement1.
+ self assert: result class equals: PJExpressionStatementNode
+!
+
+testStatement3
+ super testStatement3.
+ self assert: result class equals: PJBlockNode.
+ self assert: result statements isEmpty
+!
+
+testWhileStatement1
+ super testWhileStatement1.
+ self assert: result class equals: PJWhileStatementNode.
+ self assert: result expression class equals: PJBooleanLiteralNode.
+!
+
+testWhileStatement2
+ super testWhileStatement2.
+ self assert: result class equals: PJWhileStatementNode.
+ self assert: result statement class equals: PJBlockNode
+! !
+
+!PPJavaParserTest methodsFor:'testing-classes'!
+
+testLiteral13
+ super testLiteral13.
+ self assert: result class equals: PJStringLiteralNode
+!
+
+testMethodDeclaration1
+ super testMethodDeclaration1.
+ self assert: result class equals: PJMethodDeclarationNode.
+ self assert: result body class equals: PJBlockNode
+!
+
+testMethodDeclaration2
+ super testMethodDeclaration2.
+ self assert: result class equals: PJConstructorDeclarationNode.
+ self assert: result statements isEmpty
+! !
+
+!PPJavaParserTest methodsFor:'testing-literals'!
+
+testAdditiveExpression1
+ super testAdditiveExpression1.
+ self assert: result class equals: PJBooleanLiteralNode
+!
+
+testAdditiveExpression2
+ super testAdditiveExpression2.
+ self assert: result class equals: PJInfixOperationNode.
+ self assert: result left class equals: PJIntegerLiteralNode.
+ self assert: result left literalValue equals: 3.
+ self assert: result operator equals: #+.
+ self assert: result right class equals: PJIntegerLiteralNode.
+ self assert: result right literalValue equals: 5.
+!
+
+testAdditiveExpression3
+ super testAdditiveExpression3.
+ self assert: result class equals: PJInfixOperationNode.
+
+ self assert: result left left left class equals: PJIntegerLiteralNode.
+ self assert: result left left left literalValue equals: 4.
+
+ self assert: result left left right class equals: PJIntegerLiteralNode.
+ self assert: result left left right literalValue equals: 8.
+ self assert: result left left operator equals: #+.
+
+ self assert: result left right class equals: PJIntegerLiteralNode.
+ self assert: result left right literalValue equals: 2.
+ self assert: result left operator equals: #-.
+
+ self assert: result right class equals: PJIntegerLiteralNode.
+ self assert: result right literalValue equals: 9.
+ self assert: result operator equals: #+.
+
+!
+
+testAndExpression1
+ super testAndExpression1.
+ self assert: result class equals: PJBooleanLiteralNode
+!
+
+testBooleanLiteral1
+ super testBooleanLiteral1.
+ self assert: result class equals: PJBooleanLiteralNode.
+ self assert: result booleanValue equals: true
+!
+
+testBooleanLiteral2
+ super testBooleanLiteral2.
+ self assert: result class equals: PJBooleanLiteralNode.
+ self assert: result booleanValue equals: false
+!
+
+testConditionalAndExpression1
+ super testConditionalAndExpression1.
+ self assert: result class equals: PJBooleanLiteralNode
+!
+
+testConditionalOrExpression1
+ super testConditionalOrExpression1.
+ self assert: result class equals: PJBooleanLiteralNode
+!
+
+testEqualityExpression1
+ super testEqualityExpression1.
+ self assert: result class equals: PJBooleanLiteralNode
+!
+
+testExclusiveOrExpression1
+ super testExclusiveOrExpression1.
+ self assert: result class equals: PJBooleanLiteralNode
+!
+
+testExpression2
+ super testExpression2.
+ self assert: result class equals: PJBooleanLiteralNode
+!
+
+testExpression4
+ super testExpression4.
+ self assert: result class equals: PJIdentifierNode
+!
+
+testExpression5
+ super testExpression5.
+ self assert: result class equals: PJInfixOperationNode.
+ self assert: result left class equals: PJIdentifierNode.
+ self assert: result operator equals: #+=.
+ self assert: result right class equals: PJIntegerLiteralNode
+!
+
+testFormalParameters1
+ super testFormalParameters1.
+ self assert: (result isKindOf: Collection).
+ self assert: result size equals: 2
+!
+
+testFormalParameters4
+ super testFormalParameters4.
+ self assert: (result isKindOf: Collection).
+ self assert: result size equals: 4
+!
+
+testFormalParameters5
+ super testFormalParameters5.
+ self assert: result isNil
+!
+
+testIdentifier1
+ super testIdentifier1.
+ self assert: result class equals: PJIdentifierNode.
+ self assert: result name equals: 'String'
+
+!
+
+testIdentifier2
+ super testIdentifier2.
+ self assert: result class equals: PJIdentifierNode.
+ self assert: result name equals: 'i3'
+
+!
+
+testIdentifier3
+ super testIdentifier3.
+ self assert: result class equals: PJIdentifierNode.
+ self assert: result name equals: 'αρετη'
+
+!
+
+testIdentifier4
+ super testIdentifier4.
+ self assert: result class equals: PJIdentifierNode.
+ self assert: result name equals: 'MAX_VALUE'
+
+!
+
+testIdentifier5
+ super testIdentifier5.
+ self assert: result class equals: PJIdentifierNode.
+ self assert: result name equals: 'isLetterOrDigit'
+!
+
+testInclusiveOrExpression1
+ super testInclusiveOrExpression1.
+ self assert: result class equals: PJBooleanLiteralNode
+!
+
+testInstanceofExpression1
+ super testInstanceofExpression1.
+ self assert: result class equals: PJBooleanLiteralNode
+!
+
+testLiteral2
+ super testLiteral2.
+ self assert: result class equals: PJBooleanLiteralNode
+!
+
+testLocalVariableDeclarationStatement1
+ super testLocalVariableDeclarationStatement1.
+ self assert: result class equals: PJLocalVariableDeclarationStatementNode.
+ self assert: result type notNil.
+ self assert: result declarators size equals: 1.
+!
+
+testLocalVariableDeclarationStatement2
+ super testLocalVariableDeclarationStatement2.
+ self assert: result class equals: PJLocalVariableDeclarationStatementNode.
+ self assert: result type notNil.
+ self assert: result declarators size equals: 2.
+!
+
+testLocalVariableDeclarationStatement3
+ super testLocalVariableDeclarationStatement3.
+ self assert: result class equals: PJLocalVariableDeclarationStatementNode.
+ self assert: result type notNil.
+ self assert: result declarators size equals: 3.
+!
+
+testMultiplicativeExpression1
+ super testMultiplicativeExpression1.
+ self assert: result class equals: PJBooleanLiteralNode
+!
+
+testMultiplicativeExpression2
+ super testMultiplicativeExpression2.
+ self assert: result class equals: PJInfixOperationNode.
+ self assert: result left class equals: PJIntegerLiteralNode.
+ self assert: result left literalValue equals: 3.
+ self assert: result operator equals: #*.
+ self assert: result right class equals: PJIntegerLiteralNode.
+ self assert: result right literalValue equals: 5.
+!
+
+testMultiplicativeExpression3
+ super testMultiplicativeExpression3.
+ self assert: result class equals: PJInfixOperationNode.
+
+ self assert: result left left left class equals: PJIntegerLiteralNode.
+ self assert: result left left left literalValue equals: 4.
+
+ self assert: result left left right class equals: PJIntegerLiteralNode.
+ self assert: result left left right literalValue equals: 8.
+ self assert: result left left operator equals: #*.
+
+ self assert: result left right class equals: PJIntegerLiteralNode.
+ self assert: result left right literalValue equals: 2.
+ self assert: result left operator equals: #/.
+
+ self assert: result right class equals: PJIntegerLiteralNode.
+ self assert: result right literalValue equals: 9.
+ self assert: result operator equals: #*.
+
+!
+
+testNullLiteral1
+
+ super testNullLiteral1
+.
+ self assert: result class equals: PJNullLiteralNode .
+ self assert: result literalValue equals: 'null'
+!
+
+testPrimary1
+ super testPrimary1.
+ self assert: result class equals: PJBooleanLiteralNode
+!
+
+testPrimary2
+ super testPrimary2.
+ self assert: result class equals: PJStringLiteralNode
+!
+
+testPrimaryWithselectors1
+ super testPrimaryWithselectors1.
+ self assert: result class equals: PJBooleanLiteralNode
+!
+
+testPrimaryWithselectors2
+ super testPrimaryWithselectors2.
+ "
+ JK: Seems the functionality is not finished or broken
+ see rule primaryWithselectors, calling #object: that throws DNU
+ "
+ "self assert: result size = 2."
+!
+
+testRelationalExpression1
+ super testRelationalExpression1.
+ self assert: result class equals: PJBooleanLiteralNode
+!
+
+testRelationalExpression2
+ super testRelationalExpression2.
+ self assert: result class equals: PJInfixOperationNode
+!
+
+testReturnStatement1
+ super testReturnStatement1.
+ self assert: result class equals: PJReturnStatementNode.
+ self assert: (result expression isKindOf: PJExpressionNode)
+!
+
+testReturnStatement2
+ super testReturnStatement2.
+ self assert: result class equals: PJReturnStatementNode.
+ self assert: result expression isNil
+!
+
+testShiftExpression1
+ super testShiftExpression1.
+ self assert: result class equals: PJBooleanLiteralNode
+!
+
+testStringLiteral1
+ super testStringLiteral1.
+ self assert: result class equals: PJStringLiteralNode.
+ self assert: result literalValue equals: String empty
+!
+
+testStringLiteral11
+ super testStringLiteral11.
+ self assert: result class equals: PJStringLiteralNode.
+ self assert: result literalValue equals: 'null'
+!
+
+testStringLiteral2
+ super testStringLiteral2.
+ self assert: result class equals: PJStringLiteralNode.
+ self assert: result literalValue equals: '\"'
+!
+
+testStringLiteral3
+ super testStringLiteral3.
+ self assert: result class equals: PJStringLiteralNode.
+ self assert: result literalValue equals: 'This is a Java string'
+!
+
+testUnaryExpression2
+ super testUnaryExpression2.
+ self assert: result class equals: PJBooleanLiteralNode
+!
+
+testUnaryExpressionNotPlusMinus1
+ super testUnaryExpressionNotPlusMinus1.
+ self assert: result class equals: PJBooleanLiteralNode
+!
+
+testVariableDeclarator1
+ super testVariableDeclarator1.
+ self assert: result class equals: PJVariableDeclaratorNode.
+ self assert: result variable class equals: PJIdentifierNode.
+ self assert: result arrayLevel equals: 0.
+ self assert: result initializer isNil
+!
+
+testVariableDeclarator2
+ super testVariableDeclarator2.
+ self assert: result class equals: PJVariableDeclaratorNode.
+ self assert: result variable class equals: PJIdentifierNode.
+ self assert: result arrayLevel equals: 2.
+ self assert: result initializer isNil
+!
+
+testVariableDeclarator3
+ super testVariableDeclarator3.
+ self assert: result class equals: PJVariableDeclaratorNode.
+ self assert: result variable class equals: PJIdentifierNode.
+ self assert: result arrayLevel equals: 0.
+ self assert: result initializer notNil
+! !
+
+!PPJavaParserTest methodsFor:'testing-literals-integer'!
+
+testIfStatement1
+ super testIfStatement1.
+ self assert: result class equals: PJIfStatementNode.
+ self assert: result condition class equals: PJBooleanLiteralNode.
+ self assert: result thenPart class equals: PJBlockNode.
+ self assert: result elsePart isNil
+!
+
+testIfStatement2
+ super testIfStatement2.
+ self assert: result class equals: PJIfStatementNode.
+ self assert: result condition class equals: PJBooleanLiteralNode.
+ self assert: result thenPart class equals: PJBlockNode.
+ self assert: result elsePart class equals: PJBlockNode.
+!
+
+testIfStatement3
+ super testIfStatement3.
+ self assert: result class equals: PJIfStatementNode.
+ self assert: result condition class equals: PJBooleanLiteralNode.
+ self assert: result thenPart class equals: PJBlockNode.
+ self assert: result elsePart class equals: PJBlockNode.
+!
+
+testIfStatement4
+ super testIfStatement4.
+ self assert: result class equals: PJIfStatementNode.
+ self assert: result condition class equals: PJBooleanLiteralNode.
+ self assert: result thenPart class equals: PJExpressionStatementNode.
+ self assert: result elsePart isNil
+!
+
+testIfStatement5
+ super testIfStatement5.
+ self assert: result class equals: PJIfStatementNode.
+ self assert: result condition class equals: PJInfixOperationNode.
+ self assert: result thenPart class equals: PJBlockNode.
+ self assert: result elsePart isNil
+!
+
+testIntegerLiteral1
+ super testIntegerLiteral1.
+ self assert: result class equals: PJIntegerLiteralNode.
+ self assert: result literalValue equals: 0.
+ self assert: result isLong not
+!
+
+testIntegerLiteral10
+ super testIntegerLiteral10.
+ self assert: result class equals: PJIntegerLiteralNode.
+ self assert: result literalValue equals: 1996.
+ self assert: result isLong not
+!
+
+testIntegerLiteral11
+ super testIntegerLiteral11.
+ self assert: result class equals: PJIntegerLiteralNode.
+ self assert: result literalValue equals: 16711935.
+ self assert: result isLong not
+!
+
+testIntegerLiteral2
+ super testIntegerLiteral2.
+ self assert: result class equals: PJIntegerLiteralNode.
+ self assert: result literalValue equals: 0.
+ self assert: result isLong
+!
+
+testIntegerLiteral3
+ super testIntegerLiteral3.
+ self assert: result class equals: PJIntegerLiteralNode.
+ self assert: result literalValue equals: 511.
+ self assert: result isLong
+!
+
+testIntegerLiteral4
+ super testIntegerLiteral4.
+ self assert: result class equals: PJIntegerLiteralNode.
+ self assert: result literalValue equals: 4294967296.
+ self assert: result isLong
+!
+
+testIntegerLiteral5
+ super testIntegerLiteral5.
+ self assert: result class equals: PJIntegerLiteralNode.
+ self assert: result literalValue equals: 2147483648.
+ self assert: result isLong
+!
+
+testIntegerLiteral6
+ super testIntegerLiteral6.
+ self assert: result class equals: PJIntegerLiteralNode.
+ self assert: result literalValue equals: 49328.
+ self assert: result isLong
+!
+
+testIntegerLiteral7
+ super testIntegerLiteral7.
+ self assert: result class equals: PJIntegerLiteralNode.
+ self assert: result literalValue equals: 2.
+ self assert: result isLong not
+!
+
+testIntegerLiteral8
+ super testIntegerLiteral8.
+ self assert: result class equals: PJIntegerLiteralNode.
+ self assert: result literalValue equals: 250.
+ self assert: result isLong not
+!
+
+testIntegerLiteral9
+ super testIntegerLiteral9.
+ self assert: result class equals: PJIntegerLiteralNode.
+ self assert: result literalValue equals: 3671771902.
+ self assert: result isLong not
+! !
+