Exemplo n.º 1
0
        public void TestPathSpecifiers()
        {
            var expectedTypes          = new Type[] { typeof(Multipart), typeof(TextPart), typeof(MimePart), typeof(MessagePart), typeof(Multipart), typeof(TextPart), typeof(MimePart), typeof(Multipart), typeof(MimePart), typeof(MessagePart), typeof(Multipart), typeof(TextPart), typeof(MultipartAlternative), typeof(TextPart), typeof(TextPart) };
            var expectedPathSpecifiers = new string[] { "0", "1", "2", "3", "3.0", "3.1", "3.2", "4", "4.1", "4.2", "4.2.0", "4.2.1", "4.2.2", "4.2.2.1", "4.2.2.2" };
            var expectedDepths         = new int[] { 0, 1, 1, 1, 2, 3, 3, 1, 2, 2, 3, 4, 4, 5, 5 };
            var expectedParents        = new List <MimeEntity> {
                null
            };
            var message = CreateImapExampleMessage(expectedParents);
            var iter    = new MimeIterator(message);
            int i       = 0;

            Assert.IsTrue(iter.MoveNext(), "Initialize");
            do
            {
                var current = iter.Current;
                var parent  = iter.Parent;

                Assert.AreEqual(expectedDepths[i], iter.Depth, "Depth #{0}", i);
                Assert.AreEqual(expectedParents[i], parent, "Parent #{0}", i);
                Assert.IsInstanceOf(expectedTypes[i], current, "Type #{0}", i);
                Assert.AreEqual(expectedPathSpecifiers[i], iter.PathSpecifier, "PathSpecifier #{0}", i);
                i++;
            } while (iter.MoveNext());

            Assert.AreEqual(expectedTypes.Length, i);

            iter.Reset();
            i = 0;

            Assert.IsTrue(iter.MoveNext(), "Reset");
            do
            {
                var current = iter.Current;
                var parent  = iter.Parent;

                Assert.AreEqual(expectedDepths[i], iter.Depth, "Reset Depth #{0}", i);
                Assert.AreEqual(expectedParents[i], parent, "Reset Parent #{0}", i);
                Assert.IsInstanceOf(expectedTypes[i], current, "Reset Type #{0}", i);
                Assert.AreEqual(expectedPathSpecifiers[i], iter.PathSpecifier, "Reset PathSpecifier #{0}", i);
                i++;
            } while (iter.MoveNext());
        }