Package net.fortytwo.ripple.model

Examples of net.fortytwo.ripple.model.ModelConnection


* @author Joshua Shinavier (http://fortytwo.net)
*/
public class RipplePrintStreamTest extends RippleTestCase {
    public void testLiterals() throws Exception {
        Model model = getTestModel();
        ModelConnection mc = model.createConnection();
        QueryEngine qe = new QueryEngine(model, null, System.out, System.err);
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        RipplePrintStream ps = new RipplePrintStream(new PrintStream(bos), qe.getLexicon());

        mc.setNamespace("xsd", "http://www.w3.org/2001/XMLSchema#", true);

        ps.print(mc.valueOf(42));
        assertEquals("42", bos.toString());
        bos.reset();
        ps.print(mc.valueOf(0));
        assertEquals("0", bos.toString());
        bos.reset();
        ps.print(mc.valueOf(-42));
        assertEquals("-42", bos.toString());
        bos.reset();

        ps.print(mc.valueOf(42.0));
        assertEquals("42.0E0", bos.toString());
        bos.reset();
        ps.print(mc.valueOf(0.0));
        assertEquals("0.0E0", bos.toString());
        bos.reset();
        ps.print(mc.valueOf(-42.0));
        assertEquals("-42.0E0", bos.toString());
        bos.reset();

        ps.print(mc.valueOf(true));
        assertEquals("true", bos.toString());
        bos.reset();
        ps.print(mc.valueOf(false));
        assertEquals("false", bos.toString());
        bos.reset();

        //...

        ps.close();
        bos.close();
        mc.close();
    }
View Full Code Here


        StackEvaluator eval = new LazyStackEvaluator();
        QueryEngine qe = new QueryEngine(model, eval, System.out, System.err);
        Collector<RippleList> expected = new Collector<RippleList>();
        Collector<RippleList> results = new Collector<RippleList>();
        QueryPipe qp = new QueryPipe(qe, results);
        ModelConnection mc = qe.getConnection();

        RippleValue
                zero = mc.valueOf(0),
                four = mc.valueOf(4),
                five = mc.valueOf(5);

        // A simple expression.
        results.clear();
        qp.put("2 3 add .\n");
        expected.clear();
View Full Code Here

/**
* @author Joshua Shinavier (http://fortytwo.net)
*/
public class RippleValueComparatorTest extends RippleTestCase {
    public void testTypeComparison() throws Exception {
        ModelConnection mc = getTestModel().createConnection();
        Comparator<RippleValue> c = mc.getComparator();

        assertTrue(c.compare(mc.valueOf(42), mc.valueOf(42)) == 0);
        assertTrue(c.compare(mc.valueOf(42.0), mc.valueOf(42)) == 0);
        assertTrue(c.compare(mc.valueOf(42), mc.valueOf("foo")) < 0);
        assertTrue(c.compare(mc.valueOf(42), new StackMappingWrapper(new NullStackMapping(), mc)) < 0);

        mc.close();
    }
View Full Code Here

        QueryEngine qe = new QueryEngine(model, eval, System.out, errStream);
        Collector<RippleList> expected = new Collector<RippleList>();
        Collector<RippleList> results = new Collector<RippleList>();
        QueryPipe qp = new QueryPipe(qe, results);
        ModelConnection mc = qe.getConnection();

        RippleValue
                five = mc.valueOf(5);

        byte[] bytes = new byte[128];
        for (int i = 0; i < bytes.length; i++) {
            bytes[i] = (i >= 32)
                    ? (byte) i
View Full Code Here

        mc.close();
    }

    public void testLists() throws Exception {
        ModelConnection mc = getTestModel().createConnection();
        Comparator<RippleValue> comparator = mc.getComparator();

        RippleValue
                minusone = mc.valueOf(-1.0),
                one = mc.valueOf(1),
                two = mc.valueOf(2);

        assertEquals(0, comparator.compare(
                createStack(mc, one, two),
                createStack(mc, one, two)));
        assertEquals(-1, comparator.compare(
                createStack(mc, one),
                createStack(mc, one, two)));

        // ...

        mc.close();
    }
View Full Code Here

/**
* @author Joshua Shinavier (http://fortytwo.net)
*/
public class LazyEvaluatorTest extends RippleTestCase {
    public void testSimple() throws Exception {
        ModelConnection mc = getTestModel().createConnection();
        Evaluator<RippleList, RippleList, ModelConnection> eval = new LazyStackEvaluator();
        Collector<RippleList> expected = new Collector<RippleList>();
        final Collector<RippleList> actual = new Collector<RippleList>();
        RippleList input;

        RippleValue op = Operator.OP;
        RippleValue
                dup = new Dup(),
                sqrt = new Sqrt(),
                abs = new Abs();
        RippleValue
                minusone = mc.valueOf(-1.0),
                one = mc.valueOf(1),
                two = mc.valueOf(2);

        // passive stack passes through unchanged
        // (1 2) -> (1 2)
        input = createStack(mc, one, two);
        expected.clear();
        expected.put(createStack(mc, one, two));
        actual.clear();
        eval.apply(input, actual, mc);
        assertCollectorsEqual(expected, actual);

        // replacement rules are applied at the head of the stack
        // (1 /dup) -> (1 1)
        input = createStack(mc, one, dup, op);
        expected.clear();
        expected.put(createStack(mc, one, one));
        actual.clear();
        eval.apply(input, actual, mc);
        assertCollectorsEqual(expected, actual);

        // evaluation is recursive
        // (1 /dup /dup) -> (1 1 1)
        input = createStack(mc, one, dup, op, dup, op);
        expected.clear();
        expected.put(createStack(mc, one, one, one));
        actual.clear();
        eval.apply(input, actual, mc);
        assertCollectorsEqual(expected, actual);

        // evaluator drops anything which can't be reduced to head-normal form
        // (/dup) ->
        input = createStack(mc, dup, op);
        expected.clear();
        actual.clear();
        eval.apply(input, actual, mc);
        assertCollectorsEqual(expected, actual);

        // evaluator drops the nil list
        // () ->
        input = mc.list();
        expected.clear();
        actual.clear();
        eval.apply(input, actual, mc);
        assertCollectorsEqual(expected, actual);

        // distributive reduction
        // (1 /sqrt /dup) -> (1 1), (-1, -1)
        input = createStack(mc, one, sqrt, op, dup, op);
        expected.clear();
        expected.put(createStack(mc, one, one));
        expected.put(createStack(mc, minusone, minusone));
        actual.clear();
        eval.apply(input, actual, mc);
        assertCollectorsEqual(expected, actual);

        // no eager reduction
        // (2 /dup 1) -> (2 /dup 1)
        input = createStack(mc, two, dup, op, one);
        expected.clear();
        expected.put(createStack(mc, two, dup, op, one));
        actual.clear();
        eval.apply(input, actual, mc);
        assertCollectorsEqual(expected, actual);

        // lists are opaque
        // ((2 /dup)) -> ((2 /dup))
        input = createStack(mc, createQueue(mc, two, dup, op));
        expected.clear();
        expected.put(createStack(mc, createQueue(mc, two, dup, op)));
        actual.clear();
        eval.apply(input, actual, mc);
        assertCollectorsEqual(expected, actual);

        // list dequotation
        // (2 /(1 /dup)) -> (2 1 1)
        input = createStack(mc, two, createQueue(mc, one, dup, op), op);
        expected.clear();
        expected.put(createStack(mc, two, one, one));
        actual.clear();
        eval.apply(input, actual, mc);
        assertCollectorsEqual(expected, actual);

        // results are not necessarily a set
        // (1 /sqrt /abs)
        input = createStack(mc, one, sqrt, op, abs, op);
        expected.clear();
        expected.put(createStack(mc, one));
        expected.put(createStack(mc, one));
        actual.clear();
        eval.apply(input, actual, mc);
        assertCollectorsEqual(expected, actual);

        mc.close();
    }
View Full Code Here

                    + "    rdf:rest rdf:nil ];\n"
                    + ".";

    public void testCreateOperator() throws Exception {
        Model model = getTestModel();
        ModelConnection mc = model.createConnection();

        InputStream is = new ByteArrayInputStream(TEST_1.getBytes());
        RDFImporter importer = new RDFImporter(mc);
        SesameInputAdapter.parse(is, importer, "", RDFFormat.TURTLE);
        mc.commit();
        is.close();

        Collector<Operator> ops = new Collector<Operator>();
        RippleValue arg;
        RippleValue a1 = mc.valueOf("1");
        RippleValue a2 = mc.valueOf("2");

        // a RippleList --> ListDequotation
        arg = mc.list().push(a2).push(a1);
        ops.clear();
        Operator.createOperator(arg, ops, mc);
        assertEquals(1, ops.size());
        assertTrue(ops.iterator().next().getMapping() instanceof ListDequotation);

        // the nil RippleList --> ListDequotation
        arg = mc.list();
        ops.clear();
        Operator.createOperator(arg, ops, mc);
        assertEquals(1, ops.size());
        assertTrue(ops.iterator().next().getMapping() instanceof ListDequotation);

        // rdf:nil --> ListDequotation
        arg = new RDFValue(RDF.NIL);
        ops.clear();
        Operator.createOperator(arg, ops, mc);
        assertEquals(1, ops.size());
        assertTrue(ops.iterator().next().getMapping() instanceof ListDequotation);

        // an rdf:List --> ListDequotation
        arg = new RDFValue(createURI("urn:test.CreateOperatorTest#simpleList", mc));
        ops.clear();
        Operator.createOperator(arg, ops, mc);
        assertEquals(1, ops.size());
        assertTrue(ops.iterator().next().getMapping() instanceof ListDequotation);

        // a branching rdf:List --> multiple ListDequotations
        arg = new RDFValue(createURI("urn:test.CreateOperatorTest#firstBranchingList", mc));
        ops.clear();
        Operator.createOperator(arg, ops, mc);
        assertEquals(2, ops.size());
        assertTrue(ops.iterator().next().getMapping() instanceof ListDequotation);

        // a PrimitiveStackRelation --> the same PrimitiveStackRelation
        arg = new Dup();
        ops.clear();
        Operator.createOperator(arg, ops, mc);
        assertEquals(1, ops.size());
        assertTrue(ops.iterator().next().getMapping() instanceof Dup);

        // an rdf:Property --> RdfPredicateRelation
        arg = new RDFValue(RDF.TYPE);
        ops.clear();
        Operator.createOperator(arg, ops, mc);
        assertEquals(1, ops.size());
        assertTrue(ops.iterator().next().getMapping() instanceof RDFPredicateMapping);

        // a non-property RdfValue which is not anything else --> RdfPredicateRelation
        arg = new RDFValue(RDF.BAG);
        ops.clear();
        Operator.createOperator(arg, ops, mc);
        assertEquals(1, ops.size());
        assertTrue(ops.iterator().next().getMapping() instanceof RDFPredicateMapping);

        // anything else --> NullFilter
        arg = mc.valueOf(42);
        ops.clear();
        Operator.createOperator(arg, ops, mc);
        assertEquals(1, ops.size());
        assertTrue(ops.iterator().next().getMapping() instanceof NullStackMapping);

        mc.close();
    }
View Full Code Here

/**
* @author Joshua Shinavier (http://fortytwo.net)
*/
public class ModelConnectionTest extends RippleTestCase {
    public void testCreateURI() throws Exception {
        ModelConnection mc = getTestModel().createConnection();

        URI uri;
        String localName, namespace;

        // Hash namespaces.

        uri = createURI("http://example.org/foo#bar", mc);
        localName = uri.getLocalName();
        namespace = uri.getNamespace();
        assertEquals(localName, "bar");
        assertEquals(namespace, "http://example.org/foo#");

        uri = createURI("http://example.org/foo#", mc);
        localName = uri.getLocalName();
        namespace = uri.getNamespace();
        assertEquals(localName, "");
        assertEquals(namespace, "http://example.org/foo#");

        uri = createURI("http://example.org/ns/foo/#bar", mc);
        localName = uri.getLocalName();
        namespace = uri.getNamespace();
        assertEquals(localName, "bar");
        assertEquals(namespace, "http://example.org/ns/foo/#");

        uri = createURI("http://example.org/ns/foo/#", mc);
        localName = uri.getLocalName();
        namespace = uri.getNamespace();
        assertEquals(localName, "");
        assertEquals(namespace, "http://example.org/ns/foo/#");

        // Slash namespaces.

        uri = createURI("http://example.org/ns/foo/bar", mc);
        localName = uri.getLocalName();
        namespace = uri.getNamespace();
        assertEquals(localName, "bar");
        assertEquals(namespace, "http://example.org/ns/foo/");

        uri = createURI("http://example.org/ns/foo/", mc);
        localName = uri.getLocalName();
        namespace = uri.getNamespace();
        assertEquals(localName, "");
        assertEquals(namespace, "http://example.org/ns/foo/");

        mc.close();
    }
View Full Code Here

/**
* @author Joshua Shinavier (http://fortytwo.net)
*/
public class LibraryTest extends RippleTestCase {
    public void testPrimitiveAlias() throws Exception {
        ModelConnection mc = this.modelConnection;

        URI dup05 = URI.create("http://fortytwo.net/2007/05/ripple/stack#dup");
        URI dup08 = URI.create("http://fortytwo.net/2007/08/ripple/stack#dup");

        RippleValue dup05Val = mc.canonicalValue(mc.valueOf(dup05));
        RippleValue dup08Val = mc.canonicalValue(mc.valueOf(dup08));

        assertNotNull(dup05Val);
        assertNotNull(dup08Val);
        assertTrue(dup05Val instanceof PrimitiveStackMapping);
        assertTrue(dup08Val instanceof PrimitiveStackMapping);
View Full Code Here

* @author Joshua Shinavier (http://fortytwo.net)
*/
public class NumericValueTest extends RippleTestCase {
    public void testValues() throws Exception {
        Model model = getTestModel();
        ModelConnection mc = model.createConnection();
        NumericValue l;

        // Create an integer literal.
        l = mc.valueOf(42);
        assertTrue(l instanceof NumericValue);
        assertEquals(NumericValue.Type.INTEGER, l.getDatatype());
        assertEquals(42, l.intValue());
        l = mc.valueOf(0);
        assertTrue(l instanceof NumericValue);
        assertEquals(NumericValue.Type.INTEGER, l.getDatatype());
        assertEquals(0, l.intValue());
        l = mc.valueOf(-42);
        assertTrue(l instanceof NumericValue);
        assertEquals(NumericValue.Type.INTEGER, l.getDatatype());
        assertEquals(-42, l.intValue());

        // Create a long literal.
        l = mc.valueOf(42l);
        assertTrue(l instanceof NumericValue);
        assertEquals(NumericValue.Type.LONG, l.getDatatype());
        assertEquals(42l, l.longValue());
        l = mc.valueOf(0l);
        assertTrue(l instanceof NumericValue);
        assertEquals(NumericValue.Type.LONG, l.getDatatype());
        assertEquals(0l, l.longValue());
        l = mc.valueOf(-42l);
        assertTrue(l instanceof NumericValue);
        assertEquals(NumericValue.Type.LONG, l.getDatatype());
        assertEquals(-42l, l.longValue());

        // Create a double literal
        l = mc.valueOf(42.0);
        assertTrue(l instanceof NumericValue);
        assertEquals(NumericValue.Type.DOUBLE, l.getDatatype());
        assertEquals(42.0, l.doubleValue());
        l = mc.valueOf(0.0);
        assertTrue(l instanceof NumericValue);
        assertEquals(NumericValue.Type.DOUBLE, l.getDatatype());
        assertEquals(0.0, l.doubleValue());
        l = mc.valueOf(-42.0);
        assertTrue(l instanceof NumericValue);
        assertEquals(NumericValue.Type.DOUBLE, l.getDatatype());
        assertEquals(-42.0, l.doubleValue());

        InputStream is = ModelTest.class.getResourceAsStream("numericLiteralTest.txt");
        Iterator<String> lines = FileUtils.getLines(is).iterator();
        is.close();
        Map<String, Integer> argsForFunc = new HashMap<String, Integer>();
        argsForFunc.put("abs", 1);
        argsForFunc.put("neg", 1);
        argsForFunc.put("add", 2);
        argsForFunc.put("sub", 2);
        argsForFunc.put("mul", 2);
        argsForFunc.put("div", 2);
        argsForFunc.put("mod", 2);
        argsForFunc.put("pow", 2);

        // Verify individual operator test cases.
        while (lines.hasNext()) {
            StringTokenizer tokenizer = new StringTokenizer(
                    lines.next(), " \t");
            String func = tokenizer.nextToken();
            String signature = func + "(";
            int argv = argsForFunc.get(func);
            NumericValue[] args = new NumericValue[argv];
            for (int i = 0; i < argv; i++) {
                String s = tokenizer.nextToken();
                if (i > 0) {
                    signature += ", ";
                }
                signature += s;
                args[i] = createNumericLiteral(s);
            }
            signature += ")";

            // Skip the '=' token
            tokenizer.nextToken();

            NumericValue correctResult = createNumericLiteral(tokenizer.nextToken());
            NumericValue actualResult = null;

            Throwable thrown = null;

            try {
                if (func.equals("abs")) {
                    actualResult = args[0].abs();
                } else if (func.equals("neg")) {
                    actualResult = args[0].neg();
                } else if (func.equals("add")) {
                    actualResult = args[0].add(args[1]);
                } else if (func.equals("sub")) {
                    actualResult = args[0].sub(args[1]);
                } else if (func.equals("mul")) {
                    actualResult = args[0].mul(args[1]);
                } else if (func.equals("div")) {
                    actualResult = args[0].div(args[1]);
                } else if (func.equals("mod")) {
                    actualResult = args[0].mod(args[1]);
                } else if (func.equals("pow")) {
                    actualResult = args[0].pow(args[1]);
                } else {
                    throw new Exception("bad function: " + func);
                }
            } catch (Throwable t) {
                thrown = t;
            }

            if (null == thrown) {
                assertTrue("for case " + signature, null != correctResult);

                switch (correctResult.getDatatype()) {
                    case INTEGER:
                        assertEquals("for case " + signature, NumericValue.Type.INTEGER, actualResult.getDatatype());
                        assertEquals("for case " + signature, correctResult.intValue(), actualResult.intValue());
                        break;
                    case LONG:
                        assertEquals("for case " + signature, NumericValue.Type.LONG, actualResult.getDatatype());
                        assertEquals("for case " + signature, correctResult.longValue(), actualResult.longValue());
                        break;
                    case DOUBLE:
                        assertEquals("for case " + signature, NumericValue.Type.DOUBLE, actualResult.getDatatype());
                        assertEquals("for case " + signature, correctResult.longValue(), actualResult.longValue());
                        break;
                }
            } else {
                if (null != correctResult) {
                    throw new Exception("for case " + signature, thrown);
                }
            }
        }

// TODO: test NumericLiteral/RDF translation

        mc.close();
    }
View Full Code Here

TOP

Related Classes of net.fortytwo.ripple.model.ModelConnection

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.