package com.thinkaurelius.faunus.formats.rexster.util; import com.thinkaurelius.faunus.BaseTest; import com.thinkaurelius.faunus.FaunusEdge; import com.thinkaurelius.faunus.FaunusVertex; import com.tinkerpop.blueprints.Direction; import com.tinkerpop.blueprints.Edge; import com.tinkerpop.blueprints.Graph; import com.tinkerpop.blueprints.Vertex; import com.tinkerpop.blueprints.impls.tg.TinkerGraph; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.DataInput; import java.io.DataInputStream; import java.io.DataOutput; import java.io.DataOutputStream; import java.io.IOException; /** * @author Marko A. Rodriguez (http://markorodriguez.com) */ public class VertexToFaunusBinaryTest extends BaseTest { public void testConversion() throws IOException { Graph graph = new TinkerGraph(); Vertex marko = graph.addVertex(1); marko.setProperty("name", "marko"); marko.setProperty("age", 32); Vertex stephen = graph.addVertex(3); stephen.setProperty("name", "stephen"); stephen.setProperty("weight", 160.42); stephen.setProperty("male", true); Edge e = graph.addEdge(null, marko, stephen, "knows"); e.setProperty("weight", 0.2); e.setProperty("type", "coworker"); ByteArrayOutputStream bytes1 = new ByteArrayOutputStream(); DataOutput out = new DataOutputStream(bytes1); VertexToFaunusBinary.write(marko, out); VertexToFaunusBinary.write(stephen, out); DataInput in = new DataInputStream(new ByteArrayInputStream(bytes1.toByteArray())); FaunusVertex markoFaunus = new FaunusVertex(in); assertEquals(markoFaunus.getProperty("name"), "marko"); assertEquals(markoFaunus.getProperty("age"), 32); assertEquals(markoFaunus.getPropertyKeys().size(), 2); assertEquals(asList(markoFaunus.getEdges(Direction.OUT)).size(), 1); assertFalse(markoFaunus.getEdges(Direction.IN).iterator().hasNext()); assertTrue(markoFaunus.getEdges(Direction.OUT, "knows").iterator().hasNext()); assertFalse(markoFaunus.getEdges(Direction.OUT, "blah").iterator().hasNext()); FaunusEdge edge = (FaunusEdge) markoFaunus.getEdges(Direction.OUT).iterator().next(); assertEquals(edge.getLabel(), "knows"); assertEquals(edge.getProperty("weight"), 0.2); assertEquals(edge.getProperty("type"), "coworker"); assertEquals(edge.getPropertyKeys().size(), 2); assertEquals(edge.getVertex(Direction.IN).getId(), 3l); assertEquals(edge.getVertex(Direction.OUT).getId(), 1l); FaunusVertex stephenFaunus = new FaunusVertex(in); assertEquals(stephenFaunus.getProperty("name"), "stephen"); assertEquals(stephenFaunus.getProperty("weight"), 160.42); assertTrue((Boolean) stephenFaunus.getProperty("male")); assertEquals(stephenFaunus.getPropertyKeys().size(), 3); assertEquals(asList(stephenFaunus.getEdges(Direction.IN)).size(), 1); assertFalse(stephenFaunus.getEdges(Direction.OUT).iterator().hasNext()); assertTrue(stephenFaunus.getEdges(Direction.IN, "knows").iterator().hasNext()); assertFalse(stephenFaunus.getEdges(Direction.IN, "blah").iterator().hasNext()); edge = (FaunusEdge) stephenFaunus.getEdges(Direction.IN).iterator().next(); assertEquals(edge.getLabel(), "knows"); assertEquals(edge.getProperty("weight"), 0.2); assertEquals(edge.getProperty("type"), "coworker"); assertEquals(edge.getPropertyKeys().size(), 2); assertEquals(edge.getVertex(Direction.IN).getId(), 3l); assertEquals(edge.getVertex(Direction.OUT).getId(), 1l); } }