Ejemplo n.º 1
0
        public void CanWeave_CollectionOfLists_ReturnsCorrectSequence3()
        {
            // Arrange
            var lw = new ListWeaver<string>();
            var list0 = new List<string> { "Beige" };
            var list1 = new List<string> { "Yellow", "Orange", "Gray" };
            var list2 = new List<string> { "Purple", "Yellow", "Green", "Red" };
            var list3 = new List<string> { "Orange", "Red", "Cyan" };
            var list4 = new List<string> { "Gold", "Silver", "Bronze" };
            var list5 = new List<string> { "Yellow", "Brown", "Cyan" };

            // Beige
            //                Yellow, Orange, Gray
            //        Purple, Yellow               Green, Red,
            //                        Orange,             Red,       Cyan
            //                                                            Gold, Silver, Bronze
            //                Yellow,                         Brown, Cyan

            // Act
            lw.Yarns.Add(list0);
            lw.Yarns.Add(list1);
            lw.Yarns.Add(list2);
            lw.Yarns.Add(list3);
            lw.Yarns.Add(list4);
            lw.Yarns.Add(list5);
            var result = lw.Weave();

            var correct = new List<string> { "Beige", "Purple", "Yellow", "Orange", "Gray", "Green", "Red", "Brown", "Cyan", "Gold", "Silver", "Bronze" };

            // Assert
            Assert.AreEqual(correct, result);
        }
Ejemplo n.º 2
0
        public static long TimeListWeave2(int finalSequenceLength, bool reverse)
        {
            var listWeaver = new ListWeaver <int>();

            var yarns = new List <List <int> >();

            for (int i = 1; i <= finalSequenceLength; i++)
            {
                yarns.Add(Enumerable.Range(1, i).ToList());
            }

            if (reverse)
            {
                yarns.Reverse();
            }

            yarns.ForEach(listWeaver.Yarns.Add);

            Stopwatch s      = Stopwatch.StartNew();
            var       result = listWeaver.Weave();

            s.Stop();

            // Check that the two sequences are correct.
            Debug.Assert(result.SequenceEqual(Enumerable.Range(1, finalSequenceLength)));

            return(s.ElapsedMilliseconds);
        }
Ejemplo n.º 3
0
        public static long TimeListWeave(int finalSequenceLength, int yarnLength, bool reverse)
        {
            var yarns = GetYarns( finalSequenceLength, yarnLength, reverse );

            var listWeaver = new ListWeaver<int>();

            yarns.ForEach( listWeaver.Yarns.Add );

            Stopwatch s = Stopwatch.StartNew();
            var result = listWeaver.Weave();
            s.Stop();

            // Check that the two sequences are correct.
            Debug.Assert(result.SequenceEqual( Enumerable.Range( 1, finalSequenceLength )));

            return s.ElapsedMilliseconds;
        }
Ejemplo n.º 4
0
        public void CanWeave_CollectionOfLists_ReturnsCorrectSequence()
        {
            // Arrange
            var lw = new ListWeaver<string>();
            var list1 = new List<string> { "Green", "Blue", "Yellow" };
            var list2 = new List<string> { "Blue", "Orange", "Red" };

            // Act
            lw.Yarns.Add(list1);
            lw.Yarns.Add(list2);
            var result = lw.Weave();

            var correct = new List<string> { "Green", "Blue", "Yellow", "Orange", "Red" };

            // Assert
            Assert.AreEqual(correct, result );
        }
Ejemplo n.º 5
0
        public static long TimeListWeave(int finalSequenceLength, int yarnLength, bool reverse)
        {
            var yarns = GetYarns(finalSequenceLength, yarnLength, reverse);

            var listWeaver = new ListWeaver <int>();

            yarns.ForEach(listWeaver.Yarns.Add);

            Stopwatch s      = Stopwatch.StartNew();
            var       result = listWeaver.Weave();

            s.Stop();

            // Check that the two sequences are correct.
            Debug.Assert(result.SequenceEqual(Enumerable.Range(1, finalSequenceLength)));

            return(s.ElapsedMilliseconds);
        }
Ejemplo n.º 6
0
        public static long TimeListWeave2(int finalSequenceLength, bool reverse)
        {
            var listWeaver = new ListWeaver<int>();

            var yarns = new List<List<int>>();

            for(int i=1; i<= finalSequenceLength; i++)
            {
                yarns.Add(Enumerable.Range( 1, i).ToList() );
            }

            if (reverse)
            {
                yarns.Reverse();
            }

            yarns.ForEach(listWeaver.Yarns.Add);

            Stopwatch s = Stopwatch.StartNew();
            var result = listWeaver.Weave();
            s.Stop();

            // Check that the two sequences are correct.
            Debug.Assert(result.SequenceEqual(Enumerable.Range(1, finalSequenceLength)));

            return s.ElapsedMilliseconds;
        }
Ejemplo n.º 7
0
        public void CanWeave_ThirdListIsNOTWeaveable_ReturnsFalse()
        {
            // Arrange
            var lw = new ListWeaver<string>();
            var list1 = new List<string> { "Blue", "Gray" };
            var list2 = new List<string> { "Blue", "Orange", "Green" };
            var list3 = new List<string> { "Green", "Blue" };

            // Act
            lw.Yarns.Add(list1);
            lw.Yarns.Add(list2);
            bool result = lw.CanWeave(list3);

            // Assert
            Assert.False(result);
        }
Ejemplo n.º 8
0
        public void CanWeave_SecondListIsWeaveable_ReturnsTrue()
        {
            // Arrange
            var lw = new ListWeaver<string>();
            var list1 = new List<string> { "Blue", "Orange", "Green" };
            var list2 = new List<string> { "Blue", "Gray"};

            // Act
            lw.Yarns.Add(list1);
            bool result = lw.CanWeave(list2);

            // Assert
            Assert.True(result);
        }
Ejemplo n.º 9
0
        public void CanWeave_NullList_ReturnsFalse()
        {
            // Arrange
            var lw = new ListWeaver<string>();
            var list1 = new List<string> { "Blue", "Orange", "Green" };

            // Act
            lw.Yarns.Add(list1);
            bool result = lw.CanWeave(null);

            // Assert
            Assert.False(result);
        }
Ejemplo n.º 10
0
        public void CanWeave_LoopInListIsNOTWeaveable_ReturnsFalse()
        {
            // Arrange
            var lw = new ListWeaver<string>();
            var list1 = new List<string> { "Blue", "Orange", "Green", "Orange" };

            // Act
            bool result = lw.CanWeave(list1);

            // Assert
            Assert.False(result);
        }
Ejemplo n.º 11
0
        public void CanWeave_IndirectLoop_ReturnsFalse_RdW()
        {
            // Arrange
            var lw = new ListWeaver<string>();
            var list1 = new List<string> { "Purple", "Yellow" };
            var list2 = new List<string> { "Black", "Purple" };
            var list3 = new List<string> { "Blue", "Yellow", "Black" };

            // Act
            lw.Yarns.Add(list1);
            lw.Yarns.Add(list2);
            bool result = lw.CanWeave(list3);

            // Due to list1 and list2, Black is before Yellow (Black->Purple->Yellow).
            // list3 therefore introduces a conflict (Yellow before Black).

            // Assert
            Assert.False(result);
        }
Ejemplo n.º 12
0
        public void CanWeave_FirstListToBeIncluded_ReturnsTrue()
        {
            // Arrange
            var lw = new ListWeaver<string>();
            var list1 = new List<string> { "Blue", "Orange", "Green" };

            // Act
            bool result = lw.CanWeave( list1 );

            // Assert
            Assert.True(result);
        }
