compiler/tests/extras/PPCompiledJavaSyntaxTest.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Tue, 12 May 2015 01:33:33 +0100
changeset 460 87a3d30ab570
parent 454 a9cd5ea7cc36
parent 459 4751c407bb40
child 461 5986bf6d7d60
permissions -rw-r--r--
Merge

"{ Package: 'stx:goodies/petitparser/compiler/tests/extras' }"

"{ NameSpace: Smalltalk }"

PPJavaLexiconTest subclass:#PPCompiledJavaSyntaxTest
	instanceVariableNames:''
	classVariableNames:''
	poolDictionaries:''
	category:'PetitCompiler-Extras-Tests-Java'
!

!PPCompiledJavaSyntaxTest class methodsFor:'as yet unclassified'!

resources
    ^ (OrderedCollection with: PPCompiledJavaResource)
        addAll: super resources;
        yourself
! !

!PPCompiledJavaSyntaxTest methodsFor:'accessing'!

context
    ^ PPCContext new
!

parserClass
    ^ Smalltalk at: #PPCompiledJavaSyntax
!

parserInstanceFor: aSymbol
    ^ (Smalltalk at: #PPCompiledJavaSyntax) new startSymbol: aSymbol
! !

!PPCompiledJavaSyntaxTest methodsFor:'testing'!

testAdditiveExpression1

    self parse: 'true'
        rule: #additiveExpression
!

testAdditiveExpression2

    self parse: '3 + 5'
        rule: #additiveExpression
!

testAdditiveExpression3

    self parse: '4 + 8 - 2 + 9'
        rule: #additiveExpression
!

testAndExpression1

    self parse: 'true'
        rule: #andExpression
!

testBlock1

    self parse: '{	}'
        rule: #block
!

testBlock2

    self
        parse:
        '{
            System.out.println("Hello World!!");
 			   		System.out.println("Hello World!!");
        }'
        rule: #block
!

testCompilationUnit1

    self parse: 'package foo;
                public class CU1 {}'
    rule: #compilationUnit
!

testCompilationUnit2

    self parse: 'package foo;
                import foo.Bar;
                public class CU2 {
                }'
    rule: #compilationUnit
!

testCompilationUnit3

    self parse: 'class myfirstjavaprog
{  
    public static void main(String args[])
    {
       System.out.println("Hello World!!");
    }
}'
    rule: #compilationUnit
!

testCompilationUnit4

    self parse: '
                    public class OddEven {
 												private int input;
 										  public static void main(String[] args) {
     										OddEven number = new OddEven();
                            number.showDialog(); }
                    public void showDialog() {
       
    try {
          
        input = Integer.parseInt(JOptionPane.showInputDialog("Please Enter A Number"));
        calculate();
    } catch (NumberFormatException e) {
            
        System.err.println("ERROR: Invalid input. Please type in a numerical value.");
    }
    }

private void calculate() {
    if (input % 2 == 0) {
        System.out.println("Even");
    } else {
        System.out.println("Odd");
    }
    }
                    }'
    rule: #compilationUnit
!

testCompilationUnit5

    self parse: 'class myfirstjavaprog
{  

        public myfirstjavaprog() {
            
        }
    
    public static void main(String args[])
    {
       System.out.println("Hello World!!");
    }
}'
    rule: #compilationUnit
!

testConditionalAndExpression1

    self parse: 'true'
        rule: #conditionalAndExpression
!

testConditionalOrExpression1

    self parse: 'true'
        rule: #conditionalOrExpression
!

testEqualityExpression1

    self 
        parse: 'true'
        rule: #equalityExpression
!

testExclusiveOrExpression1

    self parse: 'true'
        rule: #exclusiveOrExpression
!

testExpression1

    self parse: '1 + 2'
        rule: #expression
!

testExpression2

    self parse: 'true'
        rule: #expression
!

testExpression3

    self parse: 'a.method()'
        rule: #expression
!

testExpression4

    self parse: 'a'
        rule: #expression
!

testExpression5

    self parse: 'a += 5'
        rule: #expression
!

testFormalParameters1

    self 
        parse: '
    (String s, Object parameterType)'
    rule: #formalParameters
!

testFormalParameters2

    self 
        parse: '
    (Object ... parameterType)'
    rule: #formalParameters
!

testFormalParameters3

    self 
        parse: '(String name, Class<?>... parameterTypes)'
    rule: #formalParameters
!

testFormalParameters4

    self 
        parse: '(int one, int two, int three, int four)'
        rule: #formalParameters
!

testFormalParameters5

    self 
        parse: '()'
        rule: #formalParameters
!

testIdentifier

    self parse: 'method'
        rule: #identifier
!

testIfStatement1

    self parse: 'if (true) {}'
        rule: #ifStatement
!

testIfStatement2

    self parse: 'if (true) {} else {}'
        rule: #ifStatement
!

testIfStatement3

    self parse: '
    if (true) 
        {int a = 0; a = 1;}
    else
        {return false;}'
        rule: #ifStatement
!

testIfStatement4

    self parse: 'if (true) a = 0;'
        rule: #ifStatement
