public void Constructors() { // Test fixed length properties. BinaryFieldFormatter formatter = new BinaryFieldFormatter(37, new FixedLengthManager(12), BinaryEncoder.GetInstance(), "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 BinaryFieldFormatter(63, new VariableLengthManager(1, 800, StringLengthEncoder.GetInstance(5)), BinaryEncoder.GetInstance()); 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 Format() { FormatterContext formatterContext = new FormatterContext( FormatterContext.DefaultBufferSize); BinaryField field = new BinaryField(1); field.Value = "DATA"; BinaryFieldFormatter formatter; string formattedData; // Test fixed length formatting. formatter = new BinaryFieldFormatter(37, new FixedLengthManager(4), BinaryEncoder.GetInstance()); formatter.Format(field, ref formatterContext); formattedData = formatterContext.GetDataAsString(); Assert.IsTrue(formattedData.Equals("DATA")); formatterContext.Clear(); field.Value = "MORE DATA"; 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 BinaryFieldFormatter(48, new VariableLengthManager(0, 999, StringLengthEncoder.GetInstance(999)), BinaryEncoder.GetInstance()); formatter.Format(field, ref formatterContext); formattedData = formatterContext.GetDataAsString(); Assert.IsTrue(formattedData.Equals("009MORE DATA")); formatterContext.Clear(); formatter.Format(new BinaryField(5, null), ref formatterContext); formattedData = formatterContext.GetDataAsString(); Assert.IsTrue(formattedData.Equals("000")); }
public void Parse() { ParserContext parseContext = new ParserContext( ParserContext.DefaultBufferSize); BinaryField field; BinaryFieldFormatter formatter; // Setup data for three complete fields an one with partial data. parseContext.Write("DATA17DATA TO BE PARSED009SOME DATA00"); // Test fixed length parse. formatter = new BinaryFieldFormatter(37, new FixedLengthManager(4), BinaryEncoder.GetInstance()); field = ( BinaryField)formatter.Parse(ref parseContext); Assert.IsNotNull(field); parseContext.ResetDecodedLength(); Assert.IsTrue(field.ToString().Equals("DATA")); // Test variable length parse. formatter = new BinaryFieldFormatter(48, new VariableLengthManager(1, 20, StringLengthEncoder.GetInstance(99)), BinaryEncoder.GetInstance(), string.Empty); field = ( BinaryField)formatter.Parse(ref parseContext); Assert.IsNotNull(field); parseContext.ResetDecodedLength(); Assert.IsTrue(field.ToString().Equals("DATA TO BE PARSED")); formatter = new BinaryFieldFormatter(48, new VariableLengthManager(1, 999, StringLengthEncoder.GetInstance(999)), BinaryEncoder.GetInstance()); field = ( BinaryField)formatter.Parse(ref parseContext); Assert.IsNotNull(field); parseContext.ResetDecodedLength(); Assert.IsTrue(field.ToString().Equals("SOME DATA")); // Test partial variable length parse. field = ( BinaryField)formatter.Parse(ref parseContext); Assert.IsNull(field); parseContext.Write("9MORE D"); field = ( BinaryField)formatter.Parse(ref parseContext); Assert.IsNull(field); parseContext.Write("ATA"); field = ( BinaryField)formatter.Parse(ref parseContext); Assert.IsNotNull(field); parseContext.ResetDecodedLength(); Assert.IsTrue(field.ToString().Equals("MORE DATA")); // Test partial fixed. formatter = new BinaryFieldFormatter(37, new FixedLengthManager(8), BinaryEncoder.GetInstance()); field = ( BinaryField)formatter.Parse(ref parseContext); Assert.IsNull(field); parseContext.Write("ONE "); field = ( BinaryField)formatter.Parse(ref parseContext); Assert.IsNull(field); parseContext.Write("MORE"); field = ( BinaryField)formatter.Parse(ref parseContext); Assert.IsNotNull(field); parseContext.ResetDecodedLength(); Assert.IsTrue(field.ToString().Equals("ONE MORE")); // Test variable length header with zero length. formatter = new BinaryFieldFormatter(48, new VariableLengthManager(0, 999, StringLengthEncoder.GetInstance(999)), BinaryEncoder.GetInstance()); parseContext.Write("000"); field = ( BinaryField)formatter.Parse(ref parseContext); Assert.IsNotNull(field); parseContext.ResetDecodedLength(); Assert.IsNull(field.Value); }