Skip to content

Commit f46bcbb

Browse files
committed
Fix #1075
1 parent 83aced8 commit f46bcbb

File tree

6 files changed

+51
-9
lines changed

6 files changed

+51
-9
lines changed

modules/ImportPlugin/src/main/java/org/gephi/io/importer/plugin/file/ImporterDOT.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -163,9 +163,18 @@ protected void stmtList(StreamTokenizerWithMultilineLiterals streamTokenizer) th
163163
protected void stmt(StreamTokenizerWithMultilineLiterals streamTokenizer) throws Exception {
164164
//tk.nextToken();
165165

166-
if (streamTokenizer.sval == null || streamTokenizer.sval.equalsIgnoreCase("graph") ||
166+
if (streamTokenizer.sval == null) {
167+
} else if (streamTokenizer.sval.equalsIgnoreCase("graph") ||
167168
streamTokenizer.sval.equalsIgnoreCase("node")
168-
|| streamTokenizer.sval.equalsIgnoreCase("edge")) {
169+
|| streamTokenizer.sval.equalsIgnoreCase("edge")
170+
|| streamTokenizer.sval.equalsIgnoreCase("subgraph")) {
171+
172+
while (streamTokenizer.ttype != '{') {
173+
streamTokenizer.nextToken();
174+
if (streamTokenizer.ttype == StreamTokenizer.TT_EOF) {
175+
return;
176+
}
177+
}
169178
} else {
170179
String nodeId = nodeID(streamTokenizer);
171180
streamTokenizer.nextToken();

modules/ImportPlugin/src/test/java/org/gephi/io/importer/plugin/file/DOTTest.java

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,27 @@ public class DOTTest {
1111

1212
@Test
1313
public void testEmptyFieldsGraph() {
14-
ImporterDOT importer = new ImporterDOT();
15-
importer.setReader(Utils.getReader("emptyfields.dot"));
16-
17-
Container container = new ImportContainerImpl();
18-
importer.execute(container.getLoader());
19-
14+
Container container = Utils.importFile(new ImporterDOT(), "dot/emptyfields.dot");
2015
Assert.assertTrue(container.verify());
16+
NodeDraft[] nodes = Utils.toNodesArray(container);
17+
Utils.assertSameIds(nodes, "a", "b", "c");
18+
}
2119

20+
@Test
21+
public void testNamedGraph() {
22+
Container container = Utils.importFile(new ImporterDOT(), "dot/namedgraph.dot");
2223
NodeDraft[] nodes = Utils.toNodesArray(container);
24+
Utils.assertSameIds(nodes, "n");
25+
}
2326

24-
Utils.assertSameIds(nodes, "a", "b", "c");
27+
@Test
28+
public void testSubgraph() {
29+
Container container = Utils.importFile(new ImporterDOT(), "dot/subgraph.dot");
30+
31+
NodeDraft[] nodes = Utils.toNodesArray(container);
32+
Assert.assertEquals(2, nodes.length);
33+
Assert.assertEquals("a", nodes[0].getValue("foo"));
34+
Assert.assertEquals("b", nodes[1].getValue("foo"));
35+
Assert.assertEquals(1, Utils.toEdgesArray(container).length);
2536
}
2637
}

modules/ImportPlugin/src/test/java/org/gephi/io/importer/plugin/file/Utils.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,22 @@
1212
import org.gephi.io.importer.api.EdgeDraft;
1313
import org.gephi.io.importer.api.ElementDraft;
1414
import org.gephi.io.importer.api.NodeDraft;
15+
import org.gephi.io.importer.impl.ImportContainerImpl;
16+
import org.gephi.io.importer.spi.FileImporter;
17+
import org.gephi.io.importer.spi.Importer;
1518
import org.junit.Assert;
1619

1720
public class Utils {
1821

22+
public static Container importFile(FileImporter importer, String path) {
23+
importer.setReader(getReader(path));
24+
25+
Container container = new ImportContainerImpl();
26+
importer.execute(container.getLoader());
27+
28+
return container;
29+
}
30+
1931
public static NodeDraft[] toNodesArray(Container container) {
2032
List<NodeDraft> result = new ArrayList<>();
2133
container.getUnloader().getNodes().iterator().forEachRemaining(result::add);

modules/ImportPlugin/src/test/resources/org/gephi/io/importer/plugin/file/emptyfields.dot renamed to modules/ImportPlugin/src/test/resources/org/gephi/io/importer/plugin/file/dot/emptyfields.dot

File renamed without changes.
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
graph test {
2+
n
3+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
digraph g {
2+
subgraph cluster_0 {
3+
n0 [foo=a];
4+
n1 [foo=b];
5+
}
6+
n0 -> n1;
7+
}

0 commit comments

Comments
 (0)