Package net.fortytwo.ripple.cli

Source Code of net.fortytwo.ripple.cli.DatatypeSyntaxTest

package net.fortytwo.ripple.cli;

import net.fortytwo.ripple.model.ModelConnection;
import net.fortytwo.ripple.model.RippleList;
import net.fortytwo.ripple.test.RippleTestCase;
import org.openrdf.model.Literal;
import org.openrdf.model.vocabulary.XMLSchema;

import java.util.Collection;

/**
* @author Joshua Shinavier (http://fortytwo.net)
*/
public class DatatypeSyntaxTest extends RippleTestCase {
    public void testBoolean() throws Exception {
        Collection<RippleList> results;
        RippleList stack;
        Literal l;
        ModelConnection mc = getTestModel().createConnection();

        results = reduce("true");
        assertEquals(1, results.size());
        stack = results.iterator().next();
        assertEquals(1, stack.length());
        l = (Literal) stack.getFirst().toRDF(mc).sesameValue();
        assertEquals("true", l.getLabel());
        assertEquals(XMLSchema.BOOLEAN, l.getDatatype());

        results = reduce("false");
        assertEquals(1, results.size());
        stack = results.iterator().next();
        assertEquals(1, stack.length());
        l = (Literal) stack.getFirst().toRDF(mc).sesameValue();
        assertEquals("false", l.getLabel());
        assertEquals(XMLSchema.BOOLEAN, l.getDatatype());

        mc.close();
    }

    public void testInteger() throws Exception {
        Collection<RippleList> results;
        RippleList stack;
        Literal l;
        ModelConnection mc = getTestModel().createConnection();

        results = reduce("0");
        assertEquals(1, results.size());
        stack = results.iterator().next();
        assertEquals(1, stack.length());
        l = (Literal) stack.getFirst().toRDF(mc).sesameValue();
        assertEquals("0", l.getLabel());
        assertEquals(XMLSchema.INTEGER, l.getDatatype());

        results = reduce("10");
        assertEquals(1, results.size());
        stack = results.iterator().next();
        assertEquals(1, stack.length());
        l = (Literal) stack.getFirst().toRDF(mc).sesameValue();
        assertEquals("10", l.getLabel());
        assertEquals(XMLSchema.INTEGER, l.getDatatype());

        // Leading "-" sign
        results = reduce("-5");
        assertEquals(1, results.size());
        stack = results.iterator().next();
        assertEquals(1, stack.length());
        l = (Literal) stack.getFirst().toRDF(mc).sesameValue();
        assertEquals("-5", l.getLabel());
        assertEquals(XMLSchema.INTEGER, l.getDatatype());

        // Leading "+" sign
        results = reduce("+1");
        assertEquals(1, results.size());
        stack = results.iterator().next();
        assertEquals(1, stack.length());
        l = (Literal) stack.getFirst().toRDF(mc).sesameValue();
        assertEquals("1", l.getLabel());
        assertEquals(XMLSchema.INTEGER, l.getDatatype());

        // Leading zeroes
        results = reduce("042");
        assertEquals(1, results.size());
        stack = results.iterator().next();
        assertEquals(1, stack.length());
        l = (Literal) stack.getFirst().toRDF(mc).sesameValue();
        assertEquals("42", l.getLabel());
        assertEquals(XMLSchema.INTEGER, l.getDatatype());

        mc.close();
    }

