public void TestElementsEnumerator() { SimpleElement root = new SimpleElement(); IEnumerator child1Enum = root.GetElements("child1"); IXmlElement el1 = null; Exception e = null; try { el1 = (IXmlElement)child1Enum.Current; //without MoveNext() } catch (Exception ex) { e = ex; } Assert.IsNull(el1); Assert.IsNotNull(e); Assert.IsInstanceOf(typeof(InvalidOperationException), e); el1 = root.AddElement("child1"); root.AddElement("child2"); root.AddElement("child3"); IXmlElement el2 = root.AddElement("child1"); root.AddElement("child2"); child1Enum = root.GetElements("child1"); Assert.IsTrue(child1Enum.MoveNext()); Assert.AreEqual(child1Enum.Current, el1); Assert.IsTrue(child1Enum.MoveNext()); Assert.IsTrue(child1Enum.MoveNext()); //will do nothing Assert.AreEqual(child1Enum.Current, el2); Assert.IsFalse(child1Enum.MoveNext()); child1Enum.Reset(); Assert.IsTrue(child1Enum.MoveNext()); }