@Override public NodeValue eval(NodeValue x, NodeValue y) { // Note: notSameValueAs means "known to be different" // sameValueAs means "know to be the same value" // so they are not opposites boolean b = NodeValue.notSameAs(x, y) ; return NodeValue.booleanReturn(b) ; }
/** Return true if the two Nodes are known to be different, * return false if the two Nodes are known to be the same, * else throw ExprEvalException */ public static boolean notSameAs(Node n1, Node n2) { return notSameAs(NodeValue.makeNode(n1), NodeValue.makeNode(n2)) ; }
@Test public void testSameValue1() { NodeValue nv1 = NodeValue.makeInteger(5); NodeValue nv2 = NodeValue.makeInteger(7); assertTrue("Same values (" + nv1 + "," + nv2 + ")", NodeValue.notSameAs(nv1, nv2)); assertFalse("Same values (" + nv1 + "," + nv2 + ")", NodeValue.sameAs(nv1, nv2)); NodeValue nv3 = NodeValue.makeInteger(5); assertTrue("Different values (" + nv1 + "," + nv3 + ")", NodeValue.sameAs(nv1, nv3)); assertFalse("Different values - notNotSame (" + nv1 + "," + nv3 + ")", NodeValue.notSameAs(nv1, nv3)); }
@Test public void testSameValue3() { NodeValue nv1 = NodeValue.makeDecimal("1.5"); NodeValue nv2 = NodeValue.makeDecimal("1.6"); assertTrue("Same values (" + nv1 + "," + nv2 + ")", NodeValue.notSameAs(nv1, nv2)); assertFalse("Same values (" + nv1 + "," + nv2 + ")", NodeValue.sameAs(nv1, nv2)); NodeValue nv3 = NodeValue.makeDecimal("1.50"); assertTrue("Different values (" + nv1 + "," + nv3 + ")", NodeValue.sameAs(nv1, nv3)); assertFalse("Different values - notNotSame (" + nv1 + "," + nv3 + ")", NodeValue.notSameAs(nv1, nv3)); }
@Test public void testSameValue4() { NodeValue nv1 = NodeValue.makeDecimal("3"); NodeValue nv2 = NodeValue.makeInteger(4); assertTrue("Same values (" + nv1 + "," + nv2 + ")", NodeValue.notSameAs(nv1, nv2)); assertFalse("Same values (" + nv1 + "," + nv2 + ")", NodeValue.sameAs(nv1, nv2)); NodeValue nv3 = NodeValue.makeInteger(3); assertTrue("Different values (" + nv1 + "," + nv3 + ")", NodeValue.sameAs(nv1, nv3)); assertFalse("Different values - notNotSame (" + nv1 + "," + nv3 + ")", NodeValue.notSameAs(nv1, nv3)); }
@Test public void testSameValue2() { NodeValue nv1 = NodeValue.makeInteger(5); NodeValue nv2 = NodeValue.makeNodeInteger(7); assertTrue("Same values (" + nv1 + "," + nv2 + ")", NodeValue.notSameAs(nv1, nv2)); assertFalse("Same values (" + nv1 + "," + nv2 + ")", NodeValue.sameAs(nv1, nv2)); NodeValue nv3 = NodeValue.makeNodeInteger(5); assertTrue("Different values (" + nv1 + "," + nv3 + ")", NodeValue.sameAs(nv1, nv3)); assertFalse("Different values - notNotSame (" + nv1 + "," + nv3 + ")", NodeValue.notSameAs(nv1, nv3)); }
@Test public void testSameValue5() { NodeValue nv1 = NodeValue.makeDecimal("-1.5"); // Must be exact for // double and decimal NodeValue nv2 = NodeValue.makeDouble(1.5); assertTrue("Same values (" + nv1 + "," + nv2 + ")", NodeValue.notSameAs(nv1, nv2)); assertFalse("Same values (" + nv1 + "," + nv2 + ")", NodeValue.sameAs(nv1, nv2)); NodeValue nv3 = NodeValue.makeDouble(-1.5); assertTrue("Different values (" + nv1 + "," + nv3 + ")", NodeValue.sameAs(nv1, nv3)); assertFalse("Different values - notNotSame (" + nv1 + "," + nv3 + ")", NodeValue.notSameAs(nv1, nv3)); }
@Test public void testSameValue7() { NodeValue nv1 = NodeValue.makeBoolean(true); NodeValue nv2 = NodeValue.makeString("a"); assertTrue("Same values (" + nv1 + "," + nv2 + ")", NodeValue.notSameAs(nv1, nv2)); assertFalse("Same values (" + nv1 + "," + nv2 + ")", NodeValue.sameAs(nv1, nv2)); NodeValue nv3 = NodeValue.makeNodeBoolean(true); assertTrue("Different values (" + nv1 + "," + nv3 + ")", NodeValue.sameAs(nv1, nv3)); assertFalse("Different values - notNotSame (" + nv1 + "," + nv3 + ")", NodeValue.notSameAs(nv1, nv3)); }
@Test public void testSameValue6() { NodeValue nv1 = NodeValue.makeNodeInteger(17); NodeValue nv2 = NodeValue.makeDouble(34); assertTrue("Same values (" + nv1 + "," + nv2 + ")", NodeValue.notSameAs(nv1, nv2)); assertFalse("Same values (" + nv1 + "," + nv2 + ")", NodeValue.sameAs(nv1, nv2)); NodeValue nv3 = NodeValue.makeDouble(17); assertTrue("Different values (" + nv1 + "," + nv3 + ")", NodeValue.sameAs(nv1, nv3)); assertFalse("Different values - notNotSame (" + nv1 + "," + nv3 + ")", NodeValue.notSameAs(nv1, nv3)); }
@Test public void testLang3() { Node n1 = org.apache.jena.graph.NodeFactory.createLiteral("xyz", "en"); NodeValue nv1 = NodeValue.makeNode(n1); Node n2 = org.apache.jena.graph.NodeFactory.createLiteral("xyz", "en"); NodeValue nv2 = NodeValue.makeNode(n2); assertFalse(NodeValue.notSameAs(nv1, nv2)); }
@Test public void testSameDateTime_4() { // These are not the same. NodeValue nv1 = NodeValue.makeDateTime("2007-09-04T10:22:03+01:00") ; NodeValue nv2 = NodeValue.makeDateTime("2007-09-04T10:22:03Z") ; assertFalse(NodeValue.sameAs(nv1, nv2)) ; assertTrue(NodeValue.notSameAs(nv1, nv2)) ; }
@Test public void testSameDateTime_1() { NodeValue nv1 = NodeValue.makeDateTime("2007-09-04T09:22:03") ; NodeValue nv2 = NodeValue.makeDateTime("2007-09-04T09:22:03") ; assertTrue(NodeValue.sameAs(nv1, nv2)) ; assertFalse(NodeValue.notSameAs(nv1, nv2)) ; }
@Test public void testSameDate_1() { NodeValue nv1 = NodeValue.makeDate("2007-09-04") ; NodeValue nv2 = NodeValue.makeDate("2007-09-04") ; assertTrue(NodeValue.sameAs(nv1, nv2)) ; assertFalse(NodeValue.notSameAs(nv1, nv2)) ; }
@Test public void testSameDateTime_2() { NodeValue nv1 = NodeValue.makeDateTime("2007-09-04T09:22:03") ; NodeValue nv2 = NodeValue.makeDateTime("2007-09-04T19:00:00") ; assertFalse(NodeValue.sameAs(nv1, nv2)) ; assertTrue(NodeValue.notSameAs(nv1, nv2)) ; }
@Test public void testSameDateTime_3() { // These are the same. NodeValue nv1 = NodeValue.makeDateTime("2007-09-04T10:22:03+01:00") ; NodeValue nv2 = NodeValue.makeDateTime("2007-09-04T09:22:03Z") ; assertTrue(NodeValue.sameAs(nv1, nv2)) ; assertFalse(NodeValue.notSameAs(nv1, nv2)) ; }
@Test public void testSameDate_2() { NodeValue nv1 = NodeValue.makeDate("2007-09-04Z") ; NodeValue nv2 = NodeValue.makeDate("2007-09-04+00:00") ; assertTrue(NodeValue.sameAs(nv1, nv2)) ; assertFalse(NodeValue.notSameAs(nv1, nv2)) ; }
@Test public void testSameDateTime_5() { NodeValue nv1 = NodeValue.makeDateTime("2007-09-04T10:22:03+01:00") ; NodeValue nv2 = NodeValue.makeDateTime("2007-09-04T09:22:03") ; // No timezone try { NodeValue.sameAs(nv1, nv2) ; fail("Should not sameValueAs (but did) "+nv1+" & "+nv2) ; } catch (ExprEvalException ex) {} try { NodeValue.notSameAs(nv1, nv2) ; fail("Should not notSameValueAs (but did) "+nv1+" & "+nv2) ; } catch (ExprEvalException ex) {} }
@Test public void testLang4() { Node n1 = org.apache.jena.graph.NodeFactory.createLiteral("xyz", "en"); NodeValue nv1 = NodeValue.makeNode(n1); Node n2 = org.apache.jena.graph.NodeFactory.createLiteral("xyz", "EN"); NodeValue nv2 = NodeValue.makeNode(n2); assertFalse(NodeValue.notSameAs(nv1, nv2)); assertFalse(nv1.equals(nv2)); }
@Test public void testSameUnknown_2() { NodeValue nv1 = NodeValue.makeNode(NodeFactory.createBlankNode()) ; NodeValue nv2 = NodeValue.makeNode(NodeFactory.createURI("test:abc")) ; assertFalse(NodeValue.sameAs(nv1, nv2)) ; assertTrue(NodeValue.notSameAs(nv1, nv2)) ; try { NodeValue.compare(nv1, nv2) ; fail("Should not compare (but did) "+nv1+" & "+nv2) ; } catch (ExprEvalException ex) { /* expected */} }
@Test public void testSameUnknown_1() { NodeValue nv1 = NodeValue.makeNode(NodeFactory.createURI("test:abc")) ; NodeValue nv2 = NodeValue.makeNode(NodeFactory.createURI("test:abc")) ; assertTrue(NodeValue.sameAs(nv1, nv2)) ; assertFalse(NodeValue.notSameAs(nv1, nv2)) ; try { NodeValue.compare(nv1, nv2) ; fail("Should not compare (but did) "+nv1+" & "+nv2) ; } catch (ExprEvalException ex) { /* expected */} }