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; }