@Test public void testReadAttributeValues() throws GraphIOException { Schema s = GraphIO.loadSchemaFromFile(GenericGraphImplTest.SCHEMAFOLDER + "DefaultValueTestSchema.tg"); Graph g = s.createGraph(ImplementationType.GENERIC); InternalVertex v = g.createVertex(g.getGraphClass().getVertexClass("TestVertex")); for (Attribute a : v.getAttributedElementClass().getAttributeList()) { GenericGraphImplTest.testDefaultValue(v.getAttribute(a.getName()), a); } v.readAttributeValues( GraphIO.createStringReader( "f " + "[[f]] " + "{[t t] - {f} [f f] - {t f}} " + "{{f}} " + "12.34 " + "SECOND " + "42" + "[t t] " + "987654321 " + "{1 - f 2 - t} " + "(f 2.2 THIRD 42 [f t] 987654321 {1 - f 2 - t} {t} \"some String\") " + "{f} " + "\"some String\"", v.getSchema())); // parse values different from the default ones assertEquals(false, v.getAttribute("boolVertex")); assertEquals( JGraLab.vector().plus(JGraLab.vector().plus(false)), v.getAttribute("complexListVertex")); assertEquals( JGraLab.map() .plus(JGraLab.vector().plus(true).plus(true), JGraLab.set().plus(false)) .plus(JGraLab.vector().plus(false).plus(false), JGraLab.set().plus(true).plus(false)), v.getAttribute("complexMapVertex")); assertEquals(JGraLab.set().plus(JGraLab.set().plus(false)), v.getAttribute("complexSetVertex")); assertEquals(12.34, v.getAttribute("doubleVertex"), 0.001); assertEquals("SECOND", v.getAttribute("enumVertex")); assertEquals(42, (int) v.getAttribute("intVertex")); assertEquals(JGraLab.vector().plus(true).plus(true), v.getAttribute("listVertex")); assertEquals(987654321l, (long) v.getAttribute("longVertex")); assertEquals(JGraLab.map().plus(1, false).plus(2, true), v.getAttribute("mapVertex")); assertEquals( RecordImpl.empty() .plus("boolRecord", false) .plus("doubleRecord", 2.2d) .plus("enumRecord", "THIRD") .plus("intRecord", 42) .plus("listRecord", JGraLab.vector().plus(false).plus(true)) .plus("longRecord", 987654321l) .plus("mapRecord", JGraLab.map().plus(1, false).plus(2, true)) .plus("setRecord", JGraLab.set().plus(true)) .plus("stringRecord", "some String"), v.getAttribute("recordVertex")); assertEquals(JGraLab.set().plus(false), v.getAttribute("setVertex")); assertEquals("some String", v.getAttribute("stringVertex")); }
@Test public void testAccessAttributesAfterSaveAndLoad() throws GraphIOException, IOException { Schema schema = GraphIO.loadSchemaFromFile(GenericGraphImplTest.SCHEMAFOLDER + "DefaultValueTestSchema.tg"); Graph g = schema.createGraph(ImplementationType.GENERIC); Vertex v = g.createVertex(g.getGraphClass().getVertexClass("TestVertex")); File tmp = File.createTempFile("graph", "tg"); g.save(tmp.getPath()); g = GraphIO.loadGraphFromFile(tmp.getPath(), ImplementationType.GENERIC, null); v = g.getFirstVertex(); for (Attribute a : v.getAttributedElementClass().getAttributeList()) { GraphIO io = GraphIO.createStringWriter(g.getSchema()); a.getDomain().serializeGenericAttribute(io, v.getAttribute(a.getName())); assertEquals(a.getDefaultValueAsString(), io.getStringWriterResult()); } }
// Test setting attributes with values that don't conform to their domain @Test(expected = ClassCastException.class) public void testAccessAttributesFailure3() throws GraphIOException { Schema s = GraphIO.loadSchemaFromFile(GenericGraphImplTest.SCHEMAFOLDER + "DefaultValueTestSchema.tg"); Graph g = s.createGraph(ImplementationType.GENERIC); Vertex v = g.createVertex(g.getGraphClass().getVertexClass("TestVertex")); v.setAttribute("stringVertex", 42); }
// Test type specific getFirstIncidence Method @Test public void testGetFirstIncidence() throws GraphIOException { Schema s = GraphIO.loadSchemaFromFile(GenericGraphImplTest.SCHEMAFOLDER + "VertexTestSchema.tg"); Graph g = s.createGraph(ImplementationType.GENERIC); Vertex[] vertices = new Vertex[6]; vertices[0] = g.createVertex(g.getGraphClass().getVertexClass("A")); vertices[1] = g.createVertex(g.getGraphClass().getVertexClass("B")); vertices[2] = g.createVertex(g.getGraphClass().getVertexClass("C")); vertices[3] = g.createVertex(g.getGraphClass().getVertexClass("D")); vertices[4] = g.createVertex(g.getGraphClass().getVertexClass("C2")); vertices[5] = g.createVertex(g.getGraphClass().getVertexClass("D2")); EdgeClass[] edgeClasses = new EdgeClass[7]; edgeClasses[0] = g.getGraphClass().getEdgeClass("E"); edgeClasses[1] = g.getGraphClass().getEdgeClass("F"); edgeClasses[2] = g.getGraphClass().getEdgeClass("G"); edgeClasses[3] = g.getGraphClass().getEdgeClass("H"); edgeClasses[4] = g.getGraphClass().getEdgeClass("I"); edgeClasses[5] = g.getGraphClass().getEdgeClass("J"); edgeClasses[6] = g.getGraphClass().getEdgeClass("K"); for (Vertex v : vertices) { for (EdgeClass ec : edgeClasses) { assertNull(v.getFirstIncidence(ec)); assertNull(v.getFirstIncidence(ec, EdgeDirection.IN)); assertNull(v.getFirstIncidence(ec, EdgeDirection.OUT)); } } Edge[] edges = new Edge[7]; edges[0] = g.createEdge(edgeClasses[0], vertices[0], vertices[1]); edges[1] = g.createEdge(edgeClasses[1], vertices[2], vertices[3]); edges[2] = g.createEdge(edgeClasses[2], vertices[2], vertices[3]); edges[3] = g.createEdge(edgeClasses[3], vertices[0], vertices[1]); edges[4] = g.createEdge(edgeClasses[4], vertices[0], vertices[0]); edges[5] = g.createEdge(edgeClasses[5], vertices[4], vertices[5]); edges[6] = g.createEdge(edgeClasses[6], vertices[0], vertices[1]); assertEquals(vertices[0].getFirstIncidence(edgeClasses[0]), edges[0]); assertEquals(vertices[0].getFirstIncidence(edgeClasses[6]), edges[6]); assertEquals(vertices[1].getFirstIncidence(edgeClasses[0]), edges[0].getReversedEdge()); assertEquals(vertices[1].getFirstIncidence(edgeClasses[6]), edges[6].getReversedEdge()); assertEquals(vertices[2].getFirstIncidence(edgeClasses[1]), edges[1]); assertEquals(vertices[3].getFirstIncidence(edgeClasses[1]), edges[1].getReversedEdge()); assertEquals(vertices[4].getFirstIncidence(edgeClasses[5]), edges[5]); assertEquals(vertices[5].getFirstIncidence(edgeClasses[5]), edges[5].getReversedEdge()); assertEquals( vertices[0].getFirstIncidence(edgeClasses[4], EdgeDirection.IN), edges[4].getReversedEdge()); assertEquals(vertices[2].getFirstIncidence(edgeClasses[0], EdgeDirection.OUT), edges[1]); }
// Test type specific getNextVertex method @Test public void testGetNextVertex() throws GraphIOException { Schema s = GraphIO.loadSchemaFromFile(GenericGraphImplTest.SCHEMAFOLDER + "VertexTestSchema.tg"); Graph g = s.createGraph(ImplementationType.GENERIC); VertexClass[] vClasses = new VertexClass[6]; vClasses[0] = g.getGraphClass().getVertexClass("A"); vClasses[1] = g.getGraphClass().getVertexClass("B"); vClasses[2] = g.getGraphClass().getVertexClass("C"); // C: A vClasses[3] = g.getGraphClass().getVertexClass("D"); // D: B vClasses[4] = g.getGraphClass().getVertexClass("C2"); // C2: C vClasses[5] = g.getGraphClass().getVertexClass("D2"); // D2: D Vertex[] vertices = new Vertex[6]; // Order of created vertex types: A B C D C2 D2 vertices[0] = g.createVertex(vClasses[0]); assertEquals(null, vertices[0].getNextVertex(vClasses[0])); vertices[1] = g.createVertex(vClasses[1]); vertices[2] = g.createVertex(vClasses[2]); vertices[3] = g.createVertex(vClasses[3]); vertices[4] = g.createVertex(vClasses[4]); vertices[5] = g.createVertex(vClasses[5]); assertEquals(vertices[2], vertices[0].getNextVertex(vClasses[0])); assertEquals(vertices[1], vertices[0].getNextVertex(vClasses[1])); assertEquals(vertices[2], vertices[0].getNextVertex(vClasses[2])); assertEquals(vertices[3], vertices[0].getNextVertex(vClasses[3])); assertEquals(vertices[4], vertices[0].getNextVertex(vClasses[4])); assertEquals(vertices[2], vertices[1].getNextVertex(vClasses[0])); assertEquals(vertices[3], vertices[1].getNextVertex(vClasses[1])); assertEquals(vertices[2], vertices[1].getNextVertex(vClasses[2])); assertEquals(vertices[3], vertices[1].getNextVertex(vClasses[3])); assertEquals(vertices[5], vertices[1].getNextVertex(vClasses[5])); assertEquals(vertices[4], vertices[2].getNextVertex(vClasses[0])); assertEquals(vertices[3], vertices[2].getNextVertex(vClasses[1])); assertEquals(vertices[4], vertices[2].getNextVertex(vClasses[2])); assertEquals(vertices[3], vertices[2].getNextVertex(vClasses[3])); assertEquals(vertices[4], vertices[2].getNextVertex(vClasses[4])); assertEquals(vertices[5], vertices[2].getNextVertex(vClasses[5])); assertEquals(vertices[4], vertices[3].getNextVertex(vClasses[0])); assertEquals(vertices[5], vertices[3].getNextVertex(vClasses[1])); assertEquals(vertices[4], vertices[3].getNextVertex(vClasses[2])); assertEquals(vertices[5], vertices[3].getNextVertex(vClasses[3])); assertEquals(vertices[4], vertices[3].getNextVertex(vClasses[4])); assertEquals(vertices[5], vertices[3].getNextVertex(vClasses[5])); assertEquals(null, vertices[4].getNextVertex(vClasses[0])); assertEquals(vertices[5], vertices[4].getNextVertex(vClasses[1])); assertEquals(null, vertices[4].getNextVertex(vClasses[2])); assertEquals(vertices[5], vertices[4].getNextVertex(vClasses[3])); assertEquals(null, vertices[4].getNextVertex(vClasses[4])); assertEquals(vertices[5], vertices[4].getNextVertex(vClasses[5])); }
@Test public void testWriteAttributeValueToString() throws NoSuchAttributeException, IOException, GraphIOException { Schema s = GraphIO.loadSchemaFromFile(GenericGraphImplTest.SCHEMAFOLDER + "DefaultValueTestSchema.tg"); Graph g = s.createGraph(ImplementationType.GENERIC); InternalVertex v = g.createVertex(g.getGraphClass().getVertexClass("TestSubVertex")); for (Attribute a : v.getAttributedElementClass().getAttributeList()) { GenericGraphImplTest.testDefaultValue(v.getAttribute(a.getName()), a); } // Default values count as unset, so everything's u assertEquals("u", v.writeAttributeValueToString("boolVertex")); assertEquals("u", v.writeAttributeValueToString("complexListVertex")); assertEquals("u", v.writeAttributeValueToString("complexMapVertex")); assertEquals("u", v.writeAttributeValueToString("complexSetVertex")); assertEquals("u", v.writeAttributeValueToString("doubleVertex")); assertEquals("u", v.writeAttributeValueToString("enumVertex")); assertEquals("u", v.writeAttributeValueToString("intVertex")); assertEquals("u", v.writeAttributeValueToString("listVertex")); assertEquals("u", v.writeAttributeValueToString("longVertex")); assertEquals("u", v.writeAttributeValueToString("mapVertex")); assertEquals("u", v.writeAttributeValueToString("recordVertex")); assertEquals("u", v.writeAttributeValueToString("setVertex")); assertEquals("u", v.writeAttributeValueToString("stringVertex")); // Now explicity set every attribute to its current default value, so // that it becomes set. for (Attribute a : v.getAttributedElementClass().getAttributeList()) { v.setAttribute(a.getName(), v.getAttribute(a.getName())); } assertEquals("t", v.writeAttributeValueToString("boolVertex")); assertEquals("[[t][f][t]]", v.writeAttributeValueToString("complexListVertex")); assertEquals("{[t]-{t}[f]-{f}}", v.writeAttributeValueToString("complexMapVertex")); assertEquals("{{t}{f}}", v.writeAttributeValueToString("complexSetVertex")); assertEquals("1.1", v.writeAttributeValueToString("doubleVertex")); assertEquals("FIRST", v.writeAttributeValueToString("enumVertex")); assertEquals("1", v.writeAttributeValueToString("intVertex")); assertEquals("[t f t]", v.writeAttributeValueToString("listVertex")); assertEquals("1", v.writeAttributeValueToString("longVertex")); assertEquals("{1 - t 2 - f 3 - t}", v.writeAttributeValueToString("mapVertex")); assertEquals( "(t 1.1 FIRST 1[t f t]1{1 - t 2 - f 3 - t}{t f}\"test\")", v.writeAttributeValueToString("recordVertex")); assertEquals("{t f}", v.writeAttributeValueToString("setVertex")); assertEquals("\"test\"", v.writeAttributeValueToString("stringVertex")); }
@Test public void testWriteAttributeValues() throws GraphIOException, IOException { Schema s = GraphIO.loadSchemaFromFile(GenericGraphImplTest.SCHEMAFOLDER + "DefaultValueTestSchema.tg"); Graph g = s.createGraph(ImplementationType.GENERIC); InternalVertex v = g.createVertex(g.getGraphClass().getVertexClass("TestVertex")); for (Attribute a : v.getAttributedElementClass().getAttributeList()) { GenericGraphImplTest.testDefaultValue(v.getAttribute(a.getName()), a); } GraphIO io = GraphIO.createStringWriter(v.getSchema()); v.writeAttributeValues(io); // Default values count as unset, so everything's u assertEquals("u u u u u u u u u u u u u", io.getStringWriterResult()); // Now explicity set every attribute to its current default value, // so that it becomes set. for (Attribute a : v.getAttributedElementClass().getAttributeList()) { v.setAttribute(a.getName(), v.getAttribute(a.getName())); } io = GraphIO.createStringWriter(v.getSchema()); v.writeAttributeValues(io); assertEquals( "t" + "[[t][f][t]]" + "{[t]-{t}[f]-{f}}" + "{{t}{f}}" + "1.1 " + "FIRST " + "1" + "[t f t]" + "1" + "{1 - t 2 - f 3 - t}" + "(t 1.1 FIRST 1[t f t]1{1 - t 2 - f 3 - t}{t f}\"test\")" + "{t f}\"test\"", io.getStringWriterResult()); }
@Test public void testAccessAttributes() throws GraphIOException { Schema s = GraphIO.loadSchemaFromFile(GenericGraphImplTest.SCHEMAFOLDER + "DefaultValueTestSchema.tg"); Graph g = s.createGraph(ImplementationType.GENERIC); Vertex v = g.createVertex(g.getGraphClass().getVertexClass("TestVertex")); // accessing default values assertEquals(true, v.getAttribute("boolVertex")); assertEquals( JGraLab.vector() .plus(JGraLab.vector().plus(true)) .plus(JGraLab.vector().plus(false)) .plus(JGraLab.vector().plus(true)), v.getAttribute("complexListVertex")); assertEquals( JGraLab.map() .plus(JGraLab.vector().plus(true), JGraLab.set().plus(true)) .plus(JGraLab.vector().plus(false), JGraLab.set().plus(false)), v.getAttribute("complexMapVertex")); assertEquals( JGraLab.set().plus(JGraLab.set().plus(true)).plus(JGraLab.set().plus(false)), v.getAttribute("complexSetVertex")); assertEquals(1.1, v.getAttribute("doubleVertex"), 0.001); assertEquals("FIRST", v.getAttribute("enumVertex")); assertEquals(1, (int) v.getAttribute("intVertex")); assertEquals(JGraLab.vector().plus(true).plus(false).plus(true), v.getAttribute("listVertex")); assertEquals(1l, (long) v.getAttribute("longVertex")); assertEquals( JGraLab.map().plus(1, true).plus(2, false).plus(3, true), v.getAttribute("mapVertex")); assertEquals( RecordImpl.empty() .plus("boolRecord", true) .plus("doubleRecord", 1.1d) .plus("enumRecord", "FIRST") .plus("intRecord", 1) .plus("listRecord", JGraLab.vector().plus(true).plus(false).plus(true)) .plus("longRecord", 1l) .plus("mapRecord", JGraLab.map().plus(1, true).plus(2, false).plus(3, true)) .plus("setRecord", JGraLab.set().plus(true).plus(false)) .plus("stringRecord", "test"), v.getAttribute("recordVertex")); assertEquals(JGraLab.set().plus(true).plus(false), v.getAttribute("setVertex")); assertEquals("test", v.getAttribute("stringVertex")); // changing values v.setAttribute("boolVertex", false); assertEquals(false, v.getAttribute("boolVertex")); v.setAttribute( "complexListVertex", JGraLab.vector().plus(JGraLab.vector().plus(false)).plus(JGraLab.vector().plus(false))); assertEquals( JGraLab.vector().plus(JGraLab.vector().plus(false)).plus(JGraLab.vector().plus(false)), v.getAttribute("complexListVertex")); v.setAttribute( "complexMapVertex", JGraLab.map() .plus(JGraLab.vector().plus(true).plus(false), JGraLab.set().plus(false)) .plus(JGraLab.vector().plus(false).plus(true), JGraLab.set().plus(true))); assertEquals( JGraLab.map() .plus(JGraLab.vector().plus(true).plus(false), JGraLab.set().plus(false)) .plus(JGraLab.vector().plus(false).plus(true), JGraLab.set().plus(true)), v.getAttribute("complexMapVertex")); v.setAttribute("complexSetVertex", JGraLab.set().plus(JGraLab.set().plus(false))); assertEquals(JGraLab.set().plus(JGraLab.set().plus(false)), v.getAttribute("complexSetVertex")); v.setAttribute("doubleVertex", 2.2d); assertEquals(2.2d, v.getAttribute("doubleVertex"), 0.001); v.setAttribute("enumVertex", "SECOND"); assertEquals("SECOND", v.getAttribute("enumVertex")); v.setAttribute("intVertex", 42); assertEquals(42, (int) v.getAttribute("intVertex")); v.setAttribute("listVertex", JGraLab.vector().plus(false).plus(false).plus(true)); assertEquals(JGraLab.vector().plus(false).plus(false).plus(true), v.getAttribute("listVertex")); v.setAttribute("longVertex", 987654321l); assertEquals(987654321l, (long) v.getAttribute("longVertex")); v.setAttribute("mapVertex", JGraLab.map().plus(42, true).plus(24, false)); assertEquals(JGraLab.map().plus(42, true).plus(24, false), v.getAttribute("mapVertex")); v.setAttribute( "recordVertex", RecordImpl.empty() .plus("boolRecord", false) .plus("doubleRecord", 1.3d) .plus("enumRecord", "THIRD") .plus("intRecord", 42) .plus("listRecord", JGraLab.vector().plus(false).plus(true).plus(false)) .plus("longRecord", 987654321l) .plus("mapRecord", JGraLab.map().plus(42, true).plus(24, false)) .plus("setRecord", JGraLab.set().plus(false)) .plus("stringRecord", "more test")); assertEquals( RecordImpl.empty() .plus("boolRecord", false) .plus("doubleRecord", 1.3d) .plus("enumRecord", "THIRD") .plus("intRecord", 42) .plus("listRecord", JGraLab.vector().plus(false).plus(true).plus(false)) .plus("longRecord", 987654321l) .plus("mapRecord", JGraLab.map().plus(42, true).plus(24, false)) .plus("setRecord", JGraLab.set().plus(false)) .plus("stringRecord", "more test"), v.getAttribute("recordVertex")); v.setAttribute("setVertex", JGraLab.set().plus(true)); assertEquals(JGraLab.set().plus(true), v.getAttribute("setVertex")); v.setAttribute("stringVertex", "some String"); assertEquals("some String", v.getAttribute("stringVertex")); }
// Test type specific incidences() method @Test public void testIncidences() throws GraphIOException { Schema s = GraphIO.loadSchemaFromFile(GenericGraphImplTest.SCHEMAFOLDER + "VertexTestSchema.tg"); Graph g = s.createGraph(ImplementationType.GENERIC); Vertex a = g.createVertex(g.getGraphClass().getVertexClass("A")); Vertex b = g.createVertex(g.getGraphClass().getVertexClass("B")); Vertex c = g.createVertex(g.getGraphClass().getVertexClass("C")); Vertex d = g.createVertex(g.getGraphClass().getVertexClass("D")); Vertex c2 = g.createVertex(g.getGraphClass().getVertexClass("C2")); Vertex d2 = g.createVertex(g.getGraphClass().getVertexClass("D2")); HashMap<String, EdgeClass> ecs = new HashMap<>(); ecs.put("E", g.getGraphClass().getEdgeClass("E")); ecs.put("F", g.getGraphClass().getEdgeClass("F")); ecs.put("G", g.getGraphClass().getEdgeClass("G")); ecs.put("H", g.getGraphClass().getEdgeClass("H")); ecs.put("I", g.getGraphClass().getEdgeClass("I")); ecs.put("J", g.getGraphClass().getEdgeClass("J")); ecs.put("K", g.getGraphClass().getEdgeClass("K")); Iterator<Edge> iterator = a.incidences(ecs.get("E")).iterator(); assertFalse(iterator.hasNext()); iterator = a.incidences(ecs.get("E"), EdgeDirection.OUT).iterator(); assertFalse(iterator.hasNext()); iterator = c.incidences(ecs.get("F"), EdgeDirection.OUT).iterator(); assertFalse(iterator.hasNext()); Edge[] edges = new Edge[7]; edges[0] = g.createEdge(ecs.get("E"), a, b); edges[1] = g.createEdge(ecs.get("F"), c, d); edges[2] = g.createEdge(ecs.get("G"), c, d); edges[3] = g.createEdge(ecs.get("H"), a, b); edges[4] = g.createEdge(ecs.get("I"), a, a); edges[5] = g.createEdge(ecs.get("J"), c2, d2); edges[6] = g.createEdge(ecs.get("K"), a, b); Edge[] incidentEdges = new Edge[] {edges[0], edges[3], edges[6]}; Iterator<Edge> ii1 = a.incidences(ecs.get("E")).iterator(); Iterator<Edge> ii2 = a.incidences(ecs.get("E"), EdgeDirection.OUT).iterator(); for (int i = 0; i < incidentEdges.length; i++) { Edge e1 = ii1.next(); Edge e2 = ii2.next(); assertEquals(incidentEdges[i], e1); assertEquals(incidentEdges[i], e2); } assertFalse(ii1.hasNext()); assertFalse(ii2.hasNext()); incidentEdges = new Edge[] {edges[3], edges[6]}; ii1 = a.incidences(ecs.get("H")).iterator(); ii2 = a.incidences(ecs.get("H"), EdgeDirection.OUT).iterator(); for (int i = 0; i < incidentEdges.length; i++) { Edge e1 = ii1.next(); Edge e2 = ii2.next(); assertEquals(incidentEdges[i], e1); assertEquals(incidentEdges[i], e2); } assertFalse(ii1.hasNext()); assertFalse(ii2.hasNext()); incidentEdges = new Edge[] { edges[0].getReversedEdge(), edges[3].getReversedEdge(), edges[6].getReversedEdge() }; ii1 = b.incidences(ecs.get("E")).iterator(); ii2 = b.incidences(ecs.get("E"), EdgeDirection.IN).iterator(); for (int i = 0; i < incidentEdges.length; i++) { Edge e1 = ii1.next(); Edge e2 = ii2.next(); assertEquals(incidentEdges[i], e1); assertEquals(incidentEdges[i], e2); } assertFalse(ii1.hasNext()); assertFalse(ii2.hasNext()); incidentEdges = new Edge[] {edges[1]}; ii1 = c.incidences(ecs.get("F")).iterator(); ii2 = c.incidences(ecs.get("F"), EdgeDirection.OUT).iterator(); for (int i = 0; i < incidentEdges.length; i++) { Edge e1 = ii1.next(); Edge e2 = ii2.next(); assertEquals(incidentEdges[i], e1); assertEquals(incidentEdges[i], e2); } assertFalse(ii1.hasNext()); assertFalse(ii2.hasNext()); incidentEdges = new Edge[] {edges[2]}; ii1 = c.incidences(ecs.get("G")).iterator(); ii2 = c.incidences(ecs.get("G"), EdgeDirection.OUT).iterator(); for (int i = 0; i < incidentEdges.length; i++) { Edge e1 = ii1.next(); Edge e2 = ii2.next(); assertEquals(incidentEdges[i], e1); assertEquals(incidentEdges[i], e2); } assertFalse(ii1.hasNext()); assertFalse(ii2.hasNext()); incidentEdges = new Edge[] {edges[4], edges[4].getReversedEdge()}; ii1 = a.incidences(ecs.get("I")).iterator(); for (int i = 0; i < incidentEdges.length; i++) { Edge e1 = ii1.next(); assertEquals(incidentEdges[i], e1); } assertFalse(ii1.hasNext()); incidentEdges = new Edge[] {edges[5]}; ii1 = c2.incidences(ecs.get("J")).iterator(); ii2 = c2.incidences(ecs.get("J"), EdgeDirection.OUT).iterator(); for (int i = 0; i < incidentEdges.length; i++) { Edge e1 = ii1.next(); Edge e2 = ii2.next(); assertEquals(incidentEdges[i], e1); assertEquals(incidentEdges[i], e2); } assertFalse(ii1.hasNext()); assertFalse(ii2.hasNext()); }
// Test type specific getDegree Methods (VertexTestSchema.tg) @Test public void testGetDegree() throws GraphIOException { Schema s = GraphIO.loadSchemaFromFile(GenericGraphImplTest.SCHEMAFOLDER + "VertexTestSchema.tg"); Graph g = s.createGraph(ImplementationType.GENERIC); Vertex[] vertices = new Vertex[6]; vertices[0] = g.createVertex(g.getGraphClass().getVertexClass("A")); vertices[1] = g.createVertex(g.getGraphClass().getVertexClass("B")); vertices[2] = g.createVertex(g.getGraphClass().getVertexClass("C")); vertices[3] = g.createVertex(g.getGraphClass().getVertexClass("D")); vertices[4] = g.createVertex(g.getGraphClass().getVertexClass("C2")); vertices[5] = g.createVertex(g.getGraphClass().getVertexClass("D2")); EdgeClass[] edgeClasses = new EdgeClass[7]; edgeClasses[0] = g.getGraphClass().getEdgeClass("E"); edgeClasses[1] = g.getGraphClass().getEdgeClass("F"); edgeClasses[2] = g.getGraphClass().getEdgeClass("G"); edgeClasses[3] = g.getGraphClass().getEdgeClass("H"); edgeClasses[4] = g.getGraphClass().getEdgeClass("I"); edgeClasses[5] = g.getGraphClass().getEdgeClass("J"); edgeClasses[6] = g.getGraphClass().getEdgeClass("K"); assertEquals(0, vertices[0].getDegree(edgeClasses[0])); assertEquals(0, vertices[0].getDegree(edgeClasses[0], EdgeDirection.OUT)); assertEquals(0, vertices[1].getDegree(edgeClasses[0])); assertEquals(0, vertices[1].getDegree(edgeClasses[0], EdgeDirection.IN)); assertEquals(0, vertices[2].getDegree(edgeClasses[1])); assertEquals(0, vertices[2].getDegree(edgeClasses[1], EdgeDirection.OUT)); assertEquals(0, vertices[3].getDegree(edgeClasses[1])); assertEquals(0, vertices[3].getDegree(edgeClasses[1], EdgeDirection.IN)); g.createEdge(edgeClasses[0], vertices[0], vertices[1]); g.createEdge(edgeClasses[1], vertices[2], vertices[3]); g.createEdge(edgeClasses[2], vertices[2], vertices[3]); g.createEdge(edgeClasses[3], vertices[0], vertices[1]); g.createEdge(edgeClasses[4], vertices[0], vertices[0]); g.createEdge(edgeClasses[5], vertices[4], vertices[5]); g.createEdge(edgeClasses[6], vertices[0], vertices[1]); assertEquals(3, vertices[0].getDegree(edgeClasses[0])); assertEquals(3, vertices[0].getDegree(edgeClasses[0], EdgeDirection.OUT)); assertEquals(3, vertices[1].getDegree(edgeClasses[0])); assertEquals(3, vertices[1].getDegree(edgeClasses[0], EdgeDirection.IN)); assertEquals(1, vertices[2].getDegree(edgeClasses[1])); assertEquals(1, vertices[2].getDegree(edgeClasses[1], EdgeDirection.OUT)); assertEquals(1, vertices[3].getDegree(edgeClasses[1])); assertEquals(1, vertices[3].getDegree(edgeClasses[1], EdgeDirection.IN)); assertEquals(1, vertices[2].getDegree(edgeClasses[2])); assertEquals(1, vertices[2].getDegree(edgeClasses[2], EdgeDirection.OUT)); assertEquals(1, vertices[3].getDegree(edgeClasses[2])); assertEquals(1, vertices[3].getDegree(edgeClasses[2], EdgeDirection.IN)); assertEquals(2, vertices[0].getDegree(edgeClasses[3])); assertEquals(2, vertices[0].getDegree(edgeClasses[3], EdgeDirection.OUT)); assertEquals(2, vertices[1].getDegree(edgeClasses[3])); assertEquals(2, vertices[1].getDegree(edgeClasses[3], EdgeDirection.IN)); assertEquals(2, vertices[0].getDegree(edgeClasses[4])); assertEquals(1, vertices[0].getDegree(edgeClasses[4], EdgeDirection.OUT)); assertEquals(1, vertices[0].getDegree(edgeClasses[4], EdgeDirection.IN)); assertEquals(1, vertices[4].getDegree(edgeClasses[5])); assertEquals(1, vertices[4].getDegree(edgeClasses[5], EdgeDirection.OUT)); assertEquals(1, vertices[5].getDegree(edgeClasses[5])); assertEquals(1, vertices[5].getDegree(edgeClasses[5], EdgeDirection.IN)); assertEquals(1, vertices[0].getDegree(edgeClasses[6])); assertEquals(1, vertices[0].getDegree(edgeClasses[6], EdgeDirection.OUT)); assertEquals(1, vertices[1].getDegree(edgeClasses[6])); assertEquals(1, vertices[1].getDegree(edgeClasses[6], EdgeDirection.IN)); }