protected void Test(string eml_file_name)
        {
            var eml_message  = Parser.ParseMessageFromFile(TestFolderPath + eml_file_name);
            var right_result = RightParserResult.FromXml(RightParserResultsPath + eml_file_name.Replace(".eml", ".xml"));

#if NEED_OUT
            eml_message.StoreToFile(test_results_path + eml_file_name);
#endif
            Assert.AreEqual(right_result.From.Email, eml_message.From.Email);
            Assert.AreEqual(right_result.From.Name, eml_message.From.Name);
            Assert.AreEqual(right_result.To.Count, eml_message.To.Count);

            var to_enumerator = eml_message.To.OrderBy(x => x.Email).GetEnumerator();
            foreach (var adress in right_result.To.OrderBy(x => x.Email))
            {
                to_enumerator.MoveNext();
                Assert.AreEqual(adress.Email, to_enumerator.Current.Email);
                Assert.AreEqual(adress.Name, to_enumerator.Current.Name);
            }

            var cc_enumerator = eml_message.Cc.OrderBy(x => x.Email).GetEnumerator();
            foreach (var adress in right_result.Cc.OrderBy(x => x.Email))
            {
                cc_enumerator.MoveNext();
                Assert.AreEqual(adress.Email, cc_enumerator.Current.Email);
                Assert.AreEqual(adress.Name, cc_enumerator.Current.Name);
            }

            Assert.AreEqual(right_result.Subject, eml_message.Subject);
            Assert.AreEqual(right_result.AttachmentCount, eml_message.Attachments.Count);
            Assert.AreEqual(right_result.UnknownPatsCount, eml_message.UnknownDispositionMimeParts.Count);

            //Replace needed for correct file loading
            Assert.AreEqual(right_result.HtmlBody, eml_message.BodyHtml.Text);
            Assert.AreEqual(right_result.HtmlEncoding, eml_message.BodyHtml.ContentTransferEncoding);
            Assert.AreEqual(right_result.HtmlCharset, eml_message.BodyHtml.Charset);

            Assert.AreEqual(right_result.TextBody, eml_message.BodyText.Text);
            Assert.AreEqual(right_result.TextCharset, eml_message.BodyText.Charset);
            Assert.AreEqual(right_result.TextEncoding, eml_message.BodyText.ContentTransferEncoding);
        }
        protected void Test(string emlFileName)
        {
            var mimeMessage = MailClient.ParseMimeMessage(TestFolderPath + emlFileName);
            var emlMessage  = ConvertToRightResult(mimeMessage);
            var rightResult = RightParserResult.FromXml(RightParserResultsPath + emlFileName.Replace(".eml", ".xml"));

#if NEED_OUT
            mimeMessage.WriteTo(TestFolderPath + emlFileName);
#endif
            Assert.AreEqual(rightResult.From.Email, emlMessage.From.Email);
            Assert.AreEqual(rightResult.From.Name, emlMessage.From.Name);
            Assert.AreEqual(rightResult.To.Count, emlMessage.To.Count);

            var toEnumerator = emlMessage.To.OrderBy(x => x.Email).GetEnumerator();
            foreach (var adress in rightResult.To.OrderBy(x => x.Email))
            {
                toEnumerator.MoveNext();
                Assert.AreEqual(adress.Email, toEnumerator.Current.Email);
                Assert.AreEqual(adress.Name, toEnumerator.Current.Name);
            }

            var ccEnumerator = emlMessage.Cc.OrderBy(x => x.Email).GetEnumerator();
            foreach (var adress in rightResult.Cc.OrderBy(x => x.Email))
            {
                ccEnumerator.MoveNext();
                Assert.AreEqual(adress.Email, ccEnumerator.Current.Email);
                Assert.AreEqual(adress.Name, ccEnumerator.Current.Name);
            }

            Assert.AreEqual(rightResult.Subject, emlMessage.Subject);
            Assert.AreEqual(rightResult.AttachmentCount, emlMessage.AttachmentCount);
            //Assert.AreEqual(rightResult.UnknownPatsCount, emlMessage.UnknownDispositionMimeParts.Count);

            Assert.AreEqual(rightResult.TextBody, emlMessage.TextBody);
            Assert.AreEqual(rightResult.TextCharset, emlMessage.TextCharset);
            //Assert.AreEqual(rightResult.TextContentDisposition, emlMessage.TextContentDisposition);

            Assert.AreEqual(rightResult.HtmlBody, emlMessage.HtmlBody);
            Assert.AreEqual(rightResult.HtmlCharset, emlMessage.HtmlCharset);
            //Assert.AreEqual(rightResult.HtmlContentDisposition, emlMessage.HtmlContentDisposition);
        }