Example #1
0
        public void Add_AddOperation_EmptyList_Current()
        {
            UndoableNawArray list = new UndoableNawArray(10);

            // Act
            ExeTimed(() => list.Add(naw0));

            Assert.AreSame(ExeTimed(() => list.First), ExeTimed(() => list.Current), "Na het invoegen van een element aan een lege UndoableNawArray moet de eigenschap Current naar dezelfde UndoLink als First wijzen.");
        }
Example #2
0
        public void Add_AddOperation_EmptyList_ListIsCorrect()
        {
            UndoableNawArray list = new UndoableNawArray(10);

            // Act
            list.Add(naw0);

            Assert.AreEqual(list.First.Naw, naw0, "In het geval dat een eerste Undo-Link aan een lege lijst wordt toegevoegd wordt de First niet goed bijgewerkt.");
            Assert.AreEqual(list.Current.Naw, naw0, "In het geval dat een eerste Undo-Link aan een lege lijst wordt toegevoegd wordt deze niet de currentUndoLink gemaakt.");
        }
Example #3
0
        public void Add_AddOperation_LinkContainsOperation()
        {
            UndoableNawArray list = new UndoableNawArray(10);

            // Act
            list.Add(naw1);

            Assert.AreEqual(list.First.Operation, Operation.ADD, "De Link die aan de Undo-lijst is toegevoegd geeft niet aan dat er een Add operatie heeft plaatsgevonden.");
            Assert.AreEqual(list.First.Naw, naw1, "De Link die aan de Undo-lijst is toegevoegd geeft niet het juiste Naw-object aan waarop een Add operatie heeft plaatsgevonden.");
        }
Example #4
0
        private static void SetFirstLink(UndoableNawArray list, UndoLink first, bool setCurrentUndoLink = true)
        {
            var firstProp = list.GetType().GetField("_first", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);

            firstProp.SetValue(list, first);

            if (setCurrentUndoLink)
            {
                SetCurrentUndoLink(list, first);
            }
        }
Example #5
0
        public void Add_AddOperation_CurrentIsUpdated()
        {
            UndoableNawArray list = new UndoableNawArray(10);

            // Act
            list.Add(naw1);
            list.Remove(naw1);

            Assert.AreEqual(list.First.Next.Operation, Operation.REMOVE, "De Link die aan de Undo-lijst is toegevoegd geeft niet aan dat er een Remove operatie heeft plaatsgevonden.");
            Assert.AreEqual(list.First.Next.Naw, naw1, "De Link die aan de Undo-lijst is toegevoegd geeft niet het juiste Naw-object aan waarop een Remove operatie heeft plaatsgevonden.");
        }
Example #6
0
        public void Add_AddOperation_BothNextAndPreviousSet()
        {
            UndoableNawArray list = new UndoableNawArray(10);

            list.Add(naw0);

            // Act
            list.Add(naw1);

            Assert.AreEqual(list.First.Next.Naw, naw1, "Er wordt geen juiste referentie naar de Link die aan de Undo-lijst is toegevoegd gelegd vanuit de voorgaande link.");
            Assert.AreEqual(list.First.Next.Previous.Naw, naw0, "Er wordt geen juiste referentie van de Link die aan de Undo-lijst is toegevoegd gelegd naar de voorgaande link.");
        }
Example #7
0
        public void Remove_SingleItem()
        {
            UndoableNawArray list = new UndoableNawArray(10);

            Assert.AreEqual(0, list.Count);

            list.Add(naw1);

            Assert.AreEqual(1, list.Count);
            Assert.AreEqual(0, list.Find(naw1));
            Assert.AreEqual(-1, list.Find(naw0));
        }