    public void testDouble() throws Exception {
        Collection<RippleList> results;
        RippleList stack;
        Literal l;
        ModelConnection mc = getTestModel().createConnection();

        results = reduce("0.0e0");
        assertEquals(1, results.size());
        stack = results.iterator().next();
        assertEquals(1, stack.length());
        l = (Literal) stack.getFirst().toRDF(mc).sesameValue();
        assertEquals("0.0", l.getLabel());
        assertEquals(XMLSchema.DOUBLE, l.getDatatype());

        // Leading '-' on exponent.
        results = reduce("10E-02");
        assertEquals(1, results.size());
        stack = results.iterator().next();
        assertEquals(1, stack.length());
        l = (Literal) stack.getFirst().toRDF(mc).sesameValue();
        assertEquals("0.1", l.getLabel());
        assertEquals(XMLSchema.DOUBLE, l.getDatatype());

        // Leading '+' on exponent.
        results = reduce("10.1E+2");
        assertEquals(1, results.size());
        stack = results.iterator().next();
        assertEquals(1, stack.length());
        l = (Literal) stack.getFirst().toRDF(mc).sesameValue();
        assertEquals("1010.0", l.getLabel());
        assertEquals(XMLSchema.DOUBLE, l.getDatatype());

        // Extra trailing zeroes are preserved (although according to the XML
        // Schema specification, they don't need to be).
        results = reduce("0.00e0");
        assertEquals(1, results.size());
        stack = results.iterator().next();
        assertEquals(1, stack.length());
        l = (Literal) stack.getFirst().toRDF(mc).sesameValue();
        assertEquals("0.0", l.getLabel());
        assertEquals(XMLSchema.DOUBLE, l.getDatatype());

        // Leading "-" on mantissa
        results = reduce("-5e11");
        assertEquals(1, results.size());
        stack = results.iterator().next();
        assertEquals(1, stack.length());
        l = (Literal) stack.getFirst().toRDF(mc).sesameValue();
        assertEquals("-5.0E11", l.getLabel());
        assertEquals(XMLSchema.DOUBLE, l.getDatatype());

        // Leading "+" on mantissa
        results = reduce("+1.2e1");
        assertEquals(1, results.size());
        stack = results.iterator().next();
        assertEquals(1, stack.length());
        l = (Literal) stack.getFirst().toRDF(mc).sesameValue();
        assertEquals("12.0", l.getLabel());
        assertEquals(XMLSchema.DOUBLE, l.getDatatype());

        // Leading zeroes
        results = reduce("00042E99");
        assertEquals(1, results.size());
        stack = results.iterator().next();
        assertEquals(1, stack.length());
        l = (Literal) stack.getFirst().toRDF(mc).sesameValue();
        assertEquals("4.2E100", l.getLabel());
        assertEquals(XMLSchema.DOUBLE, l.getDatatype());

        mc.close();
    }

    public void testDecimal() throws Exception {
        Collection<RippleList> results;
        RippleList stack;
        Literal l;
        ModelConnection mc = getTestModel().createConnection();

        results = reduce("0.0");
        assertEquals(1, results.size());
        stack = results.iterator().next();
        assertEquals(1, stack.length());
        l = (Literal) stack.getFirst().toRDF(mc).sesameValue();
        assertEquals("0.0", l.getLabel());
        assertEquals(XMLSchema.DECIMAL, l.getDatatype());

        results = reduce("10.1");
        assertEquals(1, results.size());
        stack = results.iterator().next();
        assertEquals(1, stack.length());
        l = (Literal) stack.getFirst().toRDF(mc).sesameValue();
        assertEquals("10.1", l.getLabel());
        assertEquals(XMLSchema.DECIMAL, l.getDatatype());

        // Extra trailing zeroes are preserved (although according to the XML
        // Schema specification, they don't need to be).
        results = reduce("0.00");
        assertEquals(1, results.size());
        stack = results.iterator().next();
        assertEquals(1, stack.length());
        l = (Literal) stack.getFirst().toRDF(mc).sesameValue();
        assertEquals("0.00", l.getLabel());
        assertEquals(XMLSchema.DECIMAL, l.getDatatype());

        // Leading "-" sign
        results = reduce("-5.1");
        assertEquals(1, results.size());
        stack = results.iterator().next();
        assertEquals(1, stack.length());
        l = (Literal) stack.getFirst().toRDF(mc).sesameValue();
        assertEquals("-5.1", l.getLabel());
        assertEquals(XMLSchema.DECIMAL, l.getDatatype());

        // Leading "+" sign
        results = reduce("+1.2");
        assertEquals(1, results.size());
        stack = results.iterator().next();
        assertEquals(1, stack.length());
        l = (Literal) stack.getFirst().toRDF(mc).sesameValue();
        assertEquals("1.2", l.getLabel());
        assertEquals(XMLSchema.DECIMAL, l.getDatatype());

        // Leading zeroes
        results = reduce("00042.09");
        assertEquals(1, results.size());
        stack = results.iterator().next();
        assertEquals(1, stack.length());
        l = (Literal) stack.getFirst().toRDF(mc).sesameValue();
        assertEquals("42.09", l.getLabel());
        assertEquals(XMLSchema.DECIMAL, l.getDatatype());

        mc.close();
    }
}
TOP

Related Classes of net.fortytwo.ripple.cli.DatatypeSyntaxTest

TOP
Copyright © 2018 www.massapi.com. 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.