コード例 #1
0
    public void PrintTest()
    {
        ListIterator listIterator = new ListIterator(new string[] { "Stefcho", "Goshky" });


        FieldInfo privateFieldCollection = listIterator
                                           .GetType()
                                           .GetField("collection", BindingFlags.NonPublic
                                                     | BindingFlags.Public
                                                     | BindingFlags.Instance);

        ICollection <string> values = (ICollection <string>)privateFieldCollection.GetValue(listIterator);

        string[] arr = values.ToArray();

        FieldInfo privateFieldIndex = listIterator
                                      .GetType()
                                      .GetField("currentIndex", BindingFlags.NonPublic
                                                | BindingFlags.Public
                                                | BindingFlags.Instance);

        int index = (int)privateFieldIndex.GetValue(listIterator);

        Assert.That(() => arr[index], Is.EquivalentTo("Stefcho"));
    }
コード例 #2
0
    public void ConstructorTest(params string[] collection)
    {
        ListIterator listIterator = new ListIterator(collection);

        FieldInfo privateFieldCollection = listIterator
                                           .GetType()
                                           .GetField("collection", BindingFlags.NonPublic
                                                     | BindingFlags.Public
                                                     | BindingFlags.Instance);

        ICollection <string> values = (ICollection <string>)privateFieldCollection.GetValue(listIterator);

        Assert.That(values, Is.EquivalentTo(collection));
    }
コード例 #3
0
        public void CreateListIterator()
        {
            string[] testData = new string[] { "aa", "bb", "cc" };

            ListIterator li = new ListIterator(testData);

            Type iteratorType = li.GetType();

            FieldInfo[] fields = iteratorType.GetFields(BindingFlags.Instance | BindingFlags.NonPublic);

            FieldInfo listField = fields.FirstOrDefault(f => f.Name == "list");

            var resultData = listField.GetValue(li);

            Assert.That(resultData, Is.EqualTo(testData));
        }
コード例 #4
0
    public void MoveIncreasesInternalIndex()
    {
        var iterator = new ListIterator(new List <string>()
        {
            "1", "2", "3"
        });

        iterator.Move();

        var iteratorIndex = iterator
                            .GetType()
                            .GetField("index",
                                      BindingFlags.NonPublic |
                                      BindingFlags.Instance);

        Assert.That(iteratorIndex.GetValue(iterator), Is.EqualTo(1));
    }
コード例 #5
0
        private static void ExecuteCommands()
        {
            var InitializationArgs = Console.ReadLine().Split();
            var iterator           = new ListIterator(InitializationArgs.Skip(1));

            var iteratorMethods = iterator.GetType().GetMethods();

            var command = Console.ReadLine();

            while (command != "END")
            {
                try
                {
                    var parsedMethod = iteratorMethods
                                       .FirstOrDefault(m => m.Name == command);

                    if (parsedMethod == null)
                    {
                        Console.WriteLine($"This option {command} does not exists");
                    }

                    Console.WriteLine(parsedMethod.Invoke(iterator, new object[] { }));
                }
                catch (TargetInvocationException tie)
                {
                    if (tie.InnerException is InvalidOperationException)
                    {
                        Console.WriteLine(tie.InnerException.Message);
                    }
                }
                catch (ArgumentNullException ane)
                {
                    Console.WriteLine(ane.Message);
                }

                command = Console.ReadLine();
            }
        }