Example #8
0
        public void Add_SingleItem()
        {
            // Arrange
            UndoableNawArray list = new UndoableNawArray(10);

            // Act
            list.Add(naw1);

            // Assert
            Assert.AreEqual(1, list.Count, "Na het toevoegen in een lege lijst verwachten we dat de count 1 is.");
            Assert.AreEqual(0, list.Find(naw1), "Het nieuwe item moet gevonden kunnen worden in de lijst.");
            Assert.AreEqual(-1, list.Find(naw0), "Een item dat niet is toegevoegd moet niet gevonden kunnen worden in de lijst.");
        }
Example #9
0
        public void Remove_AddOperation_LinkContainsOperation()
        {
            // Arrange
            UndoableNawArray list = new UndoableNawArray(10);

            list.Array[0] = naw1;
            list.Count    = 1;

            // Act
            list.Remove(naw1);

            // Assert
            Assert.AreEqual(list.First.Operation, Operation.REMOVE, "De Link die aan de Undo-lijst is toegevoegd geeft niet aan dat er een Remove operatie heeft plaatsgevonden.");
            Assert.AreEqual(list.First.Naw, naw1, "De Link die aan de Undo-lijst is toegevoegd geeft niet het juiste Naw-object aan waarop een Remove operatie heeft plaatsgevonden.");
        }
Example #10
0
        public void Remove_SingleItem()
        {
            // Arrange
            UndoableNawArray list = new UndoableNawArray(10);

            list.Array[0] = naw0;
            list.Array[1] = naw1;
            list.Count    = 2;

            // Act
            list.Remove(naw0);

            // Assert
            Assert.AreEqual(1, list.Count, "Na het verwijderen uit een lijst met 2 items verwachten we dat de count 1 is.");
            Assert.AreEqual(0, list.Find(naw1), "We verwachten dat het item dat niet verwijderd is nog steed in de lijst zit.");
            Assert.AreEqual(-1, list.Find(naw0), "We verwachten dat het item dat verwijderd is niet meer in de lijst zit.");
        }
Example #11
0
        public void Add_RemoveOperation_BothNextAndPreviousSet()
        {
            UndoableNawArray list = new UndoableNawArray(10);

            list.Array[0] = naw1;
            list.Count    = 1;
            SetFirstLink(list, new UndoLink()
            {
                Operation = Operation.Add, Naw = naw1
            });

            // Act
            ExeTimed(() => list.Remove(naw1));

            Assert.AreEqual(ExeTimed(() => list.First.Next.Operation), Operation.Remove, "De Link die aan de Undo-lijst is toegevoegd geeft niet aan dat er een Remove operatie heeft plaatsgevonden.");
            Assert.AreEqual(ExeTimed(() => list.First.Next.Naw), naw1, "De Link die aan de Undo-lijst is toegevoegd geeft niet het juiste Naw-object aan waarop een Remove operatie heeft plaatsgevonden.");
        }
Example #12
0
        public void Add_AddOperation_BothNextAndPreviousSet()
        {
            // Arrange
            UndoableNawArray list = new UndoableNawArray(10);

            list.Array[0] = naw0;
            list.Count    = 1;
            SetFirstLink(list, new UndoLink()
            {
                Naw = naw0, Operation = Operation.ADD
            });

            // Act
            list.Add(naw1);

            // Assert
            Assert.AreEqual(list.First.Next.Naw, naw1, "Er wordt geen juiste referentie naar de Link die aan de Undo-lijst is toegevoegd gelegd vanuit de voorgaande link.");
            Assert.AreEqual(list.First.Next.Previous.Naw, naw0, "Er wordt geen juiste referentie van de Link die aan de Undo-lijst is toegevoegd gelegd naar de voorgaande link.");
        }
Example #13
0
        private static void SetCurrentUndoLink(UndoableNawArray list, UndoLink currentUndoLink)
        {
            var currentProp = list.GetType().GetField("_currentUndoLink", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);

            currentProp.SetValue(list, currentUndoLink);
        }
Example #14
0
        private static void SetCurrentUndoLink(UndoableNawArray list, UndoLink currentUndoLink)
        {
            var currentProp = list.GetType().GetProperty("Current");

            currentProp.SetValue(list, currentUndoLink);
        }