github.com/danil/iso8583@v0.21.0/codec8583/mastercard_truncate_format_test.go (about) 1 package codec8583_test 2 3 import ( 4 "fmt" 5 "runtime" 6 "strconv" 7 "testing" 8 9 "github.com/danil/iso8583/codec8583" 10 ) 11 12 var MastercardTruncateFormatTestCases = []struct { 13 input iso8583Msg 14 truncate iso8583Msg 15 line int 16 benchmark bool 17 }{ 18 { 19 input: iso8583Msg{MTIMessageTypeIndicator: "0100", PANPrimaryAccountNumber2: "1234567890123456", ProcessingCode3: "000000", AmountTransaction4: "000000020126", AmountCardholderBilling6: "000000000310", TransmissionDateTime7: "1008053137", ConversionRateCardholderBilling10: "70154259", SystemTraceAuditNumber11: "196842", LocalTransactionTime12: "083137", LocalTransactionDate13: "1008", ExpirationDate14: "2312", SettlementDate15: "1008", CurrencyConversionDate16: "1008", MerchantTypeOrMerchantCategoryCode18: "5411", POSPointOfServiceEntryMode22: "071", ApplicationPANSequenceNumber23: "001", AcquiringInstitutionIdentificationCode32: "005037", ForwardingInstitutionIdentificationCode33: "200154", Track2Data35: "1234567890123456D99122011969100000377", RetrievalReferenceNumber37: "519939727023", CardAcceptorTerminalIdentification41: "10747007", CardAcceptorIdentificationCode42: "990000026622 ", CardAcceptorNameLocation43: "PYATEROCHKA 7904 Podolsk RUS", AdditionalDataPrivate48: "2fLz8PLw8Pbx8PXw8PDw8Q==", CurrencyCodeTransaction49: "643", CurrencyCodeCardholderBilling51: "840", ICCData55: "XyoCBkOCAhmAhAegAAAABBAQlQUAAACAAJoDGRAInAEAnwIGAAAAAgEmnwMGAAAAAAAAnxASARCgQAMiAAAAAAAAAAAAAAD/nxoCBkOfJggCXxqRiyDckZ8nAYCfMwPgCMifNAMfAwCfNgIBYJ83BM8lmh8=", ReservedPrivate1_61: "0000010000300643142103", ReservedPrivate3_63: "TNWGAP405"}, 20 truncate: iso8583Msg{MTIMessageTypeIndicator: "0100", PANPrimaryAccountNumber2: "1234XXXXXXXX3456", ProcessingCode3: "000000", AmountTransaction4: "000000020126", AmountCardholderBilling6: "000000000310", TransmissionDateTime7: "1008053137", ConversionRateCardholderBilling10: "70154259", SystemTraceAuditNumber11: "196842", LocalTransactionTime12: "083137", LocalTransactionDate13: "1008", ExpirationDate14: "2312", SettlementDate15: "1008", CurrencyConversionDate16: "1008", MerchantTypeOrMerchantCategoryCode18: "5411", POSPointOfServiceEntryMode22: "071", ApplicationPANSequenceNumber23: "001", AcquiringInstitutionIdentificationCode32: "005037", ForwardingInstitutionIdentificationCode33: "200154", Track2Data35: "1234XXXXXXXX3456D99122011969100000377", RetrievalReferenceNumber37: "519939727023", CardAcceptorTerminalIdentification41: "10747007", CardAcceptorIdentificationCode42: "990000026622 ", CardAcceptorNameLocation43: "PYATEROCHKA 7904 Podolsk RUS", AdditionalDataPrivate48: "2fLz8PLw8Pbx8PXw8PDw8Q==", CurrencyCodeTransaction49: "643", CurrencyCodeCardholderBilling51: "840", ICCData55: "XyoCBkOCAhmAhAegAAAABBAQlQUAAACAAJoDGRAInAEAnwIGAAAAAgEmnwMGAAAAAAAAnxASARCgQAMiAAAAAAAAAAAAAAD/nxoCBkOfJggCXxqRiyDckZ8nAYCfMwPgCMifNAMfAwCfNgIBYJ83BM8lmh8=", ReservedPrivate1_61: "0000010000300643142103", ReservedPrivate3_63: "TNWGAP405"}, 21 line: func() int { _, _, l, _ := runtime.Caller(1); return l }(), 22 benchmark: true, 23 }, 24 { 25 input: iso8583Msg{MTIMessageTypeIndicator: "0100", PANPrimaryAccountNumber2: "1234567890123456"}, 26 truncate: iso8583Msg{MTIMessageTypeIndicator: "0100", PANPrimaryAccountNumber2: "1234XXXXXXXX3456"}, 27 line: func() int { _, _, l, _ := runtime.Caller(1); return l }(), 28 }, 29 } 30 31 func TestMastercardTruncateFormat(t *testing.T) { 32 _, testFile, _, _ := runtime.Caller(0) 33 for _, tc := range MastercardTruncateFormatTestCases { 34 tc := tc 35 t.Run(strconv.Itoa(tc.line), func(t *testing.T) { 36 t.Parallel() 37 linkToExample := fmt.Sprintf("%s:%d", testFile, tc.line) 38 enc, err := codec8583.MastercardMarshaler.Marshal(&tc.input) 39 if err != nil { 40 t.Fatalf("unexpected error: %#v - %s", err, linkToExample) 41 } 42 dec := iso8583Msg{} 43 err = codec8583.MastercardUnmarshalerTruncator.Unmarshal(enc, &dec) 44 if err != nil { 45 t.Fatalf("unexpected error: %#v - %s", err, linkToExample) 46 } 47 if dec != tc.truncate { 48 t.Errorf("[truncate message] expected: %#v, received: %#v - %s", tc.truncate, dec, linkToExample) 49 } 50 enc, err = codec8583.MastercardMarshaler.Marshal(&dec) 51 if err != nil { 52 t.Fatalf("unexpected error: %#v - %s", err, linkToExample) 53 } 54 dec = iso8583Msg{} 55 err = codec8583.MastercardUnmarshalerTruncator.Unmarshal(enc, &dec) 56 if err != nil { 57 t.Fatalf("unexpected error: %#v - %s", err, linkToExample) 58 } 59 if dec != tc.truncate { 60 t.Errorf("[truncate message] expected: %#v, received: %#v - %s", tc.truncate, dec, linkToExample) 61 } 62 }) 63 } 64 } 65 66 func BenchmarkMastercardUnmarshalerTruncatorUnmarshal(b *testing.B) { 67 dec := iso8583Msg{} 68 err := codec8583.MastercardUnmarshalerTruncator.Unmarshal(iso8583Bytes[0], &dec) 69 if err != nil { 70 fmt.Println(err) 71 } 72 }