# sum.test - Copyright (C) 2002 Pat Thoyts # # Tests for the Tcllib sum command # # ------------------------------------------------------------------------- # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # ------------------------------------------------------------------------- # RCS: @(#) $Id: sum.test,v 1.4 2003/05/13 01:42:11 patthoyts Exp $ # ------------------------------------------------------------------------- # Initialize the test package # if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest namespace import ::tcltest::* } # ------------------------------------------------------------------------- # Ensure we test _this_ local copy and one installed somewhere else. # package forget sum #catch {namespace delete ::csv} if {[catch {source [file join [file dirname [info script]] sum.tcl]} msg]} { puts "skipped [file tail [info script]]: $msg" return } # ------------------------------------------------------------------------- # Setup any constraints # # ------------------------------------------------------------------------- # Now the package specific tests.... # ------------------------------------------------------------------------- if {[info command ::crc::SumBsd_c] == {}} { puts "- sum [package present sum] (pure tcl)" } else { puts "- sum [package present sum] (critcl based)" } # ------------------------------------------------------------------------- test sum-1.0 {sum with no parameters } { list [catch {::crc::sum} result] \ [string match "wrong \# args: *" $result] } {1 1} test sum-1.1 {sum with incorrect parameters } { list [catch {::crc::sum -zxcv} result] \ [string match "bad option -zxcv: *" $result] } {1 1} # ------------------------------------------------------------------------- foreach {n msg expected} { 1 "" "0" 2 "a" "97" 3 "abc" "16556" 4 "cba" "49322" 5 "message digest" "26423" 6 "abcdefghijklmnopqrstuvwxyz" "53553" 7 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" "25587" 8 "12345678901234567890123456789012345678901234567890123456789012345678901234567890" "21845" 9 "\uFFFE\u0000\u0001\u0002" "16418" } { test sum-2.$n {sum using BSD algorithm and unsigned integer} { ::crc::sum -bsd $msg } $expected } # ------------------------------------------------------------------------- foreach {n msg expected} { 1 "" "0" 2 "a" "97" 3 "abc" "294" 4 "cba" "294" 5 "message digest" "1413" 6 "abcdefghijklmnopqrstuvwxyz" "2847" 7 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" "5387" 8 "12345678901234567890123456789012345678901234567890123456789012345678901234567890" "4200" 9 "\uFFFE\u0000\u0001\u0002" "257" } { test sum-3.$n {sum using SysV algorithm and unsigned integer} { ::crc::sum -sysv $msg } $expected } # ------------------------------------------------------------------------- set crc::testfile [info script] proc ::crc::loaddata {filename} { set f [open $filename r] fconfigure $f -translation binary set data [read $f] close $f return $data } test sum-4.0 {sum file option (BSD)} { set r1 [::crc::sum -bsd -file $::crc::testfile] set r2 [::crc::sum -bsd [::crc::loaddata $::crc::testfile]] if {$r1 != $r2} { set r "differing results: $r1 != $r2" } else { set r ok } } {ok} test sum-4.1 {sum file option (SysV)} { set r1 [::crc::sum -sysv -file $::crc::testfile] set r2 [::crc::sum -sysv [::crc::loaddata $crc::testfile]] if {$r1 != $r2} { set r "differing results: $r1 != $r2" } else { set r ok } } {ok} test sum-4.2 {sum -channel option (BSD)} { set r1 [::crc::sum -bsd [::crc::loaddata $::crc::testfile]] set f [open $::crc::testfile r] fconfigure $f -translation binary set r2 [::crc::sum -bsd -channel $f] close $f if {$r1 != $r2} { set r "differing results: $r1 != $r2" } else { set r ok } } {ok} test sum-4.3 {sum -channel option (SysV)} { set r1 [::crc::sum -sysv -file $::crc::testfile] set f [open $::crc::testfile r] fconfigure $f -translation binary set r2 [::crc::sum -sysv -channel $f] close $f if {$r1 != $r2} { set r "differing results: $r1 != $r2" } else { set r ok } } {ok} # ------------------------------------------------------------------------- test sum-5.0 {sum format option (BSD)} { ::crc::sum -bsd -format 0x%X [string repeat x 200] } {0xF8EE} test sum-5.1 {sum format option (SysV)} { ::crc::sum -sysv -format 0x%X [string repeat x 200] } {0x5DC0} # ------------------------------------------------------------------------- catch {unset ::crc::testfile} ::tcltest::cleanupTests # Local Variables: # mode: tcl # indent-tabs-mode: nil # End: