/*
* Copyright 2014 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.kie.workbench.common.services.datamodeller.parser;
import org.junit.Test;
import org.kie.workbench.common.services.datamodeller.parser.descr.*;
import org.kie.workbench.common.services.datamodeller.parser.util.ParserUtil;
import java.util.ArrayList;
import java.util.List;
import static org.junit.Assert.*;
import static org.kie.workbench.common.services.datamodeller.parser.ParserAssert.assertEqualsFieldDeclaration;
public class FieldParsing1Test extends JavaParserBaseTest {
private List<FieldDescr> expectedFields = new ArrayList<FieldDescr>( );
private List<String> fieldSentences = new ArrayList<String>( );
public FieldParsing1Test( ) {
super( "FieldParsing1.java" );
init( );
}
@Test
public void testFieldSentencesReading( ) {
try {
assertClass( );
List<FieldDescr> fields = parser.getFileDescr( ).getClassDescr( ).getFields( );
assertEquals( fieldSentences.size( ), fields.size( ) );
//test field definition sentences
int i = 0;
for ( String fieldSentence : fieldSentences ) {
assertEquals( fieldSentences.get( i ), ParserUtil.readElement( buffer, fields.get( i ) ) );
i++;
}
} catch ( Exception e ) {
e.printStackTrace( );
fail( "Test failed: " + e.getMessage( ) );
}
}
@Test
public void testClassFields( ) {
try {
assertClass( );
List<FieldDescr> fields = parser.getFileDescr( ).getClassDescr( ).getFields( );
for ( int i = 0; i < expectedFields.size( ); i++ ) {
assertEqualsFieldDeclaration( buffer, expectedFields.get( i ), fields.get( i ) );
}
} catch ( Exception e ) {
e.printStackTrace( );
fail( "Test failed" );
}
}
@Test
public void testFieldParsingMode( ) {
try {
JavaParser parser;
int i = 0;
for ( String fieldSentence : fieldSentences ) {
parser = JavaParserFactory.newParser( fieldSentence, JavaParserBase.ParserMode.PARSE_FIELD );
parser.fieldDeclaration( );
assertNotNull( parser.getFieldDescr( ) );
assertEqualsFieldDeclaration( new StringBuffer( fieldSentence ), expectedFields.get( i ), parser.getFieldDescr( ) );
i++;
}
} catch ( Exception e ) {
e.printStackTrace( );
fail( "Test failed: " + e.getMessage( ) );
}
}
private void init( ) {
fieldSentences = new ArrayList<String>( );
fieldSentences.add( "public String field1;" );
fieldSentences.add( "public static String field2 ;" );
fieldSentences.add( "public static final Integer FIELD3 = new Integer(\"3\") ;" );
fieldSentences.add( "transient boolean field4;" );
fieldSentences.add( "protected List<String> field5;" );
fieldSentences.add( "protected static List<List<String>> field6 = new ArrayList<List<String>>();" );
fieldSentences.add( "public String[] field7 ;" );
fieldSentences.add( "public static java.lang.String field8[] = new String[] {\"value1\", \"value2\" } ;" );
fieldSentences.add( "private static String field9 [][][];" );
fieldSentences.add( "protected List<String>[] field10 = new List[] { new ArrayList<String>(), new ArrayList<String>() };" );
fieldSentences.add( "protected int field11 = 11 ;" );
fieldSentences.add( "protected char field12 = 12, field13 = 13 ;" );
fieldSentences.add( "Boolean field14 = false, field15=true, field16 = !true ;" );
FieldDescr fieldDeclaration = new FieldDescr( );
VariableDeclarationDescr var;
TypeDescr type;
VariableDeclarationDescr variableDecl;
//field1
//public String field1;
fieldDeclaration.setModifiers( new ModifierListDescr( ) );
fieldDeclaration.addModifier( new ModifierDescr( null, -1, -1, "public" ) );
fieldDeclaration.setType( new TypeDescr( null, -1, -1 ) );
fieldDeclaration.getType( ).setClassOrInterfaceType( new ClassOrInterfaceTypeDescr( "String", -1, -1 ) );
variableDecl = new VariableDeclarationDescr( );
variableDecl.setIdentifier( new IdentifierDescr( "field1", -1, -1, -1 ) );
fieldDeclaration.addVariableDeclaration( variableDecl );
fieldDeclaration.setEndSemiColon( new JavaTokenDescr( ElementDescriptor.ElementType.JAVA_SEMI_COLON, ";", -1, -1, -1, -1 ) );
expectedFields.add( fieldDeclaration );
//field2
//public static String field2 ;
fieldDeclaration = new FieldDescr( );
fieldDeclaration.setModifiers( new ModifierListDescr( ) );
fieldDeclaration.addModifier( new ModifierDescr( null, -1, -1, "public" ) );
fieldDeclaration.addModifier( new ModifierDescr( null, -1, -1, "static" ) );
fieldDeclaration.setType( new TypeDescr( null, -1, -1 ) );
fieldDeclaration.getType( ).setClassOrInterfaceType( new ClassOrInterfaceTypeDescr( "String", -1, -1 ) );
variableDecl = new VariableDeclarationDescr( );
variableDecl.setIdentifier( new IdentifierDescr( "field2", -1, -1, -1 ) );
fieldDeclaration.addVariableDeclaration( variableDecl );
expectedFields.add( fieldDeclaration );
//field3
//public static final Integer FIELD3 = new Integer("3") ;
fieldDeclaration = new FieldDescr( );
fieldDeclaration.setModifiers( new ModifierListDescr( ) );
fieldDeclaration.addModifier( new ModifierDescr( null, -1, -1, "public" ) );
fieldDeclaration.addModifier( new ModifierDescr( null, -1, -1, "static" ) );
fieldDeclaration.addModifier( new ModifierDescr( null, -1, -1, "final" ) );
fieldDeclaration.setType( new TypeDescr( null, -1, -1 ) );
fieldDeclaration.getType( ).setClassOrInterfaceType( new ClassOrInterfaceTypeDescr( "Integer", -1, -1 ) );
//fieldDeclaration.addVariableDeclaration(new VariableDeclarationDescr(null, -1, -1, "FIELD3", new VariableInitializerDescr(null, -1, -1, "new Integer(\"3\")")));
variableDecl = new VariableDeclarationDescr( );
variableDecl.setIdentifier( new IdentifierDescr( "FIELD3", -1, -1, -1 ) )
.setVariableInitializer( new VariableInitializerDescr( null, -1, -1, "new Integer(\"3\")" ) );
fieldDeclaration.addVariableDeclaration( variableDecl );
expectedFields.add( fieldDeclaration );
//field4
//"transient boolean field4;"
fieldDeclaration = new FieldDescr( );
fieldDeclaration.setModifiers( new ModifierListDescr( ) );
fieldDeclaration.addModifier( new ModifierDescr( null, -1, -1, "transient" ) );
fieldDeclaration.setType( new TypeDescr( null, -1, -1 ) );
fieldDeclaration.getType( ).setPrimitiveType( new PrimitiveTypeDescr( null, -1, -1, "boolean" ) );
variableDecl = new VariableDeclarationDescr( );
variableDecl.setIdentifier( new IdentifierDescr( "field4", -1, -1, -1 ) );
fieldDeclaration.addVariableDeclaration( variableDecl );
expectedFields.add( fieldDeclaration );
//field5
//"protected List<String> field5;"
fieldDeclaration = new FieldDescr( );
fieldDeclaration.setModifiers( new ModifierListDescr( ) );
fieldDeclaration.addModifier( new ModifierDescr( null, -1, -1, "protected" ) );
fieldDeclaration.setType( new TypeDescr( null, -1, -1 ) );
fieldDeclaration.getType( ).setClassOrInterfaceType( new ClassOrInterfaceTypeDescr( "List<String>", -1, -1 ) );
variableDecl = new VariableDeclarationDescr( );
variableDecl.setIdentifier( new IdentifierDescr( "field5", -1, -1, -1 ) );
fieldDeclaration.addVariableDeclaration( variableDecl );
expectedFields.add( fieldDeclaration );
//field6
//"protected static List<List<String>> field6 = new ArrayList<List<String>>();"
fieldDeclaration = new FieldDescr( );
fieldDeclaration.setModifiers( new ModifierListDescr( ) );
fieldDeclaration.addModifier( new ModifierDescr( null, -1, -1, "protected" ) );
fieldDeclaration.addModifier( new ModifierDescr( null, -1, -1, "static" ) );
fieldDeclaration.setType( new TypeDescr( null, -1, -1 ) );
fieldDeclaration.getType( ).setClassOrInterfaceType( new ClassOrInterfaceTypeDescr( "List<List<String>>", -1, -1 ) );
//fieldDeclaration.addVariableDeclaration(new VariableDeclarationDescr(null, -1, -1, "field6", new VariableInitializerDescr(null, -1, -1, "new ArrayList<List<String>>()")));
variableDecl = new VariableDeclarationDescr( );
variableDecl.setIdentifier( new IdentifierDescr( "field6", -1, -1, -1 ) )
.setVariableInitializer( new VariableInitializerDescr( null, -1, -1, "new ArrayList<List<String>>()" ) );
fieldDeclaration.addVariableDeclaration( variableDecl );
expectedFields.add( fieldDeclaration );
//field7
//"public String[] field7 ;"
fieldDeclaration = new FieldDescr( );
fieldDeclaration.setModifiers( new ModifierListDescr( ) );
fieldDeclaration.addModifier( new ModifierDescr( null, -1, -1, "public" ) );
fieldDeclaration.setType( new TypeDescr( null, -1, -1 ) );
fieldDeclaration.getType( ).setClassOrInterfaceType( new ClassOrInterfaceTypeDescr( "String", -1, -1 ) );
fieldDeclaration.getType( ).addDimension( new DimensionDescr( ) );
variableDecl = new VariableDeclarationDescr( );
variableDecl.setIdentifier( new IdentifierDescr( "field7", -1, -1, -1 ) );
fieldDeclaration.addVariableDeclaration( variableDecl );
expectedFields.add( fieldDeclaration );
//field8
//public static java.lang.String field8[] = new String[] {"value1", "value2" } ;
fieldDeclaration = new FieldDescr( );
fieldDeclaration.setModifiers( new ModifierListDescr( ) );
fieldDeclaration.addModifier( new ModifierDescr( null, -1, -1, "public" ) );
fieldDeclaration.addModifier( new ModifierDescr( null, -1, -1, "static" ) );
fieldDeclaration.setType( new TypeDescr( null, -1, -1 ) );
fieldDeclaration.getType( ).setClassOrInterfaceType( new ClassOrInterfaceTypeDescr( "java.lang.String", -1, -1 ) );
var = new VariableDeclarationDescr( );
var.setIdentifier( new IdentifierDescr( "field8", -1, -1, -1, -1 ) );
var.setVariableInitializer( new VariableInitializerDescr( null, -1, -1, "new String[] {\"value1\", \"value2\" }" ) );
var.addDimension( new DimensionDescr( ) );
fieldDeclaration.addVariableDeclaration( var );
expectedFields.add( fieldDeclaration );
//field9
//fieldSentences.add("private static String field9 [][][];");
fieldDeclaration = new FieldDescr( );
fieldDeclaration.setModifiers( new ModifierListDescr( ) );
fieldDeclaration.addModifier( new ModifierDescr( null, -1, -1, "private" ) );
fieldDeclaration.addModifier( new ModifierDescr( null, -1, -1, "static" ) );
fieldDeclaration.setType( new TypeDescr( null, -1, -1 ) );
fieldDeclaration.getType( ).setClassOrInterfaceType( new ClassOrInterfaceTypeDescr( "String", -1, -1 ) );
var = new VariableDeclarationDescr( );
var.setIdentifier( new IdentifierDescr( "field9", -1, -1, -1, -1 ) );
var.addDimension( new DimensionDescr( ) );
var.addDimension( new DimensionDescr( ) );
var.addDimension( new DimensionDescr( ) );
fieldDeclaration.addVariableDeclaration( var );
expectedFields.add( fieldDeclaration );
//field10
//protected List<String>[] field10 = new List[] { new ArrayList<String>(), new ArrayList<String>() };
fieldDeclaration = new FieldDescr( );
fieldDeclaration.setModifiers( new ModifierListDescr( ) );
fieldDeclaration.addModifier( new ModifierDescr( null, -1, -1, "protected" ) );
fieldDeclaration.setType( new TypeDescr( null, -1, -1 ) );
fieldDeclaration.getType( ).setClassOrInterfaceType( new ClassOrInterfaceTypeDescr( "List<String>", -1, -1 ) );
fieldDeclaration.getType( ).addDimension( new DimensionDescr( ) );
var = new VariableDeclarationDescr( );
var.setIdentifier( new IdentifierDescr( "field10", -1, -1, -1, -1 ) );
var.setVariableInitializer( new VariableInitializerDescr( null, -1, -1, "new List[] { new ArrayList<String>(), new ArrayList<String>() }" ) );
fieldDeclaration.addVariableDeclaration( var );
expectedFields.add( fieldDeclaration );
//field11
// "protected int field11 = 11 ;"
fieldDeclaration = new FieldDescr( );
fieldDeclaration.setModifiers( new ModifierListDescr( ) );
fieldDeclaration.addModifier( new ModifierDescr( null, -1, -1, "protected" ) );
fieldDeclaration.setType( new TypeDescr( null, -1, -1 ) );
fieldDeclaration.getType( ).setPrimitiveType( new PrimitiveTypeDescr( null, -1, -1, "int" ) );
var = new VariableDeclarationDescr( );
var.setIdentifier( new IdentifierDescr( "field11", -1, -1, -1, -1 ) );
var.setVariableInitializer( new VariableInitializerDescr( null, -1, -1, "11" ) );
fieldDeclaration.addVariableDeclaration( var );
expectedFields.add( fieldDeclaration );
//field 12, and 13
//"protected char field12 = 12, field13 = 13 ;"
fieldDeclaration = new FieldDescr( );
fieldDeclaration.setModifiers( new ModifierListDescr( ) );
fieldDeclaration.addModifier( new ModifierDescr( null, -1, -1, "protected" ) );
fieldDeclaration.setType( new TypeDescr( null, -1, -1 ) );
fieldDeclaration.getType( ).setPrimitiveType( new PrimitiveTypeDescr( null, -1, -1, "char" ) );
var = new VariableDeclarationDescr( );
var.setIdentifier( new IdentifierDescr( "field12", -1, -1, -1, -1 ) );
var.setVariableInitializer( new VariableInitializerDescr( null, -1, -1, "12" ) );
fieldDeclaration.addVariableDeclaration( var );
var = new VariableDeclarationDescr( );
var.setIdentifier( new IdentifierDescr( "field13", -1, -1, -1, -1 ) );
var.setVariableInitializer( new VariableInitializerDescr( null, -1, -1, "13" ) );
fieldDeclaration.addVariableDeclaration( var );
expectedFields.add( fieldDeclaration );
//field 14, 15, 16
//"Boolean field14 = false, field15=true, field16 = !true ;"
fieldDeclaration = new FieldDescr( );
//fieldDeclaration.setModifiers( new ModifierListDescr( ) );
fieldDeclaration.setType( new TypeDescr( null, -1, -1 ) );
fieldDeclaration.getType( ).setClassOrInterfaceType( new ClassOrInterfaceTypeDescr( "Boolean", -1, -1 ) );
var = new VariableDeclarationDescr( );
var.setIdentifier( new IdentifierDescr( "field14", -1, -1, -1, -1 ) );
var.setVariableInitializer( new VariableInitializerDescr( null, -1, -1, "false" ) );
fieldDeclaration.addVariableDeclaration( var );
var = new VariableDeclarationDescr( );
var.setIdentifier( new IdentifierDescr( "field15", -1, -1, -1, -1 ) );
var.setVariableInitializer( new VariableInitializerDescr( null, -1, -1, "true" ) );
fieldDeclaration.addVariableDeclaration( var );
var = new VariableDeclarationDescr( );
var.setIdentifier( new IdentifierDescr( "field16", -1, -1, -1, -1 ) );
var.setVariableInitializer( new VariableInitializerDescr( null, -1, -1, "!true" ) );
fieldDeclaration.addVariableDeclaration( var );
expectedFields.add( fieldDeclaration );
}
}