@Test
public void testIdentifyFieldTypes() {

    LhsBuilder builder = new LhsBuilder( 9, 1, "" );
    assertEquals(FieldType.SINGLE_FIELD, builder.calcFieldType("age"));
    assertEquals(FieldType.OPERATOR_FIELD, builder.calcFieldType("age <"));
    assertEquals(FieldType.NORMAL_FIELD, builder.calcFieldType("age < $param"));
    assertEquals(FieldType.FORALL_FIELD, builder.calcFieldType("forall(||){age < $}"));
    assertEquals(FieldType.FORALL_FIELD, builder.calcFieldType("forall(&&){age < $}"));
    assertEquals(FieldType.FORALL_FIELD, builder.calcFieldType("forall(,){age < $}"));
    assertEquals(FieldType.FORALL_FIELD, builder.calcFieldType("forall(){age < $}"));
    assertEquals(FieldType.FORALL_FIELD, builder.calcFieldType("forall(){age < $} && forall(){age == $}"));
    assertEquals(FieldType.FORALL_FIELD, builder.calcFieldType("x && forall(){age < $} && forall(){age == $}"));
    assertEquals(FieldType.FORALL_FIELD, builder.calcFieldType("x && forall(){age < $} && forall(){age == $} && y"));
    assertEquals(FieldType.SINGLE_FIELD, builder.calcFieldType("age < $para"));
    assertEquals(FieldType.SINGLE_FIELD, builder.calcFieldType("forall{||}{age < $}"));
    assertEquals(FieldType.SINGLE_FIELD, builder.calcFieldType("forall(){}"));
    assertEquals(FieldType.SINGLE_FIELD, builder.calcFieldType("forall(){age < $"));
    assertEquals(FieldType.SINGLE_FIELD, builder.calcFieldType("forall(){,"));
    assertEquals(FieldType.SINGLE_FIELD, builder.calcFieldType("forall({})"));
    assertEquals(FieldType.SINGLE_FIELD, builder.calcFieldType("forall({}){test})"));
    assertEquals(FieldType.SINGLE_FIELD, builder.calcFieldType("forall(&&){{}})"));
    assertEquals(FieldType.SINGLE_FIELD, builder.calcFieldType("forall(&&){{})"));
}