package com.tinkerpop.blueprints.impls.tg;
import com.tinkerpop.blueprints.Edge;
import com.tinkerpop.blueprints.Index;
import com.tinkerpop.blueprints.Vertex;
import junit.framework.TestCase;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
/**
* @author Victor Su
*/
public class TinkerMetadataWriterTest extends TestCase {
public void testNormal() throws Exception {
TinkerGraph g = TinkerGraphFactory.createTinkerGraph();
createManualIndices(g);
createKeyIndices(g);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
TinkerMetadataWriter.save(g, bos);
byte[] expected = streamToByteArray(TinkerMetadataWriterTest.class.getResourceAsStream("example-tinkergraph-metadata.dat"));
byte[] actual = bos.toByteArray();
assertEquals(expected.length, actual.length);
for (int ix = 0; ix < actual.length; ix++) {
assertEquals(expected[ix], actual[ix]);
}
}
private void createKeyIndices(final TinkerGraph g) {
g.createKeyIndex("name", Vertex.class);
g.createKeyIndex("weight", Edge.class);
}
private void createManualIndices(final TinkerGraph g) {
final Index<Vertex> idxAge = g.createIndex("age", Vertex.class);
final Vertex v1 = g.getVertex(1);
final Vertex v2 = g.getVertex(2);
idxAge.put("age", v1.getProperty("age"), v1);
idxAge.put("age", v2.getProperty("age"), v2);
final Index<Edge> idxWeight = g.createIndex("weight", Edge.class);
final Edge e7 = g.getEdge(7);
final Edge e12 = g.getEdge(12);
idxWeight.put("weight", e7.getProperty("weight"), e7);
idxWeight.put("weight", e12.getProperty("weight"), e12);
}
private byte[] streamToByteArray(final InputStream in) throws IOException {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
int nRead;
byte[] data = new byte[16384];
while ((nRead = in.read(data, 0, data.length)) != -1) {
buffer.write(data, 0, nRead);
}
buffer.flush();
return buffer.toByteArray();
}
}