Program: 150519
Project: 150519
Buggy source:
@Test public void testMetaModel() throws Exception {
  Schema schema=TAuthor().getSchema();
  if (schema != null) {
    int sequences=0;
    if (cSequences() != null) {
      sequences++;
      if (getDialect() == SQLDialect.DB2 || getDialect() == SQLDialect.H2) {
        sequences++;
      }
 else       if (getDialect() == ORACLE) {
        sequences+=5;
      }
    }
    assertEquals(sequences,schema.getSequences().size());
    for (    Table<?> table : schema.getTables()) {
      assertEquals(table,schema.getTable(table.getName()));
    }
    for (    UDT<?> udt : schema.getUDTs()) {
      assertEquals(udt,schema.getUDT(udt.getName()));
    }
    for (    Sequence<?> sequence : schema.getSequences()) {
      assertEquals(sequence,schema.getSequence(sequence.getName()));
    }
    int tables=17;
    if (supportsRecursiveQueries()) {
      tables++;
    }
    if (TTriggers() != null) {
      tables++;
    }
    if (TUnsigned() != null) {
      tables++;
    }
    if (TIdentity() != null) {
      tables++;
    }
    if (TIdentityPK() != null) {
      tables++;
    }
    if (getDialect() == MYSQL || getDialect() == POSTGRES) {
      tables++;
    }
    if (getDialect() == ASE || getDialect() == DB2 || getDialect() == POSTGRES || getDialect() == SQLITE || getDialect() == SYBASE) {
      tables+=2;
    }
    if (TArrays() == null) {
      assertEquals(tables,schema.getTables().size());
    }
 else     if (getDialect() == ORACLE || getDialect() == H2) {
      assertEquals(tables + 2,schema.getTables().size());
    }
 else     if (getDialect() == HSQLDB) {
      assertEquals(tables + 11,schema.getTables().size());
    }
 else {
      assertEquals(tables + 1,schema.getTables().size());
    }
    if (cUAddressType() == null) {
      assertEquals(0,schema.getUDTs().size());
    }
 else     if (getDialect() == ORACLE) {
      assertEquals(7,schema.getUDTs().size());
    }
 else {
      assertEquals(2,schema.getUDTs().size());
    }
  }
  assertNull(TAuthor().getIdentity());
  assertNull(TBook().getIdentity());
  if (TIdentity() != null || TIdentityPK() != null) {
    if (TIdentity() != null) {
      assertEquals(TIdentity(),TIdentity().getIdentity().getTable());
      assertEquals(TIdentity_ID(),TIdentity().getIdentity().getField());
    }
    if (TIdentityPK() != null) {
      assertEquals(TIdentityPK(),TIdentityPK().getIdentity().getTable());
      assertEquals(TIdentityPK_ID(),TIdentityPK().getIdentity().getField());
    }
  }
 else {
    log.info("String_Node_Str","String_Node_Str");
  }
  assertNotNull(TAuthor().getMainKey());
  assertNotNull(TAuthor().getKeys());
  assertTrue(TAuthor().getKeys().contains(TAuthor().getMainKey()));
  assertEquals(1,TAuthor().getKeys().size());
  assertEquals(1,TAuthor().getMainKey().getFields().size());
  assertEquals(TAuthor_ID(),TAuthor().getMainKey().getFields().get(0));
  if (supportsReferences()) {
    assertEquals(0,TAuthor().getReferences().size());
    assertEquals(2,TAuthor().getMainKey().getReferences().size());
    assertEquals(TBook(),TAuthor().getMainKey().getReferences().get(0).getTable());
    assertEquals(TBook(),TAuthor().getMainKey().getReferences().get(1).getTable());
    assertEquals(Arrays.asList(),TAuthor().getReferencesTo(TBook()));
    assertTrue(TBook().getReferences().containsAll(TAuthor().getReferencesFrom(TBook())));
    assertTrue(TBook().getReferences().containsAll(TBook().getReferencesFrom(TAuthor())));
    assertEquals(TBook().getReferencesTo(TAuthor()),TAuthor().getReferencesFrom(TBook()));
  }
 else {
    log.info("String_Node_Str","String_Node_Str");
  }
  for (  Field<?> field : T639().getFields()) {
    if ("String_Node_Str".equalsIgnoreCase(field.getName())) {
      assertEquals(Byte.class,field.getType());
      assertEquals(SQLDataType.TINYINT,field.getDataType());
    }
 else     if ("String_Node_Str".equalsIgnoreCase(field.getName())) {
      assertEquals(Short.class,field.getType());
      assertEquals(SQLDataType.SMALLINT,field.getDataType());
    }
 else     if ("String_Node_Str".equalsIgnoreCase(field.getName())) {
      assertEquals(Integer.class,field.getType());
      assertEquals(SQLDataType.INTEGER,field.getDataType());
    }
 else     if ("String_Node_Str".equalsIgnoreCase(field.getName())) {
      assertEquals(Long.class,field.getType());
      assertEquals(SQLDataType.BIGINT,field.getDataType());
    }
 else     if ("String_Node_Str".equalsIgnoreCase(field.getName())) {
      assertEquals(Byte.class,field.getType());
      assertEquals(SQLDataType.TINYINT,field.getDataType());
    }
 else     if ("String_Node_Str".equalsIgnoreCase(field.getName())) {
      assertEquals(Short.class,field.getType());
      assertEquals(SQLDataType.SMALLINT,field.getDataType());
    }
 else     if ("String_Node_Str".equalsIgnoreCase(field.getName())) {
      assertEquals(Integer.class,field.getType());
      assertEquals(SQLDataType.INTEGER,field.getDataType());
    }
 else     if ("String_Node_Str".equalsIgnoreCase(field.getName())) {
      assertEquals(Long.class,field.getType());
      assertEquals(SQLDataType.BIGINT,field.getDataType());
    }
 else     if ("String_Node_Str".equalsIgnoreCase(field.getName())) {
      assertEquals(BigInteger.class,field.getType());
      assertEquals(SQLDataType.DECIMAL_INTEGER,field.getDataType());
    }
 else     if ("String_Node_Str".equalsIgnoreCase(field.getName()) && getDialect() != SQLDialect.ORACLE && getDialect() != SQLDialect.POSTGRES && getDialect() != SQLDialect.SQLITE && getDialect() != SQLDialect.SQLSERVER) {
      assertEquals(BigDecimal.class,field.getType());
      assertEquals(SQLDataType.DECIMAL,field.getDataType());
    }
 else     if ("String_Node_Str".equalsIgnoreCase(field.getName())) {
      assertEquals(BigDecimal.class,field.getType());
      assertEquals(SQLDataType.NUMERIC,field.getDataType());
    }
 else     if ("String_Node_Str".equalsIgnoreCase(field.getName()) && getDialect() != SQLDialect.HSQLDB && getDialect() != SQLDialect.MYSQL && getDialect() != SQLDialect.SYBASE) {
      assertEquals(Float.class,field.getType());
      assertEquals(SQLDataType.REAL,field.getDataType());
    }
 else     if ("String_Node_Str".equalsIgnoreCase(field.getName()) && getDialect() != SQLDialect.MYSQL && getDialect() != SQLDialect.SYBASE) {
      assertEquals(Double.class,field.getType());
      assertEquals(SQLDataType.DOUBLE,field.getDataType());
    }
 else     if ("String_Node_Str".equalsIgnoreCase(field.getName())) {
      assertEquals(Double.class,field.getType());
      assertEquals(SQLDataType.FLOAT,field.getDataType());
    }
 else     if ("String_Node_Str".equalsIgnoreCase(field.getName()) && getDialect() != SQLDialect.SQLSERVER && getDialect() != SQLDialect.ASE) {
      assertEquals(Double.class,field.getType());
      assertEquals(SQLDataType.DOUBLE,field.getDataType());
    }
 else     if ("String_Node_Str".equalsIgnoreCase(field.getName())) {
      assertEquals(Double.class,field.getType());
      assertEquals(SQLDataType.FLOAT,field.getDataType());
    }
  }
}

