summaryrefslogtreecommitdiffstats
path: root/tcllib/modules/valtype/cc_visa.test
blob: 0c170619e435deedcc967974f1a771d0bacc50cb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# -------------------------------------------------------------------------
# cc_visa.test -*- tcl -*-
# (C) 2011 Andreas Kupries. BSD licensed.
#
# NOTE: All "creditcard" numbers in this file have been created by
# randomly hitting the number pad. They are not real.
# -------------------------------------------------------------------------

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
    useLocal luhn.tcl       valtype::luhn
}
testing {
    useLocal cc_visa.tcl valtype::creditcard::visa
}

# -------------------------------------------------------------------------

test valtype-creditcard-visa-1.0 {creditcard visa validation wrong\#args} -body {
    valtype::creditcard::visa validate
} -returnCodes error \
    -result {wrong # args: should be "valtype::creditcard::visa validate value"}

test valtype-creditcard-visa-1.1 {creditcard visa validation wrong\#args} -body {
    valtype::creditcard::visa validate A B
} -returnCodes error \
    -result {wrong # args: should be "valtype::creditcard::visa validate value"}

# -------------------------------------------------------------------------

test valtype-creditcard-visa-2.0 {creditcard visa validation failure, bad char} -body {
    valtype::creditcard::visa validate 4A34562749104
} -returnCodes error \
    -result {Not a CREDITCARD VISA number, expected only digits}

foreach {n in} {
    1  030640615
    2  978030640615
} {
    test valtype-creditcard-visa-2.1.$n {creditcard visa validation failure, bad length} -body {
    valtype::creditcard::visa validate $in
    } -returnCodes error \
        -result {Not a CREDITCARD VISA number, incorrect length, expected one of 13, or 16 characters}
}

foreach {n in} {
    1  4012345678901
    2  4109876543210
    3  4992739871755
    4  4123456781234
    5  4012345678901234
    6  4432109876543210
    7  4992739871755987
    8  4123456781234567
} {
    test valtype-creditcard-visa-2.2.$n {creditcard visa validation failure, bad check} -body {
	valtype::creditcard::visa validate $in
    } -returnCodes error \
	-result {Not a CREDITCARD VISA number, the check digit is incorrect}
}

foreach {n in} {
    1  9772890458925
    2  8285298475847568
} {
    test valtype-creditcard-visa-2.3.$n {creditcard visa validation failure, bad prefix} -body {
	valtype::creditcard::visa validate $in
    } -returnCodes error \
	-result {Not a CREDITCARD VISA number, incorrect prefix, expected 4}
}


test valtype-creditcard-visa-3.0 {creditcard visa checkdigit wrong\#args} -body {
    valtype::creditcard::visa checkdigit
} -returnCodes error \
    -result {wrong # args: should be "valtype::creditcard::visa checkdigit value"}

test valtype-creditcard-visa-3.1 {creditcard visa checkdigit wrong\#args} -body {
    valtype::creditcard::visa checkdigit A B
} -returnCodes error \
    -result {wrong # args: should be "valtype::creditcard::visa checkdigit value"}

# -------------------------------------------------------------------------

test valtype-creditcard-visa-5.0 {creditcard visa checkdigit calculation failure, bad char} -body {
    valtype::creditcard::visa checkdigit 4A0123456789
} -returnCodes error \
    -result {Not a CREDITCARD VISA number, expected only digits}

test valtype-creditcad-visa-5.1 {creditcard visa checkdigit calculation failure, bad length} -body {
    valtype::creditcard::visa checkdigit 401234
} -returnCodes error \
    -result {Not a CREDITCARD VISA number without checkdigit, incorrect length, expected one of 12, or 15 characters}

test valtype-creditcad-visa-5.2 {creditcard visa checkdigit calculation failure, bad length} -body {
    valtype::creditcard::visa checkdigit 012345678901234
} -returnCodes error \
    -result {Not a CREDITCARD VISA number without checkdigit, incorrect prefix, expected 4}

foreach {n in check} {
    1  401234567890 9
    2  410987654321 1
    3  499273987175 8
    4  412345678123 2
} {
    test valtype-creditcard-visa-4.$n {creditcard visa validation} -body {
	valtype::creditcard::visa validate $in$check
    } -result $in$check

    test valtype-creditcard-visa-6.$n {creditcard visa checkdigit} -body {
	valtype::creditcard::visa checkdigit $in
    } -result $check
}

# -------------------------------------------------------------------------
testsuiteCleanup
return

# Local Variables:
#  mode: tcl
#  indent-tabs-mode: nil
# End: