public void AppendsAtEnd()
        {
            ModelUIPartList partList = new ModelUIPartList();

            partList.AppendPart(new DummyPart("1"));
            partList.AppendPart(new DummyPart("2"));
            partList.AppendPart(new DummyPart("3"));

            AssertSequentialPartList(partList, 3);
        }
        public void AppendDiscardsNull()
        {
            ModelUIPartList partList = new ModelUIPartList();

            partList.AppendPart(new DummyPart("1"));
            partList.AppendPart(null);
            partList.AppendPart(new DummyPart("2"));

            AssertSequentialPartList(partList, 2);
        }
        public void RemoveWorks()
        {
            ModelUIPartList partList = new ModelUIPartList();

            partList.AppendPart(new DummyPart("1"));
            partList.AppendPart(new DummyPart("5"));
            partList.AppendPart(new DummyPart("2"));

            partList.RemovePart("5");

            AssertSequentialPartList(partList, 2);
        }
        static void AssertSequentialPartList(ModelUIPartList partList, int expectedCount)
        {
            Assert.AreEqual(expectedCount, partList.Count());

            int i = 1;

            foreach (var p in partList)
            {
                Assert.AreEqual(i.ToString(), p.PartName);
                i++;
            }
        }
        public void ReplaceWorks()
        {
            ModelUIPartList partList = new ModelUIPartList();

            partList.AppendPart(new DummyPart("1"));
            partList.AppendPart(new DummyPart("5"));
            partList.AppendPart(new DummyPart("3"));

            partList.ReplacePart("5", new DummyPart("2"));

            AssertSequentialPartList(partList, 3);
        }
        public void InsertAfterLastWorks()
        {
            ModelUIPartList partList = new ModelUIPartList();

            partList.AppendPart(new DummyPart("1"));
            partList.AppendPart(new DummyPart("2"));
            partList.AppendPart(new DummyPart("3"));

            partList.InsertPartAfter("3", new DummyPart("4"));

            AssertSequentialPartList(partList, 4);
        }
        public void GetUnknownPartReturnsNull()
        {
            ModelUIPartList partList = new ModelUIPartList();

            partList.AppendPart(new DummyPart("1"));
            partList.AppendPart(new DummyPart("2"));
            partList.AppendPart(new DummyPart("3"));

            var part = partList.GetPart("not in list");

            Assert.IsNull(part);
        }
        public void RemoveNotFoundDoesNothingAndThrows()
        {
            ModelUIPartList partList = new ModelUIPartList();

            partList.AppendPart(new DummyPart("1"));
            partList.AppendPart(new DummyPart("2"));
            partList.AppendPart(new DummyPart("3"));

            Assert.Throws <ArgumentOutOfRangeException>(
                () => partList.RemovePart("not found")
                );

            AssertSequentialPartList(partList, 3);
        }
        public void InsertAfterNotFoundDoesNothingAndThrows()
        {
            ModelUIPartList partList = new ModelUIPartList();

            partList.AppendPart(new DummyPart("1"));
            partList.AppendPart(new DummyPart("2"));
            partList.AppendPart(new DummyPart("3"));

            Assert.Throws <ArgumentOutOfRangeException>(
                () => partList.InsertPartBefore("not found", new DummyPart("5"))
                );

            AssertSequentialPartList(partList, 3);
        }
        public void GetAppendedPartReturnsPart()
        {
            ModelUIPartList partList = new ModelUIPartList();

            partList.AppendPart(new DummyPart("1"));
            partList.AppendPart(new DummyPart("2"));
            partList.AppendPart(new DummyPart("3"));

            for (var i = 1; i < 4; i++)
            {
                var part = partList.GetPart(i.ToString());
                Assert.IsNotNull(part);
                Assert.AreEqual(i.ToString(), part.PartName);
            }
        }