Beispiel #1
0
 /// <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);
 }
Beispiel #2
0
        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));
        }