Ejemplo n.º 13
0
        public void CanWeave_CollectionOfLists_ReturnsCorrectSequence_M2()
        {
            // Arrange
            var lw = new ListWeaver<string>();
            var list0 = new List<string> { "Beige" };
            var list1 = new List<string> { "Yellow", "Orange", "Gray" };
            var list2 = new List<string> { "Yellow", "Brown", "Cyan" };
            var list3 = new List<string> { "Gold", "Silver", "Bronze" };
            var list4 = new List<string> { "Purple", "Yellow", "Green", "Red", "Black" };
            var list5 = new List<string> { "Orange", "Red", "Cyan", "Aqua" };
            var list6 = new List<string> { "Additional", "Problem", "Green" };
            var list7 = new List<string> { "Problem2", "Problem" };
            var list8 = new List<string> { "Additional2", "Problem2" };

            lw.Yarns.Add(list0);
            lw.Yarns.Add(list1);
            lw.Yarns.Add(list2);
            lw.Yarns.Add(list3);
            lw.Yarns.Add(list4);
            lw.Yarns.Add(list5);
            lw.Yarns.Add(list6);
            lw.Yarns.Add(list7);
            lw.Yarns.Add(list8);
            var result = lw.Weave();
            var correct = new List<string> { "Beige", "Purple", "Yellow", "Orange", "Gray", "Brown", "Additional", "Additional2", "Problem2", "Problem", "Green", "Red", "Cyan", "Gold", "Silver", "Bronze", "Black", "Aqua" };
            // Assert
            Assert.AreEqual(correct, result);
        }
Ejemplo n.º 14
0
        public void CanWeave_CollectionOfLists_ReturnsCorrectSequenceRdW2()
        {
            // Arrange
            var lw = new ListWeaver<string>();
            var list1 = new List<string> { "Purple" };
            var list2 = new List<string> { "Green" };
            var list3 = new List<string> { "Orange", "Purple"};
            var list4 = new List<string> { "Green", "Purple" };

            // Act
            lw.Yarns.Add(list1);
            lw.Yarns.Add(list2);
            lw.Yarns.Add(list3);
            lw.Yarns.Add(list4);
            var result = lw.Weave();

            var correct = new List<string> { "Green", "Orange", "Purple"};

            // Assert
            Assert.AreEqual(correct, result);
        }
Ejemplo n.º 15
0
        public void CanWeave_CollectionOfLists_ReturnsCorrectSequenceRdW()
        {
            // Arrange
            var lw = new ListWeaver<string>();
            var list1 = new List<string> { "Blue" };
            var list2 = new List<string> { "Bronze", "Yellow", "Purple" };
            var list3 = new List<string> { "Black", "Orange" };
            var list4 = new List<string> { "Red", "Blue", "Gold" };
            var list5 = new List<string> { "Silver", "Blue" };
            var list6 = new List<string> { "Bronze", "Blue" };

            // Act
            lw.Yarns.Add(list1);
            lw.Yarns.Add(list2);
            lw.Yarns.Add(list3);
            lw.Yarns.Add(list4);
            lw.Yarns.Add(list5);
            lw.Yarns.Add(list6);
            var result = lw.Weave();

            var correct = new List<string> { "Bronze", "Red", "Silver", "Blue", "Yellow", "Purple", "Black", "Orange", "Gold" };

            // Assert
            Assert.AreEqual(correct, result);
        }
Ejemplo n.º 16
0
        public void CanWeave_CollectionOfLists_ReturnsCorrectSequence6()
        {
            // Arrange
            var lw = new ListWeaver<string>();
            var list0 = new List<string> { "Beige", "Black" };
            var list1 = new List<string> { "Orange", "Gray" };
            var list2 = new List<string> { "Yellow", "Gold" };
            var list3 = new List<string> { "Gold", "Red" };
            var list4 = new List<string> { "Orange", "Black" };
            var list5= new List<string> { "Red", "Black" };

            // Beige,                           Black
            //       Orange,                          Gray
            //               Yellow, Gold
            //                       Gold, Red,
            //      Orange,                     Black
            //                             Red, Black

            // Act
            lw.Yarns.Add(list0);
            lw.Yarns.Add(list1);
            lw.Yarns.Add(list2);
            lw.Yarns.Add(list3);
            lw.Yarns.Add(list4);
            lw.Yarns.Add(list5);
            var result = lw.Weave();

            var correct = new List<string> { "Beige", "Orange", "Yellow", "Gold", "Red", "Black", "Gray", };

            // Assert
            Assert.AreEqual(correct, result);
        }