package com.thinkaurelius.faunus; import com.tinkerpop.blueprints.Direction; import junit.framework.TestCase; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; /** * @author Marko A. Rodriguez (http://markorodriguez.com) */ public class FaunusEdgeTest extends TestCase { public void testSimpleSerialization() throws IOException { FaunusEdge edge1 = new FaunusEdge(1, 2, "knows"); assertEquals(edge1.getLabel(), "knows"); assertEquals(edge1.getVertex(Direction.OUT).getId(), 1l); assertEquals(edge1.getVertex(Direction.IN).getId(), 2l); ByteArrayOutputStream bytes = new ByteArrayOutputStream(); DataOutputStream out = new DataOutputStream(bytes); edge1.write(out); assertEquals(bytes.size(), 13); // long id (vlong), path counters (vlong), long vid (vlong), long vid (vlong), String label // 1 + 1 + 1 + 1 + 10 byte label = 13 FaunusEdge edge2 = new FaunusEdge(new DataInputStream(new ByteArrayInputStream(bytes.toByteArray()))); assertEquals(edge1, edge2); assertEquals(edge2.getId(), -1l); assertEquals(edge2.getLabel(), "knows"); assertEquals(edge2.getVertex(Direction.OUT).getId(), 1l); assertEquals(edge2.getVertex(Direction.IN).getId(), 2l); } public void testSerializationWithProperties() throws IOException { FaunusEdge edge1 = new FaunusEdge(1, 2, "knows"); edge1.setProperty("weight", 0.5f); edge1.setProperty("type", "coworker"); edge1.setProperty("alive", true); edge1.setProperty("bigLong", Long.MAX_VALUE); edge1.setProperty("age", 1); assertEquals(edge1.getLabel(), "knows"); assertEquals(edge1.getVertex(Direction.OUT).getId(), 1l); assertEquals(edge1.getVertex(Direction.IN).getId(), 2l); assertEquals(edge1.getProperty("weight"), 0.5f); ByteArrayOutputStream bytes = new ByteArrayOutputStream(); DataOutputStream out = new DataOutputStream(bytes); edge1.write(out); FaunusEdge edge2 = new FaunusEdge(new DataInputStream(new ByteArrayInputStream(bytes.toByteArray()))); assertEquals(edge1, edge2); assertEquals(edge2.getId(), -1l); assertEquals(edge2.getLabel(), "knows"); assertEquals(edge2.getVertex(Direction.OUT).getId(), 1l); assertEquals(edge2.getVertex(Direction.IN).getId(), 2l); assertEquals(edge2.getProperty("weight"), 0.5f); assertEquals(edge2.getProperty("type"), "coworker"); assertEquals(edge2.getProperty("alive"), true); assertEquals(edge2.getProperty("bigLong"), Long.MAX_VALUE); assertEquals(edge2.getProperty("age"), 1); assertEquals(edge2.getPropertyKeys().size(), 5); } }