/** * Copyright (c) 2002-2010 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] * * This file is part of Neo4j. * * Neo4j is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.neo4j.kernel.impl.traversal; import static org.junit.Assert.assertFalse; import org.junit.BeforeClass; import org.junit.Test; import org.neo4j.graphdb.traversal.TraversalDescription; import org.neo4j.graphdb.traversal.Traverser; import org.neo4j.helpers.collection.IteratorUtil; import org.neo4j.kernel.Traversal; import org.neo4j.kernel.Uniqueness; public class SmallestGraphEverTest extends AbstractTestBase { @BeforeClass public static void setup() { createGraph( "1 TO 2" ); } @Test public void testUnrestrictedTraversalCanFinishDepthFirst() throws Exception { execute( Traversal.description().depthFirst(), Uniqueness.NONE ); } @Test public void testUnrestrictedTraversalCanFinishBreadthFirst() throws Exception { execute( Traversal.description().breadthFirst(), Uniqueness.NONE ); } @Test public void testNodeGlobalTraversalCanFinishDepthFirst() throws Exception { execute( Traversal.description().depthFirst(), Uniqueness.NODE_GLOBAL ); } @Test public void testNodeGlobalTraversalCanFinishBreadthFirst() throws Exception { execute( Traversal.description().breadthFirst(), Uniqueness.NODE_GLOBAL ); } @Test public void testRelationshipGlobalTraversalCanFinishDepthFirst() throws Exception { execute( Traversal.description().depthFirst(), Uniqueness.RELATIONSHIP_GLOBAL ); } @Test public void testRelationshipGlobalTraversalCanFinishBreadthFirst() throws Exception { execute( Traversal.description().breadthFirst(), Uniqueness.RELATIONSHIP_GLOBAL ); } @Test public void testNodePathTraversalCanFinishDepthFirst() throws Exception { execute( Traversal.description().depthFirst(), Uniqueness.NODE_PATH ); } @Test public void testNodePathTraversalCanFinishBreadthFirst() throws Exception { execute( Traversal.description().breadthFirst(), Uniqueness.NODE_PATH ); } @Test public void testRelationshipPathTraversalCanFinishDepthFirst() throws Exception { execute( Traversal.description().depthFirst(), Uniqueness.RELATIONSHIP_PATH ); } @Test public void testRelationshipPathTraversalCanFinishBreadthFirst() throws Exception { execute( Traversal.description().breadthFirst(), Uniqueness.RELATIONSHIP_PATH ); } @Test public void testNodeRecentTraversalCanFinishDepthFirst() throws Exception { execute( Traversal.description().depthFirst(), Uniqueness.NODE_RECENT ); } @Test public void testNodeRecentTraversalCanFinishBreadthFirst() throws Exception { execute( Traversal.description().breadthFirst(), Uniqueness.NODE_RECENT ); } @Test public void testRelationshipRecentTraversalCanFinishDepthFirst() throws Exception { execute( Traversal.description().depthFirst(), Uniqueness.RELATIONSHIP_RECENT ); } @Test public void testRelationshipRecentTraversalCanFinishBreadthFirst() throws Exception { execute( Traversal.description().breadthFirst(), Uniqueness.RELATIONSHIP_RECENT ); } private void execute( TraversalDescription traversal, Uniqueness uniqueness ) { Traverser traverser = traversal.uniqueness( uniqueness ).traverse( referenceNode() ); assertFalse( "empty traversal", IteratorUtil.count( traverser ) == 0 ); } }