コード例 #1
0
        public void EventStream_SpeculatorAfterPreviousSpeculatorReject()
        {
            var n          = new EventStream(TestUtils.ChronListFromString("a b c d e f"));
            var res        = new List <IChronologicalEvent>();
            var speculator = n.CreateSpeculator();

            while (speculator.MoveNext())
            {
                res.Add(speculator.Current);
            }
            speculator.EndDiscardAll();
            speculator = n.CreateSpeculator();
            while (speculator.MoveNext())
            {
                res.Add(speculator.Current);
            }
            speculator.EndDiscardAll();


            var expected = TestUtils.ChronListFromString("a b c d e f").ToList();

            expected.AddRange(expected);

            AssertEventListsAreSame(res, expected);
        }
コード例 #2
0
        public void EventStream_SpeculatorAfterOtherSpeculator()
        {
            var n   = new EventStream(TestUtils.ChronListFromString("a b c d e f"));
            var res = new List <IChronologicalEvent>();

            n.MoveNext();
            res.Add(n.Current);
            var speculator = n.CreateSpeculator();

            speculator.MoveNext();
            res.Add(speculator.Current);

            speculator.EndApplyAll();
            n.MoveNext();

            res.Add(n.Current);
            speculator = n.CreateSpeculator();

            speculator.MoveNext();
            res.Add(speculator.Current);
            speculator.EndApplyAll();
            n.MoveNext();

            res.Add(n.Current);
            n.MoveNext();

            res.Add(n.Current);
            var expected = TestUtils.ChronListFromString("a b c d e f");

            AssertEventListsAreSame(res, expected);
        }
コード例 #3
0
        public void EventStream_SubSpeculatorSolidifes()
        {
            var n   = new EventStream(TestUtils.ChronListFromString("a b c d e f"));
            var res = new List <IChronologicalEvent>();

            n.MoveNext();
            res.Add(n.Current);
            var speculator = n.CreateSpeculator();

            speculator.MoveNext();
            res.Add(speculator.Current);
            var subspec = speculator.CreateSpeculator();

            subspec.MoveNext();
            res.Add(subspec.Current);
            subspec.EndApplyAll();
            speculator.MoveNext();
            res.Add(speculator.Current);
            speculator.EndApplyAll();

            while (n.MoveNext())
            {
                res.Add(n.Current);
            }
            var expected = TestUtils.ChronListFromString("a b c d e f");

            AssertEventListsAreSame(res, expected);
        }
コード例 #4
0
        public void EventStream_SpeculatorRejectsAllMidway()
        {
            var n   = new EventStream(TestUtils.ChronListFromString("a b c d e f"));
            var res = new List <IChronologicalEvent>();

            n.MoveNext();
            res.Add(n.Current);
            var speculator = n.CreateSpeculator();

            speculator.MoveNext();

            res.Add(speculator.Current);


            speculator.EndDiscardAll();
            while (n.MoveNext())
            {
                res.Add(n.Current);
            }
            var expected = TestUtils.ChronListFromString("a b c d e f").ToList();

            expected.Insert(2, expected[1]);

            AssertEventListsAreSame(res, expected);
        }
コード例 #5
0
        public void EventStream_SpeculatorContinues()
        {
            var n   = new EventStream(TestUtils.ChronListFromString("a b c d e f"));
            var res = new List <IChronologicalEvent>();

            n.MoveNext();
            res.Add(n.Current);
            var speculator = n.CreateSpeculator();

            while (speculator.MoveNext())
            {
                res.Add(speculator.Current);
            }
            var expected = TestUtils.ChronListFromString("a b c d e f");

            AssertEventListsAreSame(res, expected);
        }