Example #1
0
        public void AddMovesElementToBeginning()
        {
            var list = new RecentCollection<int>(5);
            list.Add(1);
            list.Add(2);
            // Добавляем уже существующий элемент.
            // "1" и "2" должны поменяться местами
            list.Add(1);

            Assert.AreEqual(2, list.Count);
            Assert.AreEqual(1, list[0]);
            Assert.AreEqual(2, list[1]);
        }
Example #2
0
        public void AddMovesElementToBeginning()
        {
            var list = new RecentCollection <int>(5);

            list.Add(1);
            list.Add(2);
            // Добавляем уже существующий элемент.
            // "1" и "2" должны поменяться местами
            list.Add(1);

            Assert.AreEqual(2, list.Count);
            Assert.AreEqual(1, list[0]);
            Assert.AreEqual(2, list[1]);
        }
Example #3
0
        public void AddDoesNotMoveFirstElement()
        {
            var list = new RecentCollection<int>(3);
            list.Add(1);
            list.Add(2);
            list.Add(3);
            // Повторно добавляем элемент "3" который уже в начале списка.
            // Порядок элементов не должен измениться
            list.Add(3);

            Assert.AreEqual(3, list.Count);
            Assert.AreEqual(3, list[0]);
            Assert.AreEqual(2, list[1]);
            Assert.AreEqual(1, list[2]);
        }
Example #4
0
        public void AddDeletesLastElement()
        {
            var list = new RecentCollection<int>(3);
            list.Add(1);
            list.Add(2);
            list.Add(3);
            // Закончилось место в списке.
            // Элемент "1" должен быть удален.
            list.Add(4);

            Assert.AreEqual(3, list.Count);
            Assert.AreEqual(4, list[0]);
            Assert.AreEqual(3, list[1]);
            Assert.AreEqual(2, list[2]);
        }
Example #5
0
        public void AddDoesNotMoveFirstElement()
        {
            var list = new RecentCollection <int>(3);

            list.Add(1);
            list.Add(2);
            list.Add(3);
            // Повторно добавляем элемент "3" который уже в начале списка.
            // Порядок элементов не должен измениться
            list.Add(3);

            Assert.AreEqual(3, list.Count);
            Assert.AreEqual(3, list[0]);
            Assert.AreEqual(2, list[1]);
            Assert.AreEqual(1, list[2]);
        }
Example #6
0
        static void Main()
        {
            ShowHelp();

            RecentCollection<int> list = new RecentCollection<int>(5);
            bool shownFullMessage = false;
            for (;;)
            {
                Console.WriteLine("Введите число. Для выхода введите пустую строку.");
                Console.Write("> ");
                string line = Console.ReadLine();
                if (string.IsNullOrWhiteSpace(line)) break;

                int num;
                if (!int.TryParse(line, out num)) continue;

                list.Add(num);
                if (list.IsFull && !shownFullMessage)
                {
                    ShowFullMessage();
                    shownFullMessage = true;
                }

                int[] numbers = list.ToArray();
                Console.WriteLine("{{ {0} }}", string.Join(", ", numbers));
                Console.WriteLine();
            }
        }
Example #7
0
        public void AddDeletesLastElement()
        {
            var list = new RecentCollection <int>(3);

            list.Add(1);
            list.Add(2);
            list.Add(3);
            // Закончилось место в списке.
            // Элемент "1" должен быть удален.
            list.Add(4);

            Assert.AreEqual(3, list.Count);
            Assert.AreEqual(4, list[0]);
            Assert.AreEqual(3, list[1]);
            Assert.AreEqual(2, list[2]);
        }
Example #8
0
        public void MoveNextThrowsInvalidOperationException_AfterListIsChanged()
        {
            var list = new RecentCollection <string>(10)
            {
                "Neo", "Morpheus", "Trinity", "Agent Smith", "Oracle"
            };
            var enumerator = list.GetEnumerator();

            list.Add("Merovingian");
            enumerator.MoveNext();
        }
