# -*- tcl -*- tcl.tk//DSL tcltest//EN//2.0 # # ## ### ##### ######## ############# ##################### ## Testing the cmdr::validate package (ISO year number). kt check Tcl 8.5 kt check tcltest 2 kt require support debug kt require support debug::caller kt local support cmdr::validate::common kt local testing cmdr::validate::year # # ## ### ##### ######## ############# ##################### ## Basic API. set vtype cmdr::validate::year set vtdef [clock format [clock seconds] -format %Y] ;# current year. [**] kt source vtype.tcl # (Ad **): Race condition possible in the tests, here. If the tests # are run across a tear border (Dec 31 into Jan 1 Midnight) bogus # failure will appear in the standard API tests. # # ## ### ##### ######## ############# ##################### ## Specific behaviour - validation ## Print table of short years, to determine where the border ## current/previous lies. # for {set i 0} {$i <99} {incr i} { puts "SHORT $i == [$vtype validate P $i]" } # Border 37/38 test vt-${vtype}-validate-2.0 "$vtype validate, fail" -body { $vtype validate P bogus } -returnCodes error -result {Expected a year for T "P", got "bogus"} test vt-${vtype}-validate-2.1 "$vtype validate, fail, strict" -body { $vtype validate P {} } -returnCodes error -result {Expected a year for T "P", got ""} test vt-${vtype}-validate-2.2 "$vtype validate, fail, octal" -body { $vtype validate P 010 } -returnCodes error -result {Expected a year for T "P", got "010"} test vt-${vtype}-validate-2.3 "$vtype validate, fail, hex" -body { $vtype validate P 0xff } -returnCodes error -result {Expected a year for T "P", got "0xff"} test vt-${vtype}-validate-2.4 "$vtype validate, fail, negative" -body { $vtype validate P -2 } -returnCodes error -result {Expected a year for T "P", got "-2"} test vt-${vtype}-validate-2.5 "$vtype validate, fail, negative" -body { $vtype validate P -1 } -returnCodes error -result {Expected a year for T "P", got "-1"} test vt-${vtype}-validate-2.6 "$vtype validate, fail, neither short nor long year" -body { $vtype validate P 333 } -returnCodes error -result {Expected a year for T "P", got "333"} test vt-${vtype}-validate-2.7 "$vtype validate, fail, neither short nor long year" -body { $vtype validate P 33333 } -returnCodes error -result {Expected a year for T "P", got "33333"} # # ## ### ##### ######## ############# ##################### test vt-${vtype}-validate-2.8 "$vtype validate, ok, zero, short year, current century" -body { $vtype validate P 0 } -result 2000 test vt-${vtype}-validate-2.9 "$vtype validate, ok, positive, short year, current century" -body { $vtype validate P 1 } -result 2001 test vt-${vtype}-validate-2.10 "$vtype validate, ok, positive, short year, current century" -body { $vtype validate P 33 } -result 2033 test vt-${vtype}-validate-2.11 "$vtype validate, ok, positive, short year, previous century" -body { $vtype validate P 37 } -result 2037 test vt-${vtype}-validate-2.12 "$vtype validate, ok, positive, short year, previous century" -body { $vtype validate P 38 } -result 1938 test vt-${vtype}-validate-2.13 "$vtype validate, ok, positive, short year, previous century" -body { $vtype validate P 99 } -result 1999 test vt-${vtype}-validate-2.14 "$vtype validate, ok, positive, long year" -body { $vtype validate P 1923 } -result 1923 # # ## ### ##### ######## ############# ##################### cleanupTests return