/// <summary> Encodes the given Type, using the given encoding characters. /// It is assumed that the Type represents a complete field rather than a component. /// </summary> public static System.String Encode(IType source, EncodingCharacters encodingChars) { System.Text.StringBuilder field = new System.Text.StringBuilder(); for (int i = 1; i <= Terser.numComponents(source); i++) { System.Text.StringBuilder comp = new System.Text.StringBuilder(); for (int j = 1; j <= Terser.numSubComponents(source, i); j++) { IPrimitive p = Terser.getPrimitive(source, i, j); comp.Append(EncodePrimitive(p, encodingChars)); comp.Append(encodingChars.SubcomponentSeparator); } field.Append(StripExtraDelimiters(comp.ToString(), encodingChars.SubcomponentSeparator)); field.Append(encodingChars.ComponentSeparator); } return(StripExtraDelimiters(field.ToString(), encodingChars.ComponentSeparator)); //return encode(source, encodingChars, false); }
public void TestEnumerators() { var segment = sut.GetSegment("MSH"); Assert.AreEqual(3, Terser.numComponents(segment.GetField(9, 0))); segment.GetField(9, 0).ExtraComponents.GetComponent(0); Assert.AreEqual(4, Terser.numComponents(segment.GetField(9, 0))); segment.GetField(9, 0).ExtraComponents.GetComponent(1); Assert.AreEqual(5, Terser.numComponents(segment.GetField(9, 0))); segment.GetField(2, 0).ExtraComponents.GetComponent(0); Assert.AreEqual(2, Terser.numComponents(segment.GetField(2, 0))); ((IPrimitive)((IComposite)segment.GetField(9, 0)).Components[0].ExtraComponents.GetComponent(0).Data).Value = "xxx"; Assert.AreEqual(2, Terser.numSubComponents(segment.GetField(9, 0), 1)); }