@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.sameAs(x, y) ; return NodeValue.booleanReturn(b) ; }
@Test public void testFloatDouble1() { NodeValue v1 = NodeValue.makeNodeDouble("1.5"); NodeValue v2 = NodeValue.makeNode("1.5", XSDDatatype.XSDfloat); assertTrue("Should be equal: 1.5 float and 1.5 double", NodeValue.sameAs(v1, v2)); }
@Test public void testFloatDouble5() { NodeValue v1 = NodeValue.makeNodeDouble("1.3"); NodeValue v2 = NodeValue.makeNode("1.3", XSDDatatype.XSDfloat); assertFalse("Should not be equal: 1.3 float and 1.3 double", NodeValue.sameAs(v1, v2)); }
@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 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 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)); }
static void test(String exprString, Node result) { Expr expr = ExprUtils.parse(exprString, pmap); NodeValue actual = expr.eval(null, new FunctionEnvBase()); NodeValue expected = NodeValue.makeNode(result); assertTrue("Expected = " + expected + " : Actual = " + actual, NodeValue.sameAs(expected, actual)) ; }
@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)); }
static void testDouble(String exprString, Node result, double delta) { Expr expr = ExprUtils.parse(exprString, pmap); NodeValue actual = expr.eval(null, new FunctionEnvBase()); NodeValue expected = NodeValue.makeNode(result); // Note that we don't test lexical form because we can get mismatches // between how things like doubles are expressed if (NodeValue.sameAs(expected, actual)) return; testDouble(exprString, expected.getDouble(), delta); ; }
@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 testLang1() { 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); assertTrue(NodeValue.sameAs(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)) ; }
private static void test(String string, String result) { Expr expr = ExprUtils.parse(string, pmap) ; NodeValue nv = expr.eval(null, new FunctionEnvBase()) ; Node r = NodeFactoryExtra.parseNode(result) ; NodeValue nvr = NodeValue.makeNode(r) ; assertTrue("Not same value: Expected: "+nvr+" : Actual = "+nv, NodeValue.sameAs(nvr, nv)) ; // test result must be lexical form exact. assertEquals(r, nv.asNode()) ; }
static void test(String string, String result) { Expr expr = ExprUtils.parse(string, pmap) ; NodeValue nv = expr.eval(null, new FunctionEnvBase()) ; Node r = NodeFactoryExtra.parseNode(result) ; NodeValue nvr = NodeValue.makeNode(r) ; assertTrue("Not same value: Expected: " + nvr + " : Actual = " + nv, NodeValue.sameAs(nvr, nv)) ; // test result must be lexical form exact. assertEquals(r, nv.asNode()) ; } }
@Test public void testLang2() { 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); assertTrue(NodeValue.sameAs(nv1, nv2)); assertFalse(nv1.equals(nv2)); }
@Test public void testSqrt2() { NodeValue four = NodeValue.makeDouble(4) ; NodeValue two = NodeValue.makeInteger(2) ; NodeValue result = XSDFuncOp.sqrt( four ) ; assertTrue(result.isDouble()) ; assertTrue( NodeValue.sameAs( two, result)) ; assertNotNull(result.asNode()) ; }
@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 testSqrt1() { NodeValue four = NodeValue.makeInteger(4) ; NodeValue two = NodeValue.makeDouble(2) ; NodeValue result = XSDFuncOp.sqrt( four ) ; assertTrue(result.isDouble()) ; assertFalse(result.isDecimal()) ; assertTrue( NodeValue.sameAs( two, result)) ; assertTrue( two.asNode().sameValueAs(result.asNode()) ) ; }