public static boolean resultSetEquivalent(Query query, ResultSetRewindable resultsExpected, ResultSetRewindable resultsActual) { final boolean testByValue = true ; if ( testByValue ) { if ( query.isOrdered() ) return ResultSetCompare.equalsByValueAndOrder(resultsExpected, resultsActual) ; else return ResultSetCompare.equalsByValue(resultsExpected, resultsActual) ; } else { if ( query.isOrdered() ) return ResultSetCompare.equalsByTermAndOrder(resultsExpected, resultsActual) ; else return ResultSetCompare.equalsByTerm(resultsExpected, resultsActual) ; } }
private static boolean equalBindings(Binding binding1, Binding binding2) { // Need to have the exact same terms coming back (therefore we can't use BNodeIso to compare values) return ResultSetCompare.equal(binding1, binding2, NodeUtils.sameTerm) ; }
public static boolean isEqual(ResultSet actual, ResultSet expected) { boolean isEqual = true; ResultSetRewindable act = null; ResultSetRewindable exp = null; if (expected != null) { // TODO File in JIRA issue: This impl is bugged (look at the code, // rs1 should be rs1a) act = ResultSetFactory.makeRewindable(actual); exp = ResultSetFactory.makeRewindable(expected) ; isEqual = ResultSetCompare.equalsByTerm(act, exp); act.reset(); exp.reset(); } if(!isEqual) { String eStr = ResultSetFormatter.asText(exp); System.out.println("Expected"); System.out.println("------"); System.out.println(eStr); String aStr = ResultSetFormatter.asText(act); System.out.println("Actual"); System.out.println("------"); System.out.println(aStr); } return isEqual; }
/** compare two result sets for exact equality equivalence. * Exact equalitymeans: * Each row in rs1 matches the same index row in rs2. * Rows match if they have the same variables with the same values, * bNodes must have same labels * * Destructive - rs1 and rs2 are both read, possibly to exhaustion. * @param rs1 * @param rs2 * @return true if they are equivalent */ public static boolean equalsExact(ResultSet rs1, ResultSet rs2) { if ( ! compareHeader(rs1, rs2) ) return false ; return equivalentByOrder(convert(rs1) , convert(rs2), new EqualityTest(){}) ; }
/** Compare two result sets for equivalence. Equivalence means: * A row rs1 has one matching row in rs2, and vice versa. * A row is only matched once. * Rows match if they have the same variables with the same values. * bNodes must map to a consistent other bNodes. Value comparisons of nodes. * * Destructive - rs1 and rs2 are both read, possibly to exhaustion. * @param rs1 * @param rs2 * @return true if they are equivalent */ public static boolean equalsByValue(ResultSet rs1, ResultSet rs2) { if ( ! compareHeader(rs1, rs2) ) return false ; //return equivalent(convert(rs1), convert(rs2), new BNodeIso(NodeUtils.sameValue)) ; ResultSetRewindable rs1a = ResultSetFactory.makeRewindable(rs1) ; ResultSetRewindable rs2a = ResultSetFactory.makeRewindable(rs2) ; if ( equivalent(convert(rs1a), convert(rs2a), new BNodeIso(NodeUtils.sameValue)) ) return true ; rs1a.reset() ; rs2a.reset() ; return isomorphic(rs1a, rs2a) ; }
private static void same(ResultSet rs1, ResultSet rs2, boolean result) { ResultSetRewindable rsw1 = ResultSetFactory.makeRewindable(rs1) ; ResultSetRewindable rsw2 = ResultSetFactory.makeRewindable(rs2) ; boolean b = ResultSetCompare.equalsByValue(rsw1, rsw2) ; if ( b != result) { System.out.println("Different: ") ; rsw1.reset() ; rsw2.reset() ; ResultSetFormatter.out(rsw1) ; ResultSetFormatter.out(rsw2) ; System.out.println() ; } assertTrue(b == result) ; }
private void isotest(String[] rs1$2, String[] rs2$2) { ResultSetRewindable rs1 = ResultSetFactory.makeRewindable(BuilderResultSet.build(SSE.parseItem(StrUtils.strjoinNL(rs1$)))) ; ResultSetRewindable rs2 = ResultSetFactory.makeRewindable(BuilderResultSet.build(SSE.parseItem(StrUtils.strjoinNL(rs2$)))) ; assertTrue(ResultSetCompare.isomorphic(rs1, rs2)) ; rs1.reset() ; rs2.reset() ; assertTrue(ResultSetCompare.equalsByTerm(rs1, rs2)) ; assertTrue(ResultSetCompare.equalsByValue(rs1, rs2)) ; }
@Test public void test_RS_cmp_value_1() { ResultSetRewindable rs1 = makeRewindable("x", NodeFactoryExtra.parseNode("123")) ; ResultSetRewindable rs2 = makeRewindable("x", NodeFactoryExtra.parseNode("0123")) ; assertFalse(ResultSetCompare.equalsByTerm(rs1, rs2)) ; assertTrue(ResultSetCompare.equalsByValue(rs1, rs2)) ; }
@Override public boolean equalTo(Element el2, NodeIsomorphismMap isoMap) { if ( ! ( el2 instanceof ElementData ) ) return false ; ElementData f2 = (ElementData)el2 ; if ( ! vars.equals(f2.vars) ) return false ; if ( ! ResultSetCompare.equalsByTest(rows, f2.rows, new ResultSetCompare.BNodeIso(NodeUtils.sameTerm)) ) return false ; return true ; }
private static void areIsomorphic(ResultSet x, ResultSet y) { ResultSetRewindable rs1 = ResultSetFactory.makeRewindable(x) ; ResultSetRewindable rs2 = ResultSetFactory.makeRewindable(y) ; // System.out.println(ResultSetFormatter.asText(rs1)); // System.out.println(); // System.out.println(ResultSetFormatter.asText(rs2)); // rs1.reset(); // rs2.reset(); Assert.assertTrue(ResultSetCompare.isomorphic(rs1, rs2)) ; }
@Test public void test_RS_cmp_6() { // Different variable, same values ResultSetRewindable rs1 = makeRewindable("x", org.apache.jena.graph.NodeFactory.createURI("tag:local")) ; ResultSetRewindable rs2 = makeRewindable("y", org.apache.jena.graph.NodeFactory.createURI("tag:local")) ; assertFalse(ResultSetCompare.equalsByTermAndOrder(rs1, rs2)) ; rs1.reset() ; rs2.reset() ; assertFalse(ResultSetCompare.equalsByTerm(rs1, rs2)) ; }
@Test public void resultSet_03() { ResultSetRewindable r2 = test(rs2) ; // not reordered r2.reset(); rs1.reset() ; assertFalse(ResultSetCompare.equalsByTermAndOrder(r2, rs1)) ; rs1.reset() ; }
/** Compare two bindings, use the node equality test provided */ static public boolean equal(Binding bind1, Binding bind2, NodeUtils.EqualityTest test) { if ( bind1 == bind2 ) return true ; if ( bind1.size() != bind2.size() ) return false ; // They are the same size so containment is enough. if ( ! containedIn(bind1, bind2, test) ) return false ; return true ; }
private static void same(ResultSet rs1, ResultSet rs2, boolean result) { ResultSetRewindable rsw1 = ResultSetFactory.makeRewindable(rs1) ; ResultSetRewindable rsw2 = ResultSetFactory.makeRewindable(rs2) ; boolean b = ResultSetCompare.equalsByValue(rsw1, rsw2) ; if ( b != result) { System.out.println("Different: ") ; rsw1.reset() ; rsw2.reset() ; ResultSetFormatter.out(rsw1) ; ResultSetFormatter.out(rsw2) ; System.out.println() ; } assertTrue(b == result) ; }
/** compare two result sets for equivalence. Equivalence means: * A row rs1 has one matching row in rs2, and vice versa. * A row is only matched once. * Rows match if they have the same variables with the same values, * bNodes must map to a consistent other bNodes. * Term comparisons of nodes. * * Destructive - rs1 and rs2 are both read, possibly to exhaustion. * @param rs1 * @param rs2 * @return true if they are equivalent */ public static boolean equalsByTerm(ResultSet rs1, ResultSet rs2) { if ( ! compareHeader(rs1, rs2) ) return false ; //return equivalent(convert(rs1), convert(rs2), new BNodeIso(NodeUtils.sameTerm)) ; ResultSetRewindable rs1a = ResultSetFactory.makeRewindable(rs1) ; ResultSetRewindable rs2a = ResultSetFactory.makeRewindable(rs2) ; // Aligned rows if ( equivalent(convert(rs1a), convert(rs2a), new BNodeIso(NodeUtils.sameTerm)) ) return true ; rs1a.reset() ; rs2a.reset() ; return isomorphic(rs1a, rs2a) ; }
/** compare two result sets for equivalence. Equivalence means: * Each row in rs1 matchs the same index row in rs2. * Rows match if they have the same variables with the same values, * bNodes must map to a consistent other bNodes. * RDF term comparisons of nodes. * * Destructive - rs1 and rs2 are both read, possibly to exhaustion. * @param rs1 * @param rs2 * @return true if they are equivalent */ public static boolean equalsByTermAndOrder(ResultSet rs1, ResultSet rs2) { if ( ! compareHeader(rs1, rs2) ) return false ; return equivalentByOrder(convert(rs1) , convert(rs2), new BNodeIso(NodeUtils.sameTerm)) ; }
assertTrue(ResultSetCompare.equalsByTest(control, distinct, NodeUtils.sameTerm));
Assert.assertTrue(ResultSetCompare.isomorphic(rs, rsOpt)); } finally {
@Test public void resultSet_02() { ResultSetRewindable r1 = test(rs1) ; // not reordered r1.reset(); rs2.reset() ; assertFalse(ResultSetCompare.equalsByTermAndOrder(r1, rs2)) ; rs2.reset() ; }
public static boolean isEqual(ResultSet actual, ResultSet expected) { boolean isEqual = true; ResultSetRewindable act = null; ResultSetRewindable exp = null; if (expected != null) { // TODO File in JIRA issue: This impl is bugged (look at the code, // rs1 should be rs1a) act = ResultSetFactory.makeRewindable(actual); exp = ResultSetFactory.makeRewindable(expected) ; isEqual = ResultSetCompare.equalsByTerm(act, exp); act.reset(); exp.reset(); } if(!isEqual) { String eStr = ResultSetFormatter.asText(exp); System.out.println("Expected"); System.out.println("------"); System.out.println(eStr); String aStr = ResultSetFormatter.asText(act); System.out.println("Actual"); System.out.println("------"); System.out.println(aStr); } return isEqual; }