!

testIfStatement5

    self parse: 'if (a < 4) {}'
        rule: #ifStatement
!

testImportDeclaration1

    self parse: 'import foo.Top;'
        rule: #importDeclaration
!

testImportDeclaration2

    self parse: 'import foo.Top2.*;'
        rule: #importDeclaration
!

testInclusiveOrExpression1

    self parse: 'true'
        rule: #inclusiveOrExpression
!

testInstanceofExpression1

    self 
        parse: 'true'
        rule: #instanceofExpression
!

testJavaToken

    self parse: 'false' rule: #literal.
    self assert: (result isKindOf: PPJavaToken).
    self assert: (result inputValue = 'false').
!

testLocalVariableDeclaration1

    self parse: 'Type name'
        rule: #localVariableDeclaration
!

testLocalVariableDeclaration2

    self parse: 'Type name = value, name2'
        rule: #localVariableDeclaration
!

testLocalVariableDeclarationStatement1

    self parse: 'int i = 5;'
        rule: #localVariableDeclarationStatement
!

testLocalVariableDeclarationStatement2

    self parse: 'int i, j = 6;'
        rule: #localVariableDeclarationStatement
!

testLocalVariableDeclarationStatement3

    self parse: 'Srting str, in, g;'
        rule: #localVariableDeclarationStatement
!

testMethodDeclaration3

    self 
        parse: '
    public void getMethod(String s, Object ... parameterType)
    {
    }'
    rule: #methodDeclaration
!

testMethodDeclaration4

    self 
        parse: '
    public void getMethod(String s, int o)
    {
    }'
    rule: #methodDeclaration
!

testMultiplicativeExpression1

    self parse: 'true'
        rule: #multiplicativeExpression
!

testMultiplicativeExpression2

    self parse: '3 * 5'
        rule: #multiplicativeExpression
!

testMultiplicativeExpression3

    self parse: '4 * 8 / 2 * 9'
        rule: #multiplicativeExpression
!

testNormalParameterDecl1

    self parse: 'final int integers[]'
        rule: #normalParameterDecl
!

testNormalParameterDecl2

    self parse: 'String str'
        rule: #normalParameterDecl
!

testPackageDeclaration
    self 
        parse: 'package java.util;'
        rule: #packageDeclaration
!

testPackageDeclaration1

    self parse: 'package foo;'
        rule: #packageDeclaration
!

testPackageDeclaration2

    self parse: 'package foo.Bar;'
        rule: #packageDeclaration
!

testPackageDeclaration3

    self fail: 'package ;'
        rule: #packageDeclaration
!

testPrimary1

    self 
        parse: 'true'
        rule: #primary
!

testPrimary2

    self 
        parse: '"Java string"'
        rule: #primary
!

testPrimaryWithselectors1

    self 
        parse: 'true'
        rule: #primaryWithselectors
!

testQualifiedName1

    self parse: 'a.a'
        rule: #qualifiedName
!

testRelationalExpression1

    self parse: 'true'
        rule: #relationalExpression
!

testRelationalExpression2

    self parse: '3 > 5'
        rule: #relationalExpression
!

testReturnStatement1

    self parse: 'return true;'
        rule: #returnStatement
!

testReturnStatement2

    self parse: 'return;'
        rule: #returnStatement
!

testShiftExpression1

    self parse: 'true'
        rule: #shiftExpression
!

testStatement1

    self parse: 'System.out.println("Hello World!!");'
        rule: #statement
!

testStatement2

    self parse: 'return true;'
        rule: #statement
!

testStatement3

    self parse: '{}'
        rule: #statement
!

testUnaryExpression1

    self parse: 'a'
        rule: #unaryExpression
!

testUnaryExpression2

    self parse: 'true'
        rule: #unaryExpression
!

testUnaryExpressionNotPlusMinus1

    self 
        parse: 'true'
        rule: #unaryExpressionNotPlusMinus
!

testVariableDeclarator1

    self parse: 'var'
        rule: #variableDeclarator
!

testVariableDeclarator2

    self parse: 'var[][]'
        rule: #variableDeclarator
!

testVariableDeclarator3

    self parse: 'var = a.methd()'
        rule: #variableDeclarator
!

testWhileStatement1

    self parse: 'while (true) object.executeMethod();'
        rule: #whileStatement
!

testWhileStatement2

    self parse: 'while (3>2) {block; of; statements;}'
        rule: #whileStatement
! !

!PPCompiledJavaSyntaxTest methodsFor:'testing-classes'!

testClassDeclaration1

    self parse: '//comment
    class myfirstjavaprog
{  
    public static void main(String args[])
    {
       System.out.println("Hello World!!");
    }
}'
    rule: #classDeclaration
!

testMethodDeclaration1

    self 
        parse: 'public void aMethod() {	}'
            rule: #methodDeclaration
!

testMethodDeclaration2

    self 
        parse: 'public aMethod() {	}'
            rule: #methodDeclaration
! !

!PPCompiledJavaSyntaxTest class methodsFor:'documentation'!

version_HG

    ^ '$Changeset: <not expanded> $'
! !