Beispiel #1
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void mirroredTraversalReversesInitialState()
        public virtual void MirroredTraversalReversesInitialState()
        {
            /*
             * (a)-->(b)-->(c)-->(d)
             */
            CreateGraph("a TO b", "b TO c", "c TO d");

            BranchCollisionPolicy collisionPolicy = (evaluator, pathPredicate) => new StandardBranchCollisionDetectorAnonymousInnerClass(this);

            Iterables.count(GraphDb.bidirectionalTraversalDescription().mirroredSides(GraphDb.traversalDescription().uniqueness(NODE_PATH).expand(PathExpanders.forType(To), new Org.Neo4j.Graphdb.traversal.InitialBranchState_State <>(0, 10))).collisionPolicy(collisionPolicy).traverse(GetNodeWithName("a"), GetNodeWithName("d")));
        }
        internal BidirectionalTraverserIterator(Resource resource, MonoDirectionalTraversalDescription start, MonoDirectionalTraversalDescription end, SideSelectorPolicy sideSelector, Org.Neo4j.Graphdb.traversal.BranchCollisionPolicy collisionPolicy, PathEvaluator collisionEvaluator, int maxDepth, IEnumerable <Node> startNodes, IEnumerable <Node> endNodes) : base(resource)
        {
            this._sides[Direction.OUTGOING] = new Side(start);
            this._sides[Direction.INCOMING] = new Side(end);
            this._uniqueness = MakeSureStartAndEndHasSameUniqueness(start, end);

            // A little chicken-and-egg problem. This happens when constructing the start/end
            // selectors and they initially call evaluate() and isUniqueFirst, where the selector is used.
            // Solved this way for now, to have it return the start side to begin with.
            this._selector = FixedSide(Direction.OUTGOING);
            BranchSelector startSelector = start.BranchOrdering.create(new AsOneStartBranch(this, startNodes, start.InitialState, start.UniquenessConflict), start.Expander);

            this._selector = FixedSide(Direction.INCOMING);
            BranchSelector endSelector = end.BranchOrdering.create(new AsOneStartBranch(this, endNodes, end.InitialState, start.UniquenessConflict), end.Expander);

            this._selector          = sideSelector.Create(startSelector, endSelector, maxDepth);
            this._collisionDetector = collisionPolicy.Create(collisionEvaluator, _uniqueness.checkFull);
        }