public void Format() { FormatterContext formatterContext = new FormatterContext( FormatterContext.DefaultBufferSize); Message value = new Message(); value.Formatter = GetFormatter(_fixedMessageFormatter); value.Fields.Add(1, "HE"); value.Fields.Add(2, "LLO"); InnerMessageField field = new InnerMessageField(37, value); InnerMessageFieldFormatter formatter; string formattedData; // Test fixed length formatting. formatter = new InnerMessageFieldFormatter(37, new FixedLengthManager(5), BinaryEncoder.GetInstance(), GetFormatter(_fixedMessageFormatter)); formatter.Format(field, ref formatterContext); formattedData = formatterContext.GetDataAsString(); Assert.IsTrue(formattedData.Equals("HELLO")); formatterContext.Clear(); formatter = new InnerMessageFieldFormatter(37, new FixedLengthManager(4), BinaryEncoder.GetInstance(), GetFormatter(_fixedMessageFormatter)); try { formatter.Format(field, ref formatterContext); Assert.Fail(); } catch (ArgumentOutOfRangeException e) { Assert.IsTrue(e.ParamName.Equals("dataLength")); } // Test variable length formatting. formatterContext.Clear(); formatter = new InnerMessageFieldFormatter(48, new VariableLengthManager(0, 999, StringLengthEncoder.GetInstance(999)), BinaryEncoder.GetInstance(), GetFormatter(_fixedMessageFormatter)); formatter.Format(field, ref formatterContext); formattedData = formatterContext.GetDataAsString(); Assert.IsTrue(formattedData.Equals("005HELLO")); formatterContext.Clear(); formatter.Format(new InnerMessageField(35, null), ref formatterContext); formattedData = formatterContext.GetDataAsString(); Assert.IsTrue(formattedData.Equals("000")); }
public void Constructors() { // Test fixed length properties. InnerMessageFieldFormatter formatter = new InnerMessageFieldFormatter(37, new FixedLengthManager(12), BinaryEncoder.GetInstance(), GetFormatter(_fixedMessageFormatter), "My formatter"); Assert.IsTrue(formatter.FieldNumber == 37); Assert.IsTrue(formatter.LengthManager.MaximumLength == 12); Assert.IsTrue(formatter.Description.Equals("My formatter")); Assert.IsTrue(formatter.Encoder == BinaryEncoder.GetInstance()); // Test variable length properties. formatter = new InnerMessageFieldFormatter(63, new VariableLengthManager(1, 800, StringLengthEncoder.GetInstance(5)), BinaryEncoder.GetInstance(), GetFormatter(_fixedMessageFormatter)); Assert.IsTrue(formatter.FieldNumber == 63); Assert.IsTrue(formatter.LengthManager.MaximumLength == 800); Assert.IsTrue(formatter.Description.Equals(string.Empty)); Assert.IsTrue(formatter.Encoder == BinaryEncoder.GetInstance()); }
public void Parse() { ParserContext parseContext = new ParserContext( ParserContext.DefaultBufferSize); InnerMessageField field; InnerMessageFieldFormatter formatter; parseContext.Write("HELLO0512345005ABCDE00"); // Test fixed length parse. formatter = new InnerMessageFieldFormatter(37, new FixedLengthManager(5), BinaryEncoder.GetInstance(), GetFormatter(_fixedMessageFormatter)); field = ( InnerMessageField )formatter.Parse(ref parseContext); Assert.IsNotNull(field); parseContext.ResetDecodedLength(); Assert.IsTrue(field.ToString() == "1:HE,2:LLO"); // Test variable length parse. formatter = new InnerMessageFieldFormatter(48, new VariableLengthManager(1, 20, StringLengthEncoder.GetInstance(99)), BinaryEncoder.GetInstance(), GetFormatter(_fixedMessageFormatter), string.Empty); field = ( InnerMessageField )formatter.Parse(ref parseContext); Assert.IsNotNull(field); parseContext.ResetDecodedLength(); Assert.IsTrue(field.ToString() == "1:12,2:345"); formatter = new InnerMessageFieldFormatter(48, new VariableLengthManager(1, 999, StringLengthEncoder.GetInstance(999)), BinaryEncoder.GetInstance(), GetFormatter(_fixedMessageFormatter)); field = ( InnerMessageField )formatter.Parse(ref parseContext); Assert.IsNotNull(field); parseContext.ResetDecodedLength(); Assert.IsTrue(field.ToString() == "1:AB,2:CDE"); // Test partial variable length parse. field = ( InnerMessageField )formatter.Parse(ref parseContext); Assert.IsNull(field); parseContext.Write("5HOU"); field = ( InnerMessageField )formatter.Parse(ref parseContext); Assert.IsNull(field); parseContext.Write("SE"); field = ( InnerMessageField )formatter.Parse(ref parseContext); Assert.IsNotNull(field); parseContext.ResetDecodedLength(); Assert.IsTrue(field.ToString() == "1:HO,2:USE"); // Test partial fixed. formatter = new InnerMessageFieldFormatter(37, new FixedLengthManager(5), BinaryEncoder.GetInstance(), GetFormatter(_fixedMessageFormatter)); field = ( InnerMessageField )formatter.Parse(ref parseContext); Assert.IsNull(field); parseContext.Write("34 "); field = ( InnerMessageField )formatter.Parse(ref parseContext); Assert.IsNull(field); parseContext.Write("56"); field = ( InnerMessageField )formatter.Parse(ref parseContext); Assert.IsNotNull(field); parseContext.ResetDecodedLength(); Assert.IsTrue(field.ToString() == "1:34,2: 56"); // Test variable length header with zero length. formatter = new InnerMessageFieldFormatter(48, new VariableLengthManager(0, 999, StringLengthEncoder.GetInstance(999)), BinaryEncoder.GetInstance(), GetFormatter(_fixedMessageFormatter)); parseContext.Write("000"); field = ( InnerMessageField )formatter.Parse(ref parseContext); Assert.IsNotNull(field); parseContext.ResetDecodedLength(); Assert.IsNull(field.Value); }