提交 60903c48 编写于 作者: T terrymanu

for #660: add error message details for assertion

上级 6cb876a3
......@@ -109,7 +109,7 @@ public final class IntegrateSupportedSQLParsingTest extends AbstractBaseIntegrat
}
private void assertTables(final Tables actual, final List<TableAssert> expected) {
assertThat(actual.getTableNames().size(), is(expected.size()));
assertThat(getFullAssertMessage("Tables size assertion error: "), actual.getTableNames().size(), is(expected.size()));
for (TableAssert each : expected) {
Optional<Table> table;
if (null != each.getAlias()) {
......@@ -117,38 +117,38 @@ public final class IntegrateSupportedSQLParsingTest extends AbstractBaseIntegrat
} else {
table = actual.find(each.getName());
}
assertTrue(table.isPresent());
assertTrue(getFullAssertMessage("Table should exist: "), table.isPresent());
assertTable(table.get(), each);
}
}
private void assertTable(final Table actual, final TableAssert expected) {
assertThat(actual.getName(), is(expected.getName()));
assertThat(actual.getAlias().orNull(), is(expected.getAlias()));
assertThat(getFullAssertMessage("Table name assertion error: "), actual.getName(), is(expected.getName()));
assertThat(getFullAssertMessage("Table alias assertion error: "), actual.getAlias().orNull(), is(expected.getAlias()));
}
private void assertConditions(final Conditions actual, final List<ConditionAssert> expected) throws NoSuchFieldException, IllegalAccessException {
assertThat(actual.getConditions().size(), is(expected.size()));
assertThat(getFullAssertMessage("Conditions size assertion error: "), actual.getConditions().size(), is(expected.size()));
for (ConditionAssert each : expected) {
Optional<Condition> condition = actual.find(new Column(each.getColumnName(), each.getTableName()));
assertTrue(condition.isPresent());
assertTrue(getFullAssertMessage("Table should exist: "), condition.isPresent());
assertCondition(condition.get(), each);
}
}
@SuppressWarnings("unchecked")
private void assertCondition(final Condition actual, final ConditionAssert expected) throws NoSuchFieldException, IllegalAccessException {
assertThat(actual.getColumn().getName().toUpperCase(), is(expected.getColumnName().toUpperCase()));
assertThat(actual.getColumn().getTableName().toUpperCase(), is(expected.getTableName().toUpperCase()));
assertThat(actual.getOperator().name(), is(expected.getOperator()));
assertThat(getFullAssertMessage("Condition column name assertion error: "), actual.getColumn().getName().toUpperCase(), is(expected.getColumnName().toUpperCase()));
assertThat(getFullAssertMessage("Condition table name assertion error: "), actual.getColumn().getTableName().toUpperCase(), is(expected.getTableName().toUpperCase()));
assertThat(getFullAssertMessage("Condition operator assertion error: "), actual.getOperator().name(), is(expected.getOperator()));
int count = 0;
for (Value each : expected.getValues()) {
Map<Integer, Comparable<?>> positionValueMap = (Map<Integer, Comparable<?>>) getField(actual, "positionValueMap");
Map<Integer, Integer> positionIndexMap = (Map<Integer, Integer>) getField(actual, "positionIndexMap");
if (!positionValueMap.isEmpty()) {
assertThat(positionValueMap.get(count), is((Comparable) each.getLiteralForAccurateType()));
assertThat(getFullAssertMessage("Condition parameter value assertion error: "), positionValueMap.get(count), is((Comparable) each.getLiteralForAccurateType()));
} else if (!positionIndexMap.isEmpty()) {
assertThat(positionIndexMap.get(count), is(each.getIndex()));
assertThat(getFullAssertMessage("Condition parameter index assertion error: "), positionIndexMap.get(count), is(each.getIndex()));
}
count++;
}
......@@ -174,7 +174,7 @@ public final class IntegrateSupportedSQLParsingTest extends AbstractBaseIntegrat
private void assertTableTokens(final List<SQLToken> actual, final SQLTokenAsserts expected) {
List<TableToken> tableTokens = getTableTokens(actual);
assertThat(tableTokens.size(), is(expected.getTableTokens().size()));
assertThat(getFullAssertMessage("Table tokens size error: "), tableTokens.size(), is(expected.getTableTokens().size()));
int count = 0;
for (TableTokenAssert each : expected.getTableTokens()) {
assertTableToken(tableTokens.get(count), each);
......@@ -183,8 +183,8 @@ public final class IntegrateSupportedSQLParsingTest extends AbstractBaseIntegrat
}
private void assertTableToken(final TableToken actual, final TableTokenAssert expected) {
assertThat(actual.getBeginPosition(), is(expected.getBeginPosition()));
assertThat(actual.getOriginalLiterals(), is(expected.getOriginalLiterals()));
assertThat(getFullAssertMessage("Table tokens begin position assertion error: "), actual.getBeginPosition(), is(expected.getBeginPosition()));
assertThat(getFullAssertMessage("Table tokens original literals assertion error: "), actual.getOriginalLiterals(), is(expected.getOriginalLiterals()));
}
private List<TableToken> getTableTokens(final List<SQLToken> actual) {
......@@ -202,14 +202,14 @@ public final class IntegrateSupportedSQLParsingTest extends AbstractBaseIntegrat
if (indexToken.isPresent()) {
assertIndexToken(indexToken.get(), expected.getIndexToken());
} else {
assertNull(expected.getIndexToken());
assertNull(getFullAssertMessage("Index token should not exist: "), expected.getIndexToken());
}
}
private void assertIndexToken(final IndexToken actual, final IndexTokenAssert expected) {
assertThat(actual.getBeginPosition(), is(expected.getBeginPosition()));
assertThat(actual.getOriginalLiterals(), is(expected.getOriginalLiterals()));
assertThat(actual.getTableName(), is(expected.getTableName()));
assertThat(getFullAssertMessage("Index token begin position assertion error: "), actual.getBeginPosition(), is(expected.getBeginPosition()));
assertThat(getFullAssertMessage("Index token original literals assertion error: "), actual.getOriginalLiterals(), is(expected.getOriginalLiterals()));
assertThat(getFullAssertMessage("Index token table name assertion error: "), actual.getTableName(), is(expected.getTableName()));
}
private Optional<IndexToken> getIndexToken(final List<SQLToken> actual) {
......@@ -226,13 +226,13 @@ public final class IntegrateSupportedSQLParsingTest extends AbstractBaseIntegrat
if (itemsToken.isPresent()) {
assertItemsToken(itemsToken.get(), expected.getItemsToken());
} else {
assertNull(expected.getItemsToken());
assertNull(getFullAssertMessage("Items token should not exist: "), expected.getItemsToken());
}
}
private void assertItemsToken(final ItemsToken actual, final ItemsTokenAssert expected) {
assertThat(actual.getBeginPosition(), is(expected.getBeginPosition()));
assertThat(actual.getItems(), is(expected.getItems()));
assertThat(getFullAssertMessage("Items token begin position assertion error: "), actual.getBeginPosition(), is(expected.getBeginPosition()));
assertThat(getFullAssertMessage("Items token items assertion error: "), actual.getItems(), is(expected.getItems()));
}
private Optional<ItemsToken> getItemsToken(final List<SQLToken> actual) {
......@@ -249,15 +249,15 @@ public final class IntegrateSupportedSQLParsingTest extends AbstractBaseIntegrat
if (generatedKeyToken.isPresent()) {
assertGeneratedKeyToken(generatedKeyToken.get(), expected.getGeneratedKeyToken());
} else {
assertNull(expected.getGeneratedKeyToken());
assertNull(getFullAssertMessage("Generated key token should not exist: "), expected.getGeneratedKeyToken());
}
}
private void assertGeneratedKeyToken(final GeneratedKeyToken actual, final GeneratedKeyTokenAssert expected) {
if (SQLCaseType.Placeholder == sqlCaseType) {
assertThat(actual.getBeginPosition(), is(expected.getBeginPositionWithPlaceholder()));
assertThat(getFullAssertMessage("Generated key token begin position assertion error: "), actual.getBeginPosition(), is(expected.getBeginPositionWithPlaceholder()));
} else {
assertThat(actual.getBeginPosition(), is(expected.getBeginPositionWithoutPlaceholder()));
assertThat(getFullAssertMessage("Generated key token begin position assertion error: "), actual.getBeginPosition(), is(expected.getBeginPositionWithoutPlaceholder()));
}
}
......@@ -275,13 +275,13 @@ public final class IntegrateSupportedSQLParsingTest extends AbstractBaseIntegrat
if (multipleInsertValuesToken.isPresent()) {
assertMultipleInsertValuesToken(multipleInsertValuesToken.get(), expected.getMultipleInsertValuesToken());
} else {
assertNull(expected.getMultipleInsertValuesToken());
assertNull(getFullAssertMessage("Multiple insert values token should not exist: "), expected.getMultipleInsertValuesToken());
}
}
private void assertMultipleInsertValuesToken(final MultipleInsertValuesToken actual, final MultipleInsertValuesTokenAssert expected) {
assertThat(actual.getBeginPosition(), is(expected.getBeginPosition()));
assertThat(actual.getValues(), is(expected.getValues()));
assertThat(getFullAssertMessage("Multiple insert values token begin position assertion error: "), actual.getBeginPosition(), is(expected.getBeginPosition()));
assertThat(getFullAssertMessage("Multiple insert values token values assertion error: "), actual.getValues(), is(expected.getValues()));
}
private Optional<MultipleInsertValuesToken> getMultipleInsertValuesToken(final List<SQLToken> actual) {
......@@ -298,15 +298,15 @@ public final class IntegrateSupportedSQLParsingTest extends AbstractBaseIntegrat
if (orderByToken.isPresent()) {
assertOrderByToken(orderByToken.get(), expected.getOrderByToken());
} else {
assertNull(expected.getOrderByToken());
assertNull(getFullAssertMessage("Order by token should not exist: "), expected.getOrderByToken());
}
}
private void assertOrderByToken(final OrderByToken actual, final OrderByTokenAssert expected) {
if (SQLCaseType.Placeholder == sqlCaseType) {
assertThat(actual.getBeginPosition(), is(expected.getBeginPositionWithPlaceholder()));
assertThat(getFullAssertMessage("Order by token begin position assertion error: "), actual.getBeginPosition(), is(expected.getBeginPositionWithPlaceholder()));
} else {
assertThat(actual.getBeginPosition(), is(expected.getBeginPositionWithoutPlaceholder()));
assertThat(getFullAssertMessage("Order by token begin position assertion error: "), actual.getBeginPosition(), is(expected.getBeginPositionWithoutPlaceholder()));
}
}
......@@ -324,13 +324,13 @@ public final class IntegrateSupportedSQLParsingTest extends AbstractBaseIntegrat
if (offsetToken.isPresent()) {
assertOffsetToken(offsetToken.get(), expected.getOffsetToken());
} else {
assertNull(expected.getOffsetToken());
assertNull(getFullAssertMessage("Offset token should not exist: "), expected.getOffsetToken());
}
}
private void assertOffsetToken(final OffsetToken actual, final OffsetTokenAssert expected) {
assertThat(actual.getBeginPosition(), is(expected.getBeginPosition()));
assertThat(actual.getOffset(), is(expected.getOffset()));
assertThat(getFullAssertMessage("Offset token begin position assertion error: "), actual.getBeginPosition(), is(expected.getBeginPosition()));
assertThat(getFullAssertMessage("Offset token offset assertion error: "), actual.getOffset(), is(expected.getOffset()));
}
private Optional<OffsetToken> getOffsetToken(final List<SQLToken> actual) {
......@@ -347,13 +347,13 @@ public final class IntegrateSupportedSQLParsingTest extends AbstractBaseIntegrat
if (rowCountToken.isPresent()) {
assertRowCountToken(rowCountToken.get(), expected.getRowCountToken());
} else {
assertNull(expected.getRowCountToken());
assertNull(getFullAssertMessage("Row count token should not exist: "), expected.getRowCountToken());
}
}
private void assertRowCountToken(final RowCountToken actual, final RowCountTokenAssert expected) {
assertThat(actual.getBeginPosition(), is(expected.getBeginPosition()));
assertThat(actual.getRowCount(), is(expected.getRowCount()));
assertThat(getFullAssertMessage("Row count token begin position assertion error: "), actual.getBeginPosition(), is(expected.getBeginPosition()));
assertThat(getFullAssertMessage("Row count token row count assertion error: "), actual.getRowCount(), is(expected.getRowCount()));
}
private Optional<RowCountToken> getRowCountToken(final List<SQLToken> actual) {
......@@ -367,12 +367,16 @@ public final class IntegrateSupportedSQLParsingTest extends AbstractBaseIntegrat
private String getFullAssertMessage(final String assertMessage) {
StringBuilder result = new StringBuilder(System.getProperty("line.separator"));
result.append("SQL case id: ");
result.append("SQL Case ID : ");
result.append(sqlCaseId);
result.append(System.getProperty("line.separator"));
result.append("SQL: ");
result.append("SQL : ");
if (SQLCaseType.Placeholder == sqlCaseType) {
result.append(SQLCasesLoader.getInstance().getSupportedPlaceholderSQL(sqlCaseId));
result.append(System.getProperty("line.separator"));
result.append("SQL Params : ");
result.append(parserAssertsLoader.getParserAssert(sqlCaseId).getParameters());
result.append(System.getProperty("line.separator"));
} else {
result.append(SQLCasesLoader.getInstance().getSupportedLiteralSQL(sqlCaseId, parserAssertsLoader.getParserAssert(sqlCaseId).getParameters()));
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册