/** Does evaluateAssertion do the right thing for equality assertions? */ @Test public void testEvaluateAssertionEqualsFalse() throws IOException { Assertion assertion = new Assertion( AssertionType.equals, BatfishObjectMapper.mapper() .readValue("[{\"key1\": \"value1\"}, {\"key1\": \"value2\"}]", JsonNode.class)); // adding rows in different order shouldn't matter TableAnswerElement otherRows = new TableAnswerElement(oneKeyTableMetadata); otherRows.addRow(Row.builder().put("key1", "value2").build()); otherRows.addRow(Row.builder().put("key1", "value1").build()); assertThat(otherRows.evaluateAssertion(assertion), equalTo(true)); // adding another duplicate row should matter otherRows.addRow(Row.builder().put("key1", "value2").build()); assertThat(otherRows.evaluateAssertion(assertion), equalTo(false)); }
/** Does computerSummary compute the correct summary? */ @Test public void testComputeSummary() { // generate an answer with two rows TableAnswerElement answer = new TableAnswerElement( new TableMetadata( ImmutableList.of(new ColumnMetadata("col", Schema.STRING, "desc")), "no desc")); answer.addRow(Row.builder().put("col", "val").build()); answer.addRow(Row.builder().put("col", "val").build()); Assertion assertion = new Assertion(AssertionType.countequals, new IntNode(1)); // wrong count AnswerSummary summary = answer.computeSummary(assertion); assertThat(summary.getNumResults(), equalTo(2)); assertThat(summary.getNumFailed(), equalTo(1)); assertThat(summary.getNumPassed(), equalTo(0)); }
/** Does evaluateAssertion do the right thing for counting assertions? */ @Test public void testEvaluateAssertionCount() { Assertion twoCount = new Assertion(AssertionType.countequals, new IntNode(2)); TableAnswerElement oneRow = new TableAnswerElement( new TableMetadata( ImmutableList.of(new ColumnMetadata("col", Schema.STRING, "desc")), "no desc")); oneRow.addRow(Row.builder().put("col", "val").build()); TableAnswerElement twoRows = new TableAnswerElement( new TableMetadata( ImmutableList.of(new ColumnMetadata("col", Schema.STRING, "desc")), "no desc")); twoRows.addRow(Row.builder().put("col", "val").build()); twoRows.addRow(Row.builder().put("col", "val").build()); assertThat(oneRow.evaluateAssertion(twoCount), equalTo(false)); assertThat(twoRows.evaluateAssertion(twoCount), equalTo(true)); }