@Test @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES) public void shouldReturnEmptyIteratorIfNoProperties() { final Vertex v = graph.addVertex(); assertEquals(0, IteratorUtils.count(v.properties())); } }
@Test @LoadGraphWith(MODERN) public void g_V_peerPressure_hasXclusterX() { final Traversal<Vertex, Vertex> traversal = get_g_V_peerPressure_hasXclusterX(); printTraversalForm(traversal); assertEquals(6, IteratorUtils.count(traversal)); }
@Test @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES) @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES) @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_PROPERTY) @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = VertexFeatures.FEATURE_MULTI_PROPERTIES, supported = false) public void shouldSupportMultiPropertyIfTheSameKeyCanBeAssignedMoreThanOnce() throws Exception { try { final Vertex v = graph.addVertex("name", "stephen", "name", "steve"); if (2 == IteratorUtils.count(v.properties())) fail(String.format(INVALID_FEATURE_SPECIFICATION, VertexFeatures.class.getSimpleName(), VertexFeatures.FEATURE_MULTI_PROPERTIES)); } catch (Exception ex) { validateException(VertexProperty.Exceptions.multiPropertiesNotSupported(), ex); } }
public static void assertNoEdgeGraph(final Graph g1, final boolean assertDouble, final boolean lossyForId) { assertEquals(2, IteratorUtils.count(g1.vertices())); assertEquals(1, IteratorUtils.count(g1.edges())); final Vertex v1 = g1.traversal().V().has("name", "marko").next(); assertEquals(29, v1.<Integer>value("age").intValue()); assertEquals(2, v1.keys().size()); assertEquals(Vertex.DEFAULT_LABEL, v1.label()); assertId(g1, lossyForId, v1, 1); final List<Edge> v1Edges = IteratorUtils.list(v1.edges(Direction.BOTH)); assertEquals(1, v1Edges.size()); v1Edges.forEach(e -> { if (e.inVertex().value("name").equals("vadas")) { assertEquals(Edge.DEFAULT_LABEL, e.label()); if (assertDouble) assertWeightLoosely(0.5d, e); else assertWeightLoosely(0.5f, e); assertEquals(1, e.keys().size()); assertId(g1, lossyForId, e, 7); } else { fail("Edge not expected"); } }); }
@Test @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES) @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_CUSTOM_IDS) public void shouldIterateVerticesWithCustomIdSupportUsingVertices() { final Vertex v1 = graph.addVertex(); final Vertex v2 = graph.addVertex(); graph.addVertex(); tryCommit(graph, graph -> { assertEquals(2, IteratorUtils.count(graph.vertices(v1, v2))); }); }
@Test @LoadGraphWith(MODERN) public void g_V_pageRank_hasXpageRankX() { final Traversal<Vertex, Vertex> traversal = get_g_V_pageRank_hasXpageRankX(); printTraversalForm(traversal); assertEquals(6, IteratorUtils.count(traversal)); }
@Test @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES) @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES) @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_PROPERTY) @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = VertexFeatures.FEATURE_MULTI_PROPERTIES) @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = VertexFeatures.FEATURE_DUPLICATE_MULTI_PROPERTIES, supported = false) public void shouldSupportIdenticalMultiPropertyIfTheSameKeyCanBeAssignedSameValueMoreThanOnce() throws Exception { try { final Vertex v = graph.addVertex("name", "stephen", "name", "stephen"); if (2 == IteratorUtils.count(v.properties())) fail(String.format(INVALID_FEATURE_SPECIFICATION, VertexFeatures.class.getSimpleName(), VertexFeatures.FEATURE_DUPLICATE_MULTI_PROPERTIES)); } catch (Exception ex) { validateException(VertexProperty.Exceptions.identicalMultiPropertiesNotSupported(), ex); } }
@Test @LoadGraphWith(MODERN) @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_REMOVE_PROPERTY) public void g_V_properties_drop() { final Traversal<Vertex, VertexProperty> traversal = get_g_V_properties_drop(); printTraversalForm(traversal); assertFalse(traversal.hasNext()); assertEquals(6, IteratorUtils.count(g.V())); assertEquals(6, IteratorUtils.count(g.E())); g.V().forEachRemaining(vertex -> assertEquals(0, IteratorUtils.count(vertex.properties()))); }
@Test @LoadGraphWith(MODERN) public void g_V_connectedComponent_hasXcomponentX() { final Traversal<Vertex, Vertex> traversal = get_g_V_connectedComponent_hasXcomponentX(); printTraversalForm(traversal); assertEquals(6, IteratorUtils.count(traversal)); }
@Test @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES) @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_CUSTOM_IDS) public void shouldIterateVerticesWithCustomIdSupportUsingStringRepresentations() { final Vertex v1 = graph.addVertex(); final Vertex v2 = graph.addVertex(); graph.addVertex(); tryCommit(graph, graph -> { assertEquals(2, IteratorUtils.count(graph.vertices(v1.id().toString(), v2.id().toString()))); }); }
@Test @LoadGraphWith(MODERN) public void g_V_dedup_connectedComponent_hasXcomponentX() { final Traversal<Vertex, Vertex> traversal = get_g_V_dedup_connectedComponent_hasXcomponentX(); printTraversalForm(traversal); assertEquals(6, IteratorUtils.count(traversal)); }
@Test @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES) @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES) public void shouldReturnEmptyIteratorIfNoProperties() { final Vertex v = graph.addVertex(); final Edge e = v.addEdge("knows", v); assertEquals(0, IteratorUtils.count(e.properties())); }
@Test @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES) @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES) public void shouldReadGraphMLWithoutEdgeIds() throws IOException { final GraphReader reader = GraphMLReader.build().strict(false).create(); try (final InputStream stream = IoTest.class.getResourceAsStream(TestHelper.convertPackageToResourcePath(GraphMLResourceAccess.class) + "graph-no-edge-ids.xml")) { reader.readGraph(stream, graph); } assertEquals(1, IteratorUtils.count(graph.edges())); assertEquals(2, IteratorUtils.count(graph.vertices())); }
@Test @LoadGraphWith(MODERN) @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_REMOVE_VERTICES) public void g_V_drop() { final Traversal<Vertex, Vertex> traversal = get_g_V_drop(); printTraversalForm(traversal); assertFalse(traversal.hasNext()); assertEquals(0, IteratorUtils.count(g.V())); assertEquals(0, IteratorUtils.count(g.E())); }
@Test @LoadGraphWith(LoadGraphWith.GraphData.MODERN) @FeatureRequirementSet(FeatureRequirementSet.Package.SIMPLE) @FeatureRequirement(featureClass = Graph.Features.EdgePropertyFeatures.class, feature = Graph.Features.EdgePropertyFeatures.FEATURE_DOUBLE_VALUES) public void shouldConstructReferenceEdge() { g.E(convertToEdgeId("marko", "knows", "vadas")).next().property("year", 2002); final ReferenceEdge referenceEdge = ReferenceFactory.detach(g.E(convertToEdgeId("marko", "knows", "vadas")).next()); assertEquals(convertToEdgeId("marko", "knows", "vadas"), referenceEdge.id()); assertEquals(0, IteratorUtils.count(referenceEdge.properties())); assertEquals(2, IteratorUtils.count(referenceEdge.vertices(Direction.BOTH))); }
@Test @LoadGraphWith(MODERN) @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_REMOVE_EDGES) public void g_V_outE_drop() { final Traversal<Vertex, Edge> traversal = get_g_V_outE_drop(); printTraversalForm(traversal); assertFalse(traversal.hasNext()); assertEquals(6, IteratorUtils.count(g.V())); assertEquals(0, IteratorUtils.count(g.E())); }
@Test @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES) @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_CUSTOM_IDS) public void shouldIterateVerticesWithCustomIdSupportUsingVertexIds() { final Vertex v1 = graph.addVertex(); final Vertex v2 = graph.addVertex(); graph.addVertex(); tryCommit(graph, graph -> { assertEquals(2, IteratorUtils.count(graph.vertices(v1.id(), v2.id()))); }); }
@Test @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES) @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_NUMERIC_IDS) public void shouldIterateVerticesWithNumericIdSupportUsingLongRepresentations() { // if the graph supports id assigned, it should allow it. if the graph does not, it will generate one final Vertex v1 = graph.features().vertex().supportsUserSuppliedIds() ? graph.addVertex(T.id, 1l) : graph.addVertex(); final Vertex v2 = graph.features().vertex().supportsUserSuppliedIds() ? graph.addVertex(T.id, 2l) : graph.addVertex(); graph.addVertex(); tryCommit(graph, graph -> { assertEquals(2, IteratorUtils.count(graph.vertices(Long.parseLong(v1.id().toString()), Long.parseLong(v2.id().toString())))); }); }
@Test @LoadGraphWith(MODERN) @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES) public void g_VX1X_asXaX_outXcreatedX_addEXcreatedByX_toXaX() { final Traversal<Vertex, Edge> traversal = get_g_VX1X_asXaX_outXcreatedX_addEXcreatedByX_toXaX(convertToVertexId("marko")); printTraversalForm(traversal); int count = 0; while (traversal.hasNext()) { final Edge edge = traversal.next(); assertEquals("createdBy", edge.label()); assertEquals(0, IteratorUtils.count(edge.properties())); count++; } assertEquals(1, count); assertEquals(7, IteratorUtils.count(g.E())); assertEquals(6, IteratorUtils.count(g.V())); }
@Test @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES) @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_UUID_IDS) public void shouldIterateVerticesWithUuidIdSupportUsingStringRepresentations() { // if the graph supports id assigned, it should allow it. if the graph does not, it will generate one final Vertex v1 = graph.features().vertex().supportsUserSuppliedIds() ? graph.addVertex(T.id, UUID.randomUUID()) : graph.addVertex(); final Vertex v2 = graph.features().vertex().supportsUserSuppliedIds() ? graph.addVertex(T.id, UUID.randomUUID()) : graph.addVertex(); graph.addVertex(); tryCommit(graph, graph -> { assertEquals(2, IteratorUtils.count(graph.vertices(v1.id().toString(), v2.id().toString()))); }); }