Fixed version (ground truth):
@Test public void testMetaModel() throws Exception {
  Schema schema=TAuthor().getSchema();
  if (schema != null) {
    int sequences=0;
    if (cSequences() != null) {
      sequences++;
      if (getDialect() == DB2 || getDialect() == H2) {
        sequences++;
      }
 else       if (getDialect() == CUBRID) {
        sequences+=3;
      }
 else       if (getDialect() == ORACLE) {
        sequences+=5;
      }
    }
    assertEquals(sequences,schema.getSequences().size());
    for (    Table<?> table : schema.getTables()) {
      assertEquals(table,schema.getTable(table.getName()));
    }
    for (    UDT<?> udt : schema.getUDTs()) {
      assertEquals(udt,schema.getUDT(udt.getName()));
    }
    for (    Sequence<?> sequence : schema.getSequences()) {
      assertEquals(sequence,schema.getSequence(sequence.getName()));
    }
    int tables=17;
    if (supportsRecursiveQueries()) {
      tables++;
    }
    if (TTriggers() != null) {
      tables++;
    }
    if (TUnsigned() != null) {
      tables++;
    }
    if (TIdentity() != null) {
      tables++;
    }
    if (TIdentityPK() != null) {
      tables++;
    }
    if (getDialect() == MYSQL || getDialect() == POSTGRES) {
      tables++;
    }
    if (getDialect() == ASE || getDialect() == CUBRID || getDialect() == DB2 || getDialect() == POSTGRES || getDialect() == SQLITE || getDialect() == SYBASE) {
      tables+=2;
    }
    if (TArrays() == null) {
      assertEquals(tables,schema.getTables().size());
    }
 else     if (getDialect() == ORACLE || getDialect() == H2) {
      assertEquals(tables + 2,schema.getTables().size());
    }
 else     if (getDialect() == HSQLDB) {
      assertEquals(tables + 11,schema.getTables().size());
    }
 else {
      assertEquals(tables + 1,schema.getTables().size());
    }
    if (cUAddressType() == null) {
      assertEquals(0,schema.getUDTs().size());
    }
 else     if (getDialect() == ORACLE) {
      assertEquals(7,schema.getUDTs().size());
    }
 else {
      assertEquals(2,schema.getUDTs().size());
    }
  }
  assertNull(TAuthor().getIdentity());
  assertNull(TBook().getIdentity());
  if (TIdentity() != null || TIdentityPK() != null) {
    if (TIdentity() != null) {
      assertEquals(TIdentity(),TIdentity().getIdentity().getTable());
      assertEquals(TIdentity_ID(),TIdentity().getIdentity().getField());
    }
    if (TIdentityPK() != null) {
      assertEquals(TIdentityPK(),TIdentityPK().getIdentity().getTable());
      assertEquals(TIdentityPK_ID(),TIdentityPK().getIdentity().getField());
    }
  }
 else {
    log.info("String_Node_Str","String_Node_Str");
  }
  assertNotNull(TAuthor().getMainKey());
  assertNotNull(TAuthor().getKeys());
  assertTrue(TAuthor().getKeys().contains(TAuthor().getMainKey()));
  assertEquals(1,TAuthor().getKeys().size());
  assertEquals(1,TAuthor().getMainKey().getFields().size());
  assertEquals(TAuthor_ID(),TAuthor().getMainKey().getFields().get(0));
  if (supportsReferences()) {
    assertEquals(0,TAuthor().getReferences().size());
    assertEquals(2,TAuthor().getMainKey().getReferences().size());
    assertEquals(TBook(),TAuthor().getMainKey().getReferences().get(0).getTable());
    assertEquals(TBook(),TAuthor().getMainKey().getReferences().get(1).getTable());
    assertEquals(Arrays.asList(),TAuthor().getReferencesTo(TBook()));
    assertTrue(TBook().getReferences().containsAll(TAuthor().getReferencesFrom(TBook())));
    assertTrue(TBook().getReferences().containsAll(TBook().getReferencesFrom(TAuthor())));
    assertEquals(TBook().getReferencesTo(TAuthor()),TAuthor().getReferencesFrom(TBook()));
  }
 else {
    log.info("String_Node_Str","String_Node_Str");
  }
  for (  Field<?> field : T639().getFields()) {
    if ("String_Node_Str".equalsIgnoreCase(field.getName())) {
      assertEquals(Byte.class,field.getType());
      assertEquals(SQLDataType.TINYINT,field.getDataType());
    }
 else     if ("String_Node_Str".equalsIgnoreCase(field.getName())) {
      assertEquals(Short.class,field.getType());
      assertEquals(SQLDataType.SMALLINT,field.getDataType());
    }
 else     if ("String_Node_Str".equalsIgnoreCase(field.getName())) {
      assertEquals(Integer.class,field.getType());
      assertEquals(SQLDataType.INTEGER,field.getDataType());
    }
 else     if ("String_Node_Str".equalsIgnoreCase(field.getName())) {
      assertEquals(Long.class,field.getType());
      assertEquals(SQLDataType.BIGINT,field.getDataType());
    }
 else     if ("String_Node_Str".equalsIgnoreCase(field.getName())) {
      assertEquals(Byte.class,field.getType());
      assertEquals(SQLDataType.TINYINT,field.getDataType());
    }
 else     if ("String_Node_Str".equalsIgnoreCase(field.getName())) {
      assertEquals(Short.class,field.getType());
      assertEquals(SQLDataType.SMALLINT,field.getDataType());
    }
 else     if ("String_Node_Str".equalsIgnoreCase(field.getName())) {
      assertEquals(Integer.class,field.getType());
      assertEquals(SQLDataType.INTEGER,field.getDataType());
    }
 else     if ("String_Node_Str".equalsIgnoreCase(field.getName())) {
      assertEquals(Long.class,field.getType());
      assertEquals(SQLDataType.BIGINT,field.getDataType());
    }
 else     if ("String_Node_Str".equalsIgnoreCase(field.getName())) {
      assertEquals(BigInteger.class,field.getType());
      assertEquals(SQLDataType.DECIMAL_INTEGER,field.getDataType());
    }
 else     if ("String_Node_Str".equalsIgnoreCase(field.getName()) && getDialect() != SQLDialect.ORACLE && getDialect() != SQLDialect.POSTGRES && getDialect() != SQLDialect.SQLITE && getDialect() != SQLDialect.SQLSERVER) {
      assertEquals(BigDecimal.class,field.getType());
      assertEquals(SQLDataType.DECIMAL,field.getDataType());
    }
 else     if ("String_Node_Str".equalsIgnoreCase(field.getName())) {
      assertEquals(BigDecimal.class,field.getType());
      assertEquals(SQLDataType.NUMERIC,field.getDataType());
    }
 else     if ("String_Node_Str".equalsIgnoreCase(field.getName()) && getDialect() != SQLDialect.HSQLDB && getDialect() != SQLDialect.MYSQL && getDialect() != SQLDialect.SYBASE) {
      assertEquals(Float.class,field.getType());
      assertEquals(SQLDataType.REAL,field.getDataType());
    }
 else     if ("String_Node_Str".equalsIgnoreCase(field.getName()) && getDialect() != SQLDialect.MYSQL && getDialect() != SQLDialect.SYBASE) {
      assertEquals(Double.class,field.getType());
      assertEquals(SQLDataType.DOUBLE,field.getDataType());
    }
 else     if ("String_Node_Str".equalsIgnoreCase(field.getName())) {
      assertEquals(Double.class,field.getType());
      assertEquals(SQLDataType.FLOAT,field.getDataType());
    }
 else     if ("String_Node_Str".equalsIgnoreCase(field.getName()) && getDialect() != SQLDialect.SQLSERVER && getDialect() != SQLDialect.ASE) {
      assertEquals(Double.class,field.getType());
      assertEquals(SQLDataType.DOUBLE,field.getDataType());
    }
 else     if ("String_Node_Str".equalsIgnoreCase(field.getName())) {
      assertEquals(Double.class,field.getType());
      assertEquals(SQLDataType.FLOAT,field.getDataType());
    }
  }
}