Example #9
0
        public void CanSerializeAndDeserialize()
        {
            var list = new RecentCollection <int>(10);

            list.Add(3);
            list.Add(2);
            list.Add(1);

            var memStream       = new MemoryStream();
            var binaryFormatter = new BinaryFormatter();

            binaryFormatter.Serialize(memStream, list);
            memStream.Position = 0;
            var listCopy = (RecentCollection <int>)binaryFormatter.Deserialize(memStream);

            memStream.Dispose();

            Assert.IsNotNull(listCopy);
            Assert.AreEqual(list.Count, listCopy.Count);
            Assert.AreEqual(list.Capacity, listCopy.Capacity);
            var iter1 = list.GetEnumerator();
            var iter2 = listCopy.GetEnumerator();

            for (;;)
            {
                bool hasNext1 = iter1.MoveNext();
                bool hasNext2 = iter2.MoveNext();
                Assert.AreEqual(hasNext1, hasNext2);

                if (!hasNext1 && !hasNext2)
                {
                    break;
                }

                Assert.AreEqual(iter1.Current, iter2.Current);
            }
        }
Example #10
0
        public void ContainsReturnsTrueForInt32Elements()
        {
            int[] values = new[] { int.MinValue, -100, 0, 100, int.MaxValue };
            var   list   = new RecentCollection <int>(10);

            foreach (int s in values)
            {
                list.Add(s);
            }

            foreach (int s in values)
            {
                Assert.IsTrue(list.Contains(s));
            }
        }
Example #11
0
        public void ContainsReturnsTrueForStringElements()
        {
            string[] values = new[] { "Neo", "Morpheus", "Trinity", "Agent Smith", "Oracle" };
            var      list   = new RecentCollection <string>(10);

            foreach (string s in values)
            {
                list.Add(s);
            }

            foreach (string s in values)
            {
                Assert.IsTrue(list.Contains(s));
            }
        }
Example #12
0
 public void AddThrowsOnNullValue()
 {
     var list = new RecentCollection<string>(3);
     list.Add(null);
 }
Example #13
0
        public void AddThrowsOnNullValue()
        {
            var list = new RecentCollection <string>(3);

            list.Add(null);
        }
Example #14
0
        public void MoveNextThrowsInvalidOperationException_AfterListIsChanged()
        {
            var list = new RecentCollection<string>(10) { "Neo", "Morpheus", "Trinity", "Agent Smith", "Oracle" };
            var enumerator = list.GetEnumerator();

            list.Add("Merovingian");
            enumerator.MoveNext();
        }
Example #15
0
        public void ContainsReturnsTrueForStringElements()
        {
            string[] values = new[] {"Neo", "Morpheus", "Trinity", "Agent Smith", "Oracle"};
            var list = new RecentCollection<string>(10);
            foreach (string s in values)
            {
                list.Add(s);
            }

            foreach (string s in values)
            {
                Assert.IsTrue(list.Contains(s));
            }
        }
Example #16
0
        public void ContainsReturnsTrueForInt32Elements()
        {
            int[] values = new[] { int.MinValue, -100, 0, 100, int.MaxValue };
            var list = new RecentCollection<int>(10);
            foreach (int s in values)
            {
                list.Add(s);
            }

            foreach (int s in values)
            {
                Assert.IsTrue(list.Contains(s));
            }
        }
Example #17
0
        public void CanSerializeAndDeserialize()
        {
            var list = new RecentCollection<int>(10);
            list.Add(3);
            list.Add(2);
            list.Add(1);

            var memStream = new MemoryStream();
            var binaryFormatter = new BinaryFormatter();
            binaryFormatter.Serialize(memStream, list);
            memStream.Position = 0;
            var listCopy = (RecentCollection<int>)binaryFormatter.Deserialize(memStream);
            memStream.Dispose();

            Assert.IsNotNull(listCopy);
            Assert.AreEqual(list.Count, listCopy.Count);
            Assert.AreEqual(list.Capacity, listCopy.Capacity);
            var iter1 = list.GetEnumerator();
            var iter2 = listCopy.GetEnumerator();
            for (;;)
            {
                bool hasNext1 = iter1.MoveNext();
                bool hasNext2 = iter2.MoveNext();
                Assert.AreEqual(hasNext1, hasNext2);

                if (!hasNext1 && !hasNext2) break;

                Assert.AreEqual(iter1.Current, iter2.Current);
            }
        }