public void TwoDistributionWithFiveContinuationsAfterTwoSplitsWithRemove()
        {
            // Only first path tested, yet.
            _choiceResolver.PrepareNextState();
            _stepGraph.Clear();
            _choiceResolver.PrepareNextPath();
            _choiceResolver.HandleProbabilisticChoice(3);
            var choiceToMakeDeterministic = _choiceResolver.LastChoiceIndex;

            _choiceResolver.HandleChoice(2);

            // MakeChoiceAtIndexDeterministic of probabilistic split
            var cidToForwardTo = _choiceResolver.GetContinuationId();

            _choiceResolver.ForwardUntakenChoicesAtIndex(choiceToMakeDeterministic);
            var choiceOfCid0 = _stepGraph.GetChoiceOfCid(0);
            var choiceOfCid1 = _stepGraph.GetChoiceOfCid(1);
            var choiceOfCid2 = _stepGraph.GetChoiceOfCid(2);

            var entries = CountEntries(0);

            entries.ShouldBe(2);
            entries = CountEntries(1);
            entries.ShouldBe(2);
            entries = CountEntries(4);
            entries.ShouldBe(0);
            entries = CountEntries(5);
            entries.ShouldBe(0);
            entries = CountEntries(2);
            entries.ShouldBe(1);
            cidToForwardTo.ShouldBe(4);
            choiceOfCid0.ChoiceType.ShouldBe(LtmdpChoiceType.Probabilitstic);
            choiceOfCid0.From.ShouldBe(1);
            choiceOfCid0.To.ShouldBe(2);
            choiceOfCid0.Probability.ShouldBe(1.0);
            choiceOfCid1.ChoiceType.ShouldBe(LtmdpChoiceType.Nondeterministic);
            choiceOfCid1.From.ShouldBe(4);
            choiceOfCid1.To.ShouldBe(5);
            choiceOfCid1.Probability.ShouldBe(1.0 / 3);
            choiceOfCid2.ChoiceType.ShouldBe(LtmdpChoiceType.Forward);
            choiceOfCid2.To.ShouldBe(4);
            choiceOfCid2.Probability.ShouldBe(1.0 - (1.0 / 3));
        }
예제 #2
0
        public void TwoDistributionWithFiveContinuationsAfterTwoSplitsWithRemove()
        {
            // Only first path tested, yet.
            _choiceResolver.PrepareNextState();
            _stepGraph.Clear();
            _choiceResolver.PrepareNextPath();
            _choiceResolver.HandleProbabilisticChoice(3);
            var choiceToMakeDeterministic = _choiceResolver.LastChoiceIndex;

            _choiceResolver.HandleChoice(2);

            // MakeChoiceAtIndexDeterministic of probabilistic split
            _choiceResolver.ForwardUntakenChoicesAtIndex(choiceToMakeDeterministic);

            var entries = CountEntries(0);

            entries.ShouldBe(1);
            entries = CountEntries(1);
            entries.ShouldBe(2);
            entries = CountEntries(4);
            entries.ShouldBe(0);
            entries = CountEntries(5);
            entries.ShouldBe(0);
        }