package org.gradoop.flink.io.impl.dot; import org.gradoop.flink.io.api.DataSink; import org.gradoop.flink.model.GradoopFlinkTestBase; import org.gradoop.flink.model.impl.LogicalGraph; import org.gradoop.flink.util.FlinkAsciiGraphLoader; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; import java.util.List; import static org.junit.Assert.assertEquals; public class DOTDataSinkTest extends GradoopFlinkTestBase { @Rule public TemporaryFolder temporaryFolder = new TemporaryFolder(); @Test public void testWrite() throws Exception { String gdlFile = DOTDataSinkTest.class.getResource("/data/dot/input.gdl").getFile(); // load from gdl FlinkAsciiGraphLoader loader = getLoaderFromFile(gdlFile); // load input graph LogicalGraph inputGraph = loader.getLogicalGraphByVariable("input"); // create temp directory String tmpDir = temporaryFolder.getRoot().toString(); final String dotFile = tmpDir + "/check.dot"; // create data sink DataSink dataSink = new DOTDataSink(dotFile, true); // write graph dataSink.write(inputGraph); // execute getExecutionEnvironment().execute(); int graphLines = 0; int vertexLines = 0; int edgeLines = 0; // read written file List<String> dotLines = getExecutionEnvironment() .readTextFile(dotFile) .collect(); // count vertex and edge lines for (String line : dotLines){ if (line.contains("->")){ edgeLines++; } else if (line.startsWith("v")) { vertexLines++; } else if (line.startsWith("graph") || line.startsWith("digraph")) { graphLines++; } } // assert assertEquals("Wrong number of graph lines", 2, graphLines); assertEquals("Wrong number of edge lines", 4, edgeLines); assertEquals("Wrong number of vertex lines", 3, vertexLines); } }