public void EdifactReader_UNOC_Default()
        {
            const string value = "ABCúíó";
            var bytes = Utf8.GetBytes(value);
            var output = new byte[3];

            var sb = new StringBuilder();

            using (var sr = new EdifactReader(new MemoryStream(bytes), Utf8, EdifactCharacterSet.UNOC, '.', true))
            {
                int c;
                while ((c = sr.Read()) != -1)
                {
                    sb.Append((char)c);
                }

            }

            var result = sb.ToString();

            Assert.AreEqual<string>("ABCúíó", result);
        }
        public void EdifactReader_UNOC_Replacement()
        {
            //only in UTF8 so not in UNOC
            //Ђ 	CYRILLIC CAPITAL LETTER DJE (U+0402) 	d082

            const string value = "ABCЂ";
            var bytes = Utf8.GetBytes(value);
            var output = new byte[3];

            var sb = new StringBuilder();

            using (var sr = new EdifactReader(new MemoryStream(bytes), Utf8, EdifactCharacterSet.UNOB, '.', true))
            {
                int c;
                while ((c = sr.Read()) != -1)
                {
                    sb.Append((char)c);
                }

            }

            var result = sb.ToString();

            Assert.AreEqual<string>("ABC.", result);
        }
        public void EdifactReader_UNOA_ReadLine()
        {
            const string value = "ABC@@@";
             var bytes = Utf8.GetBytes(value);
             var output = new byte[3];

             var sb = new StringBuilder();

             using (var sr = new EdifactReader(new MemoryStream(bytes), Utf8, EdifactCharacterSet.UNOA, '.'))
             {
                 int c;
                 while ((c = sr.Read()) != -1)
                 {
                     sb.Append((char)c);
                 }

             }

             var resultRead = sb.ToString();

             var sr2 = new EdifactReader(new MemoryStream(bytes), Utf8, EdifactCharacterSet.UNOA, '.');
             var resultReadLine = sr2.ReadLine();

             Assert.AreEqual<string>("ABC...", resultRead);
             Assert.AreEqual<string>("ABC...", resultReadLine);
        }
        public void EdifactReader_UNOA_ReadToEnd_WithEmptyNewLine()
        {
            const string value = @"ABC@@@

            XYZ@@@";
             var bytes = Utf8.GetBytes(value);
             var output = new byte[3];

             var sb = new StringBuilder();

             var sr = new EdifactReader(new MemoryStream(bytes), Utf8, EdifactCharacterSet.UNOA, '.');
             var result = sr.ReadToEnd();

             Assert.AreEqual<string>(@"ABC...

            XYZ...", result);
        }
        public void EdifactReader_RemoveControlChars()
        {
            const string value = "A\aB\bCDEF\fGHIJKLMON\nPQR\rST\tUV\vWXYZ";
             var bytes = Utf8.GetBytes(value);
             var output = new byte[3];

             var sb = new StringBuilder();

             using (var sr = new EdifactReader(new MemoryStream(bytes), Utf8, EdifactCharacterSet.UNOB, '.', true, true))
             {
                 int c;
                 while ((c = sr.Read()) != -1)
                 {
                     sb.Append((char)c);
                 }

             }

             var result = sb.ToString();

             Assert.AreEqual<string>("ABCDEFGHIJKLMONPQRSTUVWXYZ", result);
        }
 public void EdifactReader_ReadCharacterSetFromStream()
 {
     var input = DocLoader.LoadStream("samples.edifact1.txt");
      var sr = new EdifactReader(input, Utf8, EdifactCharacterSet.UNOA, '.');
      Assert.AreEqual(sr.CharSet, EdifactCharacterSet.UNOB);
 }
 public void EdifactReader_ReadCharacterFromShortStream()
 {
     const string value = @"UNOD";
      var bytes = Utf8.GetBytes(value);
      var sr = new EdifactReader(new MemoryStream(bytes), Utf8, EdifactCharacterSet.UNOX, '.');
      Assert.AreEqual(sr.CharSet, EdifactCharacterSet.UNOD);
 }
 public void EdifactReader_CharacterSetMissingFromStream_Fallback()
 {
     const string value = @"dummy";
      var bytes = Utf8.GetBytes(value);
      var sr = new EdifactReader(new MemoryStream(bytes), Utf8, EdifactCharacterSet.UNOX, '.');
      Assert.AreEqual(sr.CharSet, EdifactCharacterSet.UNOX);
 }
        /// <summary>
        /// Implements IComponent.Execute method.
        /// </summary>
        /// <param name="pc">Pipeline context</param>
        /// <param name="inmsg">Input message</param>
        /// <returns>Original input message</returns>
        /// <remarks>
        /// IComponent.Execute method is used to initiate
        /// the processing of the message in this pipeline component.
        /// </remarks>
        public Microsoft.BizTalk.Message.Interop.IBaseMessage Execute(Microsoft.BizTalk.Component.Interop.IPipelineContext pc, Microsoft.BizTalk.Message.Interop.IBaseMessage inmsg)
        {
            var encoding = this.Encoding;
            if (!string.IsNullOrEmpty(inmsg.BodyPart.Charset))
            {
                encoding = Encoding.GetEncoding(inmsg.BodyPart.Charset);
            }

            var stream = GetSeekeableMessageStream(inmsg);

            var sr = new EdifactReader(stream, encoding, TargetCharSet, FallbackChar, Normalize, RemoveControlChars);

            if (OverrideCharSet && sr.CharSet != TargetCharSet)
            {
                stream = ReplaceCharSet(stream, encoding, TargetCharSet);
                sr = new EdifactReader(stream, encoding, TargetCharSet, FallbackChar, Normalize, RemoveControlChars);
            }

            var result = new MemoryStream();

            var sw = new StreamWriter(result, encoding);

            using (sr)
            {
                int c;
                while ((c = sr.Read()) != -1)
                {
                    sw.Write((char)c);
                }

            }
            sw.Flush();
            result.Seek(0, SeekOrigin.Begin);

            inmsg.BodyPart.Data = result;

            pc.ResourceTracker.AddResource(result);

            return inmsg;
        }