Exemple #1
0
        public void ShouldGoBackToFirstElement_WhenMovingByAnAmountEqualToTheLimit()
        {
            var iterator = new CircularIterator<string>("toto", "tata", "titi");
            iterator.Move(iterator.Count);
            Assert.Equal("toto", iterator.Current);

        }
Exemple #2
0
        public void ShouldGoToSecondElement_WhenMovingByOneUnderTheLimit()
        {
            var iterator = new CircularIterator<string>("toto", "tata", "titi");
            iterator.Move(1);
            Assert.Equal("tata", iterator.Current);

        }
    static void Main()
    {
        LinkedList <int> intList = new LinkedList <int>();

        for (int i = 1; i < 6; ++i)
        {
            intList.AddLast(i);
        }

        CircularIterator <int> iter =
            new CircularIterator <int>(intList,
                                       intList.First);

        int counter = 0;

        foreach (int n in iter)
        {
            Console.WriteLine(n);

            if (counter++ == 100)
            {
                iter.Stop();
            }
        }
    }
Exemple #4
0
        public static void TestIEnumarable()
        {
            //Test custom simple collection with enumerator
            MyCollection <int> collection = new MyCollection <int>(new [] { 1, 2, 3, 4 });

            Console.WriteLine("MyCollection: ");
            foreach (var n in collection)
            {
                Console.Write($"{n} ");
            }
            Console.WriteLine();

            //Test Bidirectional iterator
            LinkedList <int> intList = new LinkedList <int>();

            for (int i = 0; i < 6; i++)
            {
                intList.AddLast(i);
            }
            BidirectionalIterator <int> bidirectionalIterator = new BidirectionalIterator <int>(intList, intList.First, TIterationDirection.Forward);

            Console.WriteLine("Bidirectional iterator: ");
            foreach (var n in bidirectionalIterator)
            {
                Console.Write($"{n} ");
                if (n == 5) //change direction
                {
                    bidirectionalIterator.Direction = TIterationDirection.Backward;
                }
            }
            Console.WriteLine();

            //Test Circular iterator
            CircularIterator <int> circularIterator = new CircularIterator <int>(intList, intList.First);
            int counter = 0;

            Console.WriteLine("Circular iterator: ");
            foreach (var n in circularIterator)
            {
                Console.Write($"{n} ");
                if (counter++ == 20)
                {
                    circularIterator.Stop();
                }
            }
        }
Exemple #5
0
        public void ShouldStartOnFirstElement_WhenNotMoving()
        {
            var iterator = new CircularIterator<string>("toto", "tata", "titi");
            Assert.Equal("toto", iterator.Current);

        }
 public ThriftRoundRobinBalancer(IEnumerable <ThriftEndpoint> endpoints)
 {
     wrappedItems = new List <LoadBalancerItemWrapper <ThriftEndpoint> >(endpoints.Select(it => new LoadBalancerItemWrapper <ThriftEndpoint>(it)));
     iterator     = new CircularIterator <LoadBalancerItemWrapper <ThriftEndpoint> >(wrappedItems);
     enabledCount = wrappedItems.Count;
 }