package com.tinkerpop.blueprints.util.io.graphson;
import com.tinkerpop.blueprints.Graph;
import com.tinkerpop.blueprints.TestSuite;
import com.tinkerpop.blueprints.impls.GraphTest;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.ByteBuffer;
import java.nio.charset.Charset;
/**
* @author Stephen Mallette (http://stephen.genoprime.com)
*/
public class GraphSONWriterTestSuite extends TestSuite {
public GraphSONWriterTestSuite() {
}
public GraphSONWriterTestSuite(GraphTest graphTest) {
super(graphTest);
}
public void testGratefulGraphNormalized() throws Exception {
Graph graph = this.graphTest.generateGraph();
if (graph.getFeatures().supportsEdgeIteration && !graph.getFeatures().ignoresSuppliedIds) {
this.stopWatch();
final String readGraphSON = readFile(GraphSONReader.class.getResourceAsStream("graph-example-2-normalized.json"), Charset.forName("UTF-8"));
new GraphSONReader(graph).inputGraph(GraphSONReader.class.getResourceAsStream("graph-example-2-normalized.json"));
final ByteArrayOutputStream baos = new ByteArrayOutputStream();
new GraphSONWriter(graph).outputGraph(baos, null, null, GraphSONMode.NORMAL, true);
final String writtenGraphSON = new String(baos.toByteArray());
assertEquals(readGraphSON, writtenGraphSON);
}
graph.shutdown();
}
static String readFile(final InputStream inputStream, final Charset encoding) throws IOException {
byte[] encoded = toByteArray(inputStream);
return encoding.decode(ByteBuffer.wrap(encoded)).toString();
}
static byte[] toByteArray(final InputStream is) throws IOException{
final ByteArrayOutputStream baos = new ByteArrayOutputStream();
int reads = is.read();
while(reads != -1){
baos.write(reads);
reads = is.read();
}
return baos.toByteArray();
}
}