# ------------------------------------------------------------------------- # iban.test -*- tcl -*- # (C) 2011 Andreas Kupries. BSD licensed. # (C) 2011 Max Jarek # ------------------------------------------------------------------------- source [file join \ [file dirname [file dirname [file join [pwd] [info script]]]] \ devtools testutilities.tcl] testsNeedTcl 8.5 testsNeedTcltest 2.0 support { use snit/snit2.tcl snit ;# snit v2 fixed, due Tcl 8.5 useLocal valtype.tcl valtype::common } testing { useLocal iban.tcl valtype::iban } # ------------------------------------------------------------------------- test valtype-iban-1.0 {iban validation wrong\#args} -body { valtype::iban validate } -returnCodes error \ -result {wrong # args: should be "valtype::iban validate value"} test valtype-iban-1.1 {iban validation wrong\#args} -body { valtype::iban validate A B C } -returnCodes error \ -result {wrong # args: should be "valtype::iban validate value"} # ------------------------------------------------------------------------- set n 0 foreach iban { AD1200012030200359100100 AE070331234567890123456 AL47212110090000000235698741 AT611904300234573201 AZ21NABZ00000000137010001944 BA391290079401028494 BE68539007547034 BG80BNBG96611020345678 BH67BMAG00001299123456 BR9700360305000010009795493P1 BR1800000000141455123924100C2 BY13NBRB3600900000002Z00AB00 CH9300762011623852957 CY17002001280000001200527600 CZ6508000000192000145399 DE89370400440532013000 DK5000400440116243 DO28BAGR00000001212453611324 EE382200221020145685 ES9121000418450200051332 FI2112345600000785 FO6264600001631634 FR1420041010050500013M02606 GB29NWBK60161331926819 GE29NB0000000101904917 GI75NWBK000000007099453 GL8964710001000206 GR1601101250000000012300695 GT82TRAJ01020000001210029690 HR1210010051863000160 HU42117730161111101800000000 IE29AIBK93115212345678 IL620108000000099999999 IS140159260076545510730339 IT60X0542811101000000123456 IQ98NBIQ850123456789012 JO94CBJO0010000000000131000302 KW81CBKU0000000000001234560101 KZ86125KZT5004100100 LB62099900000001001901229114 LC55HEMM000100010012001200023015 LI21088100002324013AA LT121000011101001000 LU280019400644750000 LV80BANK0000435195001 MC5811222000010123456789030 MD24AG000225100013104168 ME25505000012345678951 MK07250120000058984 MR1300020001010000123456753 MT84MALT011000012345MTLCAST001S MU17BOMM0101101030300200000MUR NL91ABNA0417164300 NO9386011117947 PK36SCBL0000001123456702 PL27114020040000300201355387 PS92PALS000000000400123456702 PT50000201231234567890154 RO49AAAA1B31007593840000 RS35260005601001611379 SA0380000000608010167519 SC18SSCB11010000000000001497USD SE4550000000058398257466 SI56191000000123438 SK3112000000198742637541 SM86U0322509800000000270100 ST68000100010051845310112 SV62CENR00000000000000700025 TL380080012345678910157 TN5914207207100707129648 TR330006100519786457841326 VG96VPVG0000012345678901 PL26105014451000002276470461 PL67114020040000310200082366 QA58DOHB00001234567890ABCDEFG FR7611008000010004126302470 FR1420041010050500013M02606 GB29NWBK60161331926819 IT60X0542811101000000123456 UA213996220000026007233566001 XK051000000000000053 } { set cc [string range $iban 0 1] set len [valtype::iban cclen $cc] set badchar [string map {0 - 9 -} $iban] set short [string range $iban 0 end-1] set long ${iban}45 # Flip two digits to generate a bad number, try check digits # first, then across border of check digits to bban. set check [string range $iban 0 1][string index $iban 3][string index $iban 2][string range $iban 4 end] if {$check eq $iban} { set check [string range $iban 0 2][string index $iban 4][string index $iban 3][string range $iban 5 end] } test valtype-iban-2.0.$n "iban validation failure, bad char, $badchar" -body { valtype::iban validate $badchar } -returnCodes error \ -result {Not an IBAN number, expected country code followed by alphanumerics} test valtype-iban-2.1.$n "iban validation failure, bad length, $short" -body { valtype::iban validate $short } -returnCodes error \ -result "Not an IBAN number, incorrect length, expected $len characters" test valtype-iban-2.2.$n "iban validation failure, bad length, $long" -body { valtype::iban validate $long } -returnCodes error \ -result "Not an IBAN number, incorrect length, expected $len characters" test valtype-iban-3.$n "iban validation failure, bad check, $iban, $check" -body { valtype::iban validate $check } -returnCodes error \ -result {Not an IBAN number, the check digit is incorrect} test valtype-iban-4.$n "iban validation, $iban" -body { valtype::iban validate $iban } -result $iban incr n } set n 0 foreach iban { PL78102030170000270200618694 } { test valtype-iban-5.$n "iban validation failure, bad check, $iban" -body { valtype::iban validate $iban } -returnCodes error \ -result {Not an IBAN number, the check digit is incorrect} incr n } # ------------------------------------------------------------------------- testsuiteCleanup return # Local Variables: # mode: tcl # indent-tabs-mode: nil # End: