Example #1
0
 public static VisitableList <Concat <Visitor <T>, TList, SingleItem <Visitor <T>, Item <T> > >, Visitor <T> > Add <TList, T>
 (
     this VisitableList <TList, Visitor <T> > list,
     T item
 )
     where TList : struct, IVisitableList <Visitor <T> >
 => list.Add(new Item <T>(item));
Example #2
0
        public void TestCompareTo()
        {
            VisitableList <int>[] lists = new VisitableList <int> [3];

            for (int i = 0; i < 3; i++)
            {
                lists[i] = new VisitableList <int>();

                for (int j = 0; j < i; j++)
                {
                    lists[i].Add(j * 4);
                }
            }

            Assert.AreEqual(lists[0].CompareTo(lists[1]), -1);
            Assert.AreEqual(lists[2].CompareTo(lists[1]), 1);

            VisitableList <int> sameList = lists[1];

            Assert.AreEqual(lists[1].CompareTo(sameList), 0);

            object obj = new object();

            Assert.AreEqual(lists[0].CompareTo(obj), -1);

            VisitableHashtable <int, int> h = new VisitableHashtable <int, int>();

            Assert.AreEqual(lists[0].CompareTo(h), 1);
        }
Example #3
0
        public static T[] ToArray <TList, T>(this VisitableList <TList, Visitor <T> > list)
            where TList : struct, IVisitableList <Visitor <T> >
        {
            T[]         array   = new T[list.List.Count];
            Visitor <T> visitor = new Visitor <T>(array, 0);

            return(list.List.Accept(visitor).Array);
        }
Example #4
0
        public void TestIsFull()
        {
            VisitableList <int> l = GetTestList();

            Assert.AreEqual(l.IsFull, false);

            l = new VisitableList <int>();
            Assert.AreEqual(l.IsFull, false);
        }
Example #5
0
        public void TestVisitor()
        {
            VisitableList <int> l       = GetTestList();
            SumVisitor          visitor = new SumVisitor();

            l.Accept(visitor);

            Assert.AreEqual(visitor.Sum, 0 + 3 + 6 + 9 + 12);
        }
Example #6
0
        public void TestFixedSize()
        {
            VisitableList <int> l = new VisitableList <int>();

            Assert.AreEqual(l.IsFixedSize, false);

            l = GetTestList();
            Assert.AreEqual(l.IsFixedSize, false);
        }
Example #7
0
        private VisitableList <int> GetTestList()
        {
            VisitableList <int> l = new VisitableList <int>(5);

            for (int i = 0; i < 5; i++)
            {
                l.Add(i * 3);
            }

            return(l);
        }
Example #8
0
        public void TestIsEmpty()
        {
            VisitableList <int> l = GetTestList();

            Assert.AreEqual(l.IsEmpty, false);

            l.Clear();
            Assert.AreEqual(l.IsEmpty, true);

            l = new VisitableList <int>();
            Assert.AreEqual(l.IsEmpty, true);
        }
Example #9
0
        public void TestStoppingVisitor()
        {
            VisitableList <int> l = GetTestList();

            ComparableFindingVisitor <int> visitor = new ComparableFindingVisitor <int>(6);

            l.Accept(visitor);

            Assert.AreEqual(visitor.Found, true);

            visitor = new ComparableFindingVisitor <int>(99);
            l.Accept(visitor);
            Assert.AreEqual(visitor.Found, false);
        }
Example #10
0
        public void TestBreadthFirstVisit()
        {
            BinaryTree <int>      t = GetTestTree();
            TrackingVisitor <int> trackingVisitor = new TrackingVisitor <int>();

            t.BreadthFirstTraversal(trackingVisitor);

            VisitableList <int> tracks = trackingVisitor.TrackingList;

            Assert.AreEqual(tracks[0], 5);
            Assert.AreEqual(tracks[1], 2);
            Assert.AreEqual(tracks[2], 3);
            Assert.AreEqual(tracks[3], 9);
            Assert.AreEqual(tracks[4], 12);
            Assert.AreEqual(tracks[5], 13);
        }
Example #11
0
        public void TestDepthFirstVisitPre()
        {
            BinaryTree <int>      t = GetTestTree();
            TrackingVisitor <int> trackingVisitor = new TrackingVisitor <int>();
            PreOrderVisitor <int> preVisitor      = new PreOrderVisitor <int>(trackingVisitor);

            t.DepthFirstTraversal(preVisitor);

            VisitableList <int> tracks = trackingVisitor.TrackingList;

            Assert.AreEqual(tracks[0], 5);
            Assert.AreEqual(tracks[1], 2);
            Assert.AreEqual(tracks[2], 9);
            Assert.AreEqual(tracks[3], 12);
            Assert.AreEqual(tracks[4], 3);
            Assert.AreEqual(tracks[5], 13);
        }
Example #12
0
        public void TestDepthFirstVisitPost()
        {
            GeneralTree <int>      t = GetTestTree();
            TrackingVisitor <int>  trackingVisitor = new TrackingVisitor <int>();
            PostOrderVisitor <int> postVisitor     = new PostOrderVisitor <int>(trackingVisitor);

            t.DepthFirstTraversal(postVisitor);

            VisitableList <int> tracks = trackingVisitor.TrackingList;

            Assert.AreEqual(tracks[0], 9);
            Assert.AreEqual(tracks[1], 12);
            Assert.AreEqual(tracks[2], 2);
            Assert.AreEqual(tracks[3], 13);
            Assert.AreEqual(tracks[4], 3);
            Assert.AreEqual(tracks[5], 1);
            Assert.AreEqual(tracks[6], 5);
        }
Example #13
0
        public void TestSuccesfulInit()
        {
            VisitableList <int> l = new VisitableList <int>();

            l = new VisitableList <int>(5);

            VisitableQueue <int> q = new VisitableQueue <int>();

            for (int i = 0; i < 3; i++)
            {
                q.Enqueue(i * 2);
            }

            l = new VisitableList <int>(q);

            for (int i = 0; i < 3; i++)
            {
                Assert.AreEqual(l[i], i * 2);
            }
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="TrackingVisitor&lt;T&gt;"/> class.
 /// </summary>
 public ValueTrackingVisitor()
 {
     tracks = new VisitableList <TValue>();
 }
Example #15
0
 /// <summary>
 /// Initializes a new instance of the <see cref="TrackingVisitor&lt;T&gt;"/> class.
 /// </summary>
 public KeyTrackingVisitor()
 {
     tracks = new VisitableList <TKey>();
 }
Example #16
0
 /// <summary>
 /// Initializes a new instance of the <see cref="TrackingVisitor&lt;T&gt;"/> class.
 /// </summary>
 public TrackingVisitor()
 {
     tracks = new VisitableList <T>();
 }
Example #17
0
 public static VisitableList <Empty <Visitor <T> >, Visitor <T> > Create <T>() => VisitableList.Empty <Visitor <T> >();
Example #18
0
        public void TestNullVisitor()
        {
            VisitableList <int> l = new VisitableList <int>();;

            l.Accept(null);
        }
Example #19
0
        public void TestInvalidCompareTo()
        {
            VisitableList <int> l = new VisitableList <int>();

            l.CompareTo(null);
        }