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")); }
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)); }
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)); }
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)); }
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(); } }