Beispiel #1
0
        public void IteratorShouldPrintTheCorrectElement()
        {
            ListIterator iterator         = new ListIterator("a", "b");
            FieldInfo    lastPrintedField = iterator.GetType().GetField("lastPrinted", BindingFlags.NonPublic | BindingFlags.Instance);

            iterator.Print();
            string comparator = (string)lastPrintedField.GetValue(iterator);

            Assert.That("a".Equals(comparator));
            iterator.Move();
            iterator.Print();
            comparator = (string)lastPrintedField.GetValue(iterator);
            Assert.That("b".Equals(comparator));
        }
Beispiel #2
0
        private static void ExecuteCommands()
        {
            var InitializationArgs = Console.ReadLine().Split();
            var list = new ListIterator(InitializationArgs.Skip(1));

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

            var command = Console.ReadLine();

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

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

                    Console.WriteLine(parsedMethod.Invoke(list, 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();
            }
        }