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() { BitMapFieldFormatter bitmapFormatter = new BitMapFieldFormatter( 0, 1, 64, BinaryEncoder.GetInstance()); Assert.IsTrue(bitmapFormatter.FieldNumber == 0); Assert.IsTrue(bitmapFormatter.LowerFieldNumber == 1); Assert.IsTrue(bitmapFormatter.UpperFieldNumber == 64); Assert.IsTrue(bitmapFormatter.Encoder == BinaryEncoder.GetInstance()); Assert.IsTrue(bitmapFormatter.Description == string.Empty); bitmapFormatter = new BitMapFieldFormatter( 1, 65, 128, BinaryEncoder.GetInstance(), "Second bitmap"); Assert.IsTrue(bitmapFormatter.FieldNumber == 1); Assert.IsTrue(bitmapFormatter.LowerFieldNumber == 65); Assert.IsTrue(bitmapFormatter.UpperFieldNumber == 128); Assert.IsTrue(bitmapFormatter.Encoder == BinaryEncoder.GetInstance()); Assert.IsTrue(bitmapFormatter.Description.Equals("Second bitmap")); try { bitmapFormatter = new BitMapFieldFormatter(0, 1, 64, null); Assert.Fail(); } catch (ArgumentNullException e) { Assert.IsTrue(e.ParamName.Equals("encoder")); } try { bitmapFormatter = new BitMapFieldFormatter(0, -1, 64, BinaryEncoder.GetInstance()); Assert.Fail(); } catch (ArgumentOutOfRangeException e) { Assert.IsTrue(e.ParamName.Equals("lowerFieldNumber")); } try { bitmapFormatter = new BitMapFieldFormatter(0, 65, 64, BinaryEncoder.GetInstance()); Assert.Fail(); } catch (ArgumentOutOfRangeException e) { Assert.IsTrue(e.ParamName.Equals("lowerFieldNumber")); } }
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")); }
/// <summary> /// It initializes the fields formatters for this message formatter. /// </summary> private void SetupFields() { MessageTypeIdentifierFormatter = new StringFieldFormatter( -1, new FixedLengthManager(4), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, true), "Message type identifier"); FieldFormatters.Add(new BitMapFieldFormatter(0, 1, 64, HexadecimalBinaryEncoder.GetInstance(), "Primary bitmap")); FieldFormatters.Add(new BitMapFieldFormatter(1, 65, 128, HexadecimalBinaryEncoder.GetInstance(), "Secondary bitmap")); FieldFormatters.Add(new StringFieldFormatter( 2, new VariableLengthManager(0, 19, StringLengthEncoder.GetInstance(19)), StringEncoder.GetInstance(), NumericValidator.GetInstance(), "Primary Account Number")); FieldFormatters.Add(new StringFieldFormatter( 3, new FixedLengthManager(6), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, false), "Processing Code")); FieldFormatters.Add(new StringFieldFormatter( 4, new FixedLengthManager(12), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, true), "Transaction amount")); FieldFormatters.Add(new StringFieldFormatter( 5, new FixedLengthManager(12), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, true), "Reconciliation amount")); FieldFormatters.Add(new StringFieldFormatter( 6, new FixedLengthManager(12), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, true), "Cardholder billing amount")); FieldFormatters.Add(new StringFieldFormatter( 7, new FixedLengthManager(10), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, false), "Transmission date and time")); FieldFormatters.Add(new StringFieldFormatter( 8, new FixedLengthManager(8), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, true), "Cardholder billing fee amount")); FieldFormatters.Add(new StringFieldFormatter( 9, new FixedLengthManager(8), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, false), "Reconciliation conversion rate")); FieldFormatters.Add(new StringFieldFormatter( 10, new FixedLengthManager(8), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, true), "Cardholder billing conversion rate")); FieldFormatters.Add(new StringFieldFormatter( 11, new FixedLengthManager(6), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, true), "Systems trace audit number")); FieldFormatters.Add(new StringFieldFormatter( 12, new FixedLengthManager(12), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, false), "Local transaction date and time")); FieldFormatters.Add(new StringFieldFormatter( 13, new FixedLengthManager(4), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, false), "Effective date")); FieldFormatters.Add(new StringFieldFormatter( 14, new FixedLengthManager(4), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, false), "Expiration date")); FieldFormatters.Add(new StringFieldFormatter( 15, new FixedLengthManager(6), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, false), "Settlement date")); FieldFormatters.Add(new StringFieldFormatter( 16, new FixedLengthManager(4), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, false), "Conversion date")); FieldFormatters.Add(new StringFieldFormatter( 17, new FixedLengthManager(4), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, false), "Capture date")); FieldFormatters.Add(new StringFieldFormatter( 18, new FixedLengthManager(4), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, true), "Merchant type")); FieldFormatters.Add(new StringFieldFormatter( 19, new FixedLengthManager(3), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, true), "Acquiring institution country code")); FieldFormatters.Add(new StringFieldFormatter( 20, new FixedLengthManager(3), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, true), "Primary account number country code")); FieldFormatters.Add(new StringFieldFormatter( 21, new FixedLengthManager(3), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, true), "Forwarding institution country code")); FieldFormatters.Add(new StringFieldFormatter( 22, new FixedLengthManager(12), StringEncoder.GetInstance(), "Point of service data code")); FieldFormatters.Add(new StringFieldFormatter( 23, new FixedLengthManager(3), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, true), "Card sequence number")); FieldFormatters.Add(new StringFieldFormatter( 24, new FixedLengthManager(3), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, true), "Function code")); FieldFormatters.Add(new StringFieldFormatter( 25, new FixedLengthManager(4), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, true), "Message reason code")); FieldFormatters.Add(new StringFieldFormatter( 26, new FixedLengthManager(4), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, true), "Card acceptor business code")); FieldFormatters.Add(new StringFieldFormatter( 27, new FixedLengthManager(1), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, true), "Approval code length")); FieldFormatters.Add(new StringFieldFormatter( 28, new FixedLengthManager(6), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, false), "Reconciliation date")); FieldFormatters.Add(new StringFieldFormatter( 29, new FixedLengthManager(3), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, false), "Reconciliation indicator")); FieldFormatters.Add(new StringFieldFormatter( 30, new FixedLengthManager(24), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, true), "Original amounts")); FieldFormatters.Add(new StringFieldFormatter( 31, new VariableLengthManager(0, 99, StringLengthEncoder.GetInstance(99)), StringEncoder.GetInstance(), "Acquirer reference data")); FieldFormatters.Add(new StringFieldFormatter( 32, new VariableLengthManager(0, 11, StringLengthEncoder.GetInstance(11)), StringEncoder.GetInstance(), NumericValidator.GetInstance(), "Acquirer institution identification code")); FieldFormatters.Add(new StringFieldFormatter( 33, new VariableLengthManager(0, 11, StringLengthEncoder.GetInstance(11)), StringEncoder.GetInstance(), NumericValidator.GetInstance(), "Forwarding institution identification code")); FieldFormatters.Add(new StringFieldFormatter( 34, new VariableLengthManager(0, 28, StringLengthEncoder.GetInstance(28)), StringEncoder.GetInstance(), "Extended primary account number")); FieldFormatters.Add(new StringFieldFormatter( 35, new VariableLengthManager(0, 37, StringLengthEncoder.GetInstance(37)), StringEncoder.GetInstance(), "Track 2 data")); FieldFormatters.Add(new StringFieldFormatter( 36, new VariableLengthManager(0, 104, StringLengthEncoder.GetInstance(104)), StringEncoder.GetInstance(), "Track 3 data")); FieldFormatters.Add(new StringFieldFormatter( 37, new FixedLengthManager(12), StringEncoder.GetInstance(), "Retrieval reference number")); FieldFormatters.Add(new StringFieldFormatter( 38, new FixedLengthManager(6), StringEncoder.GetInstance(), "Approval code")); FieldFormatters.Add(new StringFieldFormatter( 39, new FixedLengthManager(3), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, true), "Action code")); FieldFormatters.Add(new StringFieldFormatter( 40, new FixedLengthManager(3), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, false), "Service code")); FieldFormatters.Add(new StringFieldFormatter( 41, new FixedLengthManager(8), StringEncoder.GetInstance(), "Card acceptor terminal identification")); FieldFormatters.Add(new StringFieldFormatter( 42, new FixedLengthManager(15), StringEncoder.GetInstance(), "Card acceptor identification code")); FieldFormatters.Add(new StringFieldFormatter( 43, new VariableLengthManager(0, 99, StringLengthEncoder.GetInstance(99)), StringEncoder.GetInstance(), "Card acceptor name/location")); FieldFormatters.Add(new StringFieldFormatter( 44, new VariableLengthManager(0, 99, StringLengthEncoder.GetInstance(99)), StringEncoder.GetInstance(), "Additional response data")); FieldFormatters.Add(new StringFieldFormatter( 45, new VariableLengthManager(0, 76, StringLengthEncoder.GetInstance(76)), StringEncoder.GetInstance(), "Track 1 data")); FieldFormatters.Add(new StringFieldFormatter( 46, new VariableLengthManager(0, 204, StringLengthEncoder.GetInstance(204)), StringEncoder.GetInstance(), "Fees amounts")); FieldFormatters.Add(new StringFieldFormatter( 47, new VariableLengthManager(0, 999, StringLengthEncoder.GetInstance(999)), StringEncoder.GetInstance(), "Additional data - national")); FieldFormatters.Add(new StringFieldFormatter( 48, new VariableLengthManager(0, 999, StringLengthEncoder.GetInstance(999)), StringEncoder.GetInstance(), "Additional data - private")); FieldFormatters.Add(new StringFieldFormatter( 49, new FixedLengthManager(3), StringEncoder.GetInstance(), "Transaction currency code")); FieldFormatters.Add(new StringFieldFormatter( 50, new FixedLengthManager(3), StringEncoder.GetInstance(), "Reconciliation currency code")); FieldFormatters.Add(new StringFieldFormatter( 51, new FixedLengthManager(3), StringEncoder.GetInstance(), "Cardholder billing currency code")); FieldFormatters.Add(new BinaryFieldFormatter( 52, new FixedLengthManager(8), BinaryEncoder.GetInstance(), "Personal identification number (PIN) data")); FieldFormatters.Add(new BinaryFieldFormatter( 53, new VariableLengthManager(0, 48, StringLengthEncoder.GetInstance(48)), HexadecimalBinaryEncoder.GetInstance(), "Security related control information")); FieldFormatters.Add(new StringFieldFormatter( 54, new VariableLengthManager(0, 120, StringLengthEncoder.GetInstance(120)), StringEncoder.GetInstance(), "Amounts, additional")); FieldFormatters.Add(new BinaryFieldFormatter( 55, new VariableLengthManager(0, 255, StringLengthEncoder.GetInstance(255)), HexadecimalBinaryEncoder.GetInstance(), "IC card system related data")); FieldFormatters.Add(new StringFieldFormatter( 56, new VariableLengthManager(0, 35, StringLengthEncoder.GetInstance(35)), StringEncoder.GetInstance(), NumericValidator.GetInstance(), "Original data elements")); FieldFormatters.Add(new StringFieldFormatter( 57, new FixedLengthManager(3), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, false), "Authorization life cycle code")); FieldFormatters.Add(new StringFieldFormatter( 58, new VariableLengthManager(0, 11, StringLengthEncoder.GetInstance(11)), StringEncoder.GetInstance(), NumericValidator.GetInstance(), "Authorizing agent institution Id Code")); FieldFormatters.Add(new StringFieldFormatter( 59, new VariableLengthManager(0, 999, StringLengthEncoder.GetInstance(999)), StringEncoder.GetInstance(), "Transport data")); FieldFormatters.Add(new StringFieldFormatter( 60, new VariableLengthManager(0, 999, StringLengthEncoder.GetInstance(999)), StringEncoder.GetInstance(), "Reserved for national use")); FieldFormatters.Add(new StringFieldFormatter( 61, new VariableLengthManager(0, 999, StringLengthEncoder.GetInstance(999)), StringEncoder.GetInstance(), "Reserved for national use")); FieldFormatters.Add(new StringFieldFormatter( 62, new VariableLengthManager(0, 999, StringLengthEncoder.GetInstance(999)), StringEncoder.GetInstance(), "Reserved for private use")); FieldFormatters.Add(new StringFieldFormatter( 63, new VariableLengthManager(0, 999, StringLengthEncoder.GetInstance(999)), StringEncoder.GetInstance(), "Reserved for private use")); FieldFormatters.Add(new BinaryFieldFormatter( 64, new FixedLengthManager(8), BinaryEncoder.GetInstance(), "Message authentication code field")); FieldFormatters.Add(new BinaryFieldFormatter( 65, new FixedLengthManager(8), BinaryEncoder.GetInstance(), "Reserved for ISO use")); FieldFormatters.Add(new StringFieldFormatter( 66, new VariableLengthManager(0, 204, StringLengthEncoder.GetInstance(204)), StringEncoder.GetInstance(), "Amounts, original fees")); FieldFormatters.Add(new StringFieldFormatter( 67, new FixedLengthManager(2), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, false), "Extended payment data")); FieldFormatters.Add(new StringFieldFormatter( 68, new FixedLengthManager(3), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, true), "Receiving institution country code")); FieldFormatters.Add(new StringFieldFormatter( 69, new FixedLengthManager(3), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, true), "Settlement institution country code")); FieldFormatters.Add(new StringFieldFormatter( 70, new FixedLengthManager(3), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, true), "Authorizing agent institution country code")); FieldFormatters.Add(new StringFieldFormatter( 71, new FixedLengthManager(8), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, true), "Message number")); FieldFormatters.Add(new StringFieldFormatter( 72, new VariableLengthManager(0, 999, StringLengthEncoder.GetInstance(999)), StringEncoder.GetInstance(), "Data record")); FieldFormatters.Add(new StringFieldFormatter( 73, new FixedLengthManager(6), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, false), "Action date")); FieldFormatters.Add(new StringFieldFormatter( 74, new FixedLengthManager(10), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, true), "Credits, number")); FieldFormatters.Add(new StringFieldFormatter( 75, new FixedLengthManager(10), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, true), "Credits, reversal number")); FieldFormatters.Add(new StringFieldFormatter( 76, new FixedLengthManager(10), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, true), "Debits, number")); FieldFormatters.Add(new StringFieldFormatter( 77, new FixedLengthManager(10), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, true), "Debits, reversal number")); FieldFormatters.Add(new StringFieldFormatter( 78, new FixedLengthManager(10), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, true), "Transfer, number")); FieldFormatters.Add(new StringFieldFormatter( 79, new FixedLengthManager(10), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, true), "Transfer, reversal number")); FieldFormatters.Add(new StringFieldFormatter( 80, new FixedLengthManager(10), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, true), "Inquiries, number")); FieldFormatters.Add(new StringFieldFormatter( 81, new FixedLengthManager(10), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, true), "Authorizations, number")); FieldFormatters.Add(new StringFieldFormatter( 82, new FixedLengthManager(10), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, true), "Inquiries, reversal number")); FieldFormatters.Add(new StringFieldFormatter( 83, new FixedLengthManager(10), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, true), "Payments, number")); FieldFormatters.Add(new StringFieldFormatter( 84, new FixedLengthManager(10), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, true), "Payments, reversal number")); FieldFormatters.Add(new StringFieldFormatter( 85, new FixedLengthManager(10), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, true), "Fee collections, number")); FieldFormatters.Add(new StringFieldFormatter( 86, new FixedLengthManager(16), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, true), "Credits, amount")); FieldFormatters.Add(new StringFieldFormatter( 87, new FixedLengthManager(16), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, true), "Credits, reversal amount")); FieldFormatters.Add(new StringFieldFormatter( 88, new FixedLengthManager(16), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, true), "Debits, amount")); FieldFormatters.Add(new StringFieldFormatter( 89, new FixedLengthManager(16), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, true), "Debits, reversal amount")); FieldFormatters.Add(new StringFieldFormatter( 90, new FixedLengthManager(10), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, true), "Authorizations, reversal number")); FieldFormatters.Add(new StringFieldFormatter( 91, new FixedLengthManager(3), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, true), "Transaction destination institution country code")); FieldFormatters.Add(new StringFieldFormatter( 92, new FixedLengthManager(3), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, true), "Transaction originator institution country code")); FieldFormatters.Add(new StringFieldFormatter( 93, new VariableLengthManager(0, 11, StringLengthEncoder.GetInstance(11)), StringEncoder.GetInstance(), NumericValidator.GetInstance(), "Transaction destination institution Id Code")); FieldFormatters.Add(new StringFieldFormatter( 94, new VariableLengthManager(0, 11, StringLengthEncoder.GetInstance(11)), StringEncoder.GetInstance(), NumericValidator.GetInstance(), "Transaction originator institution Id Code")); FieldFormatters.Add(new StringFieldFormatter( 95, new VariableLengthManager(0, 99, StringLengthEncoder.GetInstance(99)), StringEncoder.GetInstance(), "Card issuer reference data")); FieldFormatters.Add(new BinaryFieldFormatter( 96, new VariableLengthManager(0, 999, StringLengthEncoder.GetInstance(48)), HexadecimalBinaryEncoder.GetInstance(), "Key management data")); FieldFormatters.Add(new StringFieldFormatter( 97, new FixedLengthManager(17), StringEncoder.GetInstance(), "Net reconciliation amount")); FieldFormatters.Add(new StringFieldFormatter( 98, new FixedLengthManager(25), StringEncoder.GetInstance(), "Payee")); FieldFormatters.Add(new StringFieldFormatter( 99, new VariableLengthManager(0, 11, StringLengthEncoder.GetInstance(11)), StringEncoder.GetInstance(), "Settlement institution Id code")); FieldFormatters.Add(new StringFieldFormatter( 100, new VariableLengthManager(0, 11, StringLengthEncoder.GetInstance(11)), StringEncoder.GetInstance(), NumericValidator.GetInstance(), "Receiving institution Id code")); FieldFormatters.Add(new StringFieldFormatter( 101, new VariableLengthManager(0, 17, StringLengthEncoder.GetInstance(17)), StringEncoder.GetInstance(), "File name")); FieldFormatters.Add(new StringFieldFormatter( 102, new VariableLengthManager(0, 28, StringLengthEncoder.GetInstance(28)), StringEncoder.GetInstance(), "Account identification 1")); FieldFormatters.Add(new StringFieldFormatter( 103, new VariableLengthManager(0, 28, StringLengthEncoder.GetInstance(28)), StringEncoder.GetInstance(), "Account identification 2")); FieldFormatters.Add(new StringFieldFormatter( 104, new VariableLengthManager(0, 100, StringLengthEncoder.GetInstance(100)), StringEncoder.GetInstance(), "Transaction description")); FieldFormatters.Add(new StringFieldFormatter( 105, new FixedLengthManager(16), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, true), "Credits, chargeback amount")); FieldFormatters.Add(new StringFieldFormatter( 106, new FixedLengthManager(16), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, true), "Debits, chargeback amount")); FieldFormatters.Add(new StringFieldFormatter( 107, new FixedLengthManager(10), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, true), "Credits, chargeback number")); FieldFormatters.Add(new StringFieldFormatter( 108, new FixedLengthManager(10), StringEncoder.GetInstance(), ZeroPaddingLeft.GetInstance(false, true), "Debits, chargeback number")); FieldFormatters.Add(new StringFieldFormatter( 109, new VariableLengthManager(0, 84, StringLengthEncoder.GetInstance(84)), StringEncoder.GetInstance(), "Credits, fee amounts")); FieldFormatters.Add(new StringFieldFormatter( 110, new VariableLengthManager(0, 84, StringLengthEncoder.GetInstance(84)), StringEncoder.GetInstance(), "Debits, fee amounts")); FieldFormatters.Add(new StringFieldFormatter( 111, new VariableLengthManager(0, 999, StringLengthEncoder.GetInstance(999)), StringEncoder.GetInstance(), "Reserved for ISO use")); FieldFormatters.Add(new StringFieldFormatter( 112, new VariableLengthManager(0, 999, StringLengthEncoder.GetInstance(999)), StringEncoder.GetInstance(), "Reserved for ISO use")); FieldFormatters.Add(new StringFieldFormatter( 113, new VariableLengthManager(0, 999, StringLengthEncoder.GetInstance(999)), StringEncoder.GetInstance(), "Reserved for ISO use")); FieldFormatters.Add(new StringFieldFormatter( 114, new VariableLengthManager(0, 999, StringLengthEncoder.GetInstance(999)), StringEncoder.GetInstance(), "Reserved for ISO use")); FieldFormatters.Add(new StringFieldFormatter( 115, new VariableLengthManager(0, 999, StringLengthEncoder.GetInstance(999)), StringEncoder.GetInstance(), "Reserved for ISO use")); FieldFormatters.Add(new StringFieldFormatter( 116, new VariableLengthManager(0, 999, StringLengthEncoder.GetInstance(999)), StringEncoder.GetInstance(), "Reserved for national use")); FieldFormatters.Add(new StringFieldFormatter( 117, new VariableLengthManager(0, 999, StringLengthEncoder.GetInstance(999)), StringEncoder.GetInstance(), "Reserved for national use")); FieldFormatters.Add(new StringFieldFormatter( 118, new VariableLengthManager(0, 999, StringLengthEncoder.GetInstance(999)), StringEncoder.GetInstance(), "Reserved for national use")); FieldFormatters.Add(new StringFieldFormatter( 119, new VariableLengthManager(0, 999, StringLengthEncoder.GetInstance(999)), StringEncoder.GetInstance(), "Reserved for national use")); FieldFormatters.Add(new StringFieldFormatter( 120, new VariableLengthManager(0, 999, StringLengthEncoder.GetInstance(999)), StringEncoder.GetInstance(), "Reserved for national use")); FieldFormatters.Add(new StringFieldFormatter( 121, new VariableLengthManager(0, 999, StringLengthEncoder.GetInstance(999)), StringEncoder.GetInstance(), "Reserved for national use")); FieldFormatters.Add(new StringFieldFormatter( 122, new VariableLengthManager(0, 999, StringLengthEncoder.GetInstance(999)), StringEncoder.GetInstance(), "Reserved for national use")); FieldFormatters.Add(new StringFieldFormatter( 123, new VariableLengthManager(0, 999, StringLengthEncoder.GetInstance(999)), StringEncoder.GetInstance(), "Reserved for private use")); FieldFormatters.Add(new StringFieldFormatter( 124, new VariableLengthManager(0, 999, StringLengthEncoder.GetInstance(999)), StringEncoder.GetInstance(), "Reserved for private use")); FieldFormatters.Add(new StringFieldFormatter( 125, new VariableLengthManager(0, 999, StringLengthEncoder.GetInstance(999)), StringEncoder.GetInstance(), "Reserved for private use")); FieldFormatters.Add(new StringFieldFormatter( 126, new VariableLengthManager(0, 999, StringLengthEncoder.GetInstance(999)), StringEncoder.GetInstance(), "Reserved for private use")); FieldFormatters.Add(new StringFieldFormatter( 127, new VariableLengthManager(0, 999, StringLengthEncoder.GetInstance(999)), StringEncoder.GetInstance(), "Reserved for private use")); FieldFormatters.Add(new BinaryFieldFormatter( 128, new FixedLengthManager(8), BinaryEncoder.GetInstance(), "Message authentication code")); }
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); }
public void RetrieveFields() { BasicMessageFormatter formatter = new BasicMessageFormatter(); Message message = new Message(); // Add field Formatters. for (int i = 0; i < _fixedMessageFormatter.Length; i++) { if (_fixedMessageFormatter[i] != null) { formatter.FieldFormatters.Add(_fixedMessageFormatter[i]); } } // Replace field formatter for field number 6, to perform // a complete AssignFields test. formatter.FieldFormatters.Add(new BinaryFieldFormatter(6, new FixedLengthManager(20), BinaryEncoder.GetInstance())); // Perform test for invalid parameters. try { formatter.RetrieveFields(null, null); Assert.Fail(); } catch (ArgumentNullException e) { Assert.IsTrue(e.ParamName == "message"); } try { formatter.RetrieveFields(message, null); Assert.Fail(); } catch (ArgumentNullException e) { Assert.IsTrue(e.ParamName == "fieldsContainer"); } // Perform a simple test. message.Fields.Add(1, "01"); message.Fields.Add(2, "02"); message.Fields.Add(5, "1385"); message.Fields.Add(6, "John Doe"); message.Fields.Add(30, "Random data"); SimpleTransaction simpleTransaction = new SimpleTransaction(); formatter.RetrieveFields(message, simpleTransaction); Assert.IsFalse(simpleTransaction.InvalidPropertyHasBeenAssigned); Assert.IsNotNull(simpleTransaction.RetrieveBranch()); Assert.IsTrue(simpleTransaction.RetrieveBranch().Equals("01")); Assert.IsTrue(simpleTransaction.Terminal == 1385); Assert.IsTrue(simpleTransaction.AdditionalData.Equals("Random data")); }
public void AssignFields() { BasicMessageFormatter formatter = new BasicMessageFormatter(); Message message = new Message(); // Add field Formatters. for (int i = 0; i < _fixedMessageFormatter.Length; i++) { if (_fixedMessageFormatter[i] != null) { formatter.FieldFormatters.Add(_fixedMessageFormatter[i]); } } // Replace field formatter for field number 6, to perform // a complete AssignFields test. formatter.FieldFormatters.Add(new BinaryFieldFormatter(6, new FixedLengthManager(20), BinaryEncoder.GetInstance())); // Perform test for invalid parameters. try { formatter.AssignFields(null, null); Assert.Fail(); } catch (ArgumentNullException e) { Assert.IsTrue(e.ParamName == "message"); } try { formatter.AssignFields(message, null); Assert.Fail(); } catch (ArgumentNullException e) { Assert.IsTrue(e.ParamName == "fieldsContainer"); } // Perform a simple test. SimpleTransaction simpleTransaction = new SimpleTransaction(); simpleTransaction.Terminal = 106; simpleTransaction.CustomerName = "John Doe"; simpleTransaction.AdditionalData = "Some data"; formatter.AssignFields(message, simpleTransaction); Assert.IsFalse(simpleTransaction.InvalidPropertyHasBeenTaken); Assert.IsFalse(message.Fields.Contains(1)); Assert.IsFalse(message.Fields.Contains(2)); Assert.IsTrue(message.Fields.Contains(5)); Assert.IsTrue(simpleTransaction.Terminal.ToString().Equals( message[5].ToString())); Assert.IsTrue(message.Fields.Contains(6)); Assert.IsTrue(simpleTransaction.CustomerName.Equals( message[6].ToString())); Assert.IsTrue(message.Fields.Contains(30)); Assert.IsTrue(simpleTransaction.AdditionalData.Equals( message[30].ToString())); }
public void GetInstance() { Assert.IsTrue(_encoder == BinaryEncoder.GetInstance()); }
public void SetUp() { _encoder = BinaryEncoder.GetInstance(); _data = Encoding.UTF7.GetBytes("Sample data"); Assert.IsNotNull(_encoder); }
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); }