summaryrefslogtreecommitdiffstats
path: root/tcllib/modules/crc/sum.test
diff options
context:
space:
mode:
authorWilliam Joye <wjoye@cfa.harvard.edu>2016-10-27 19:39:39 (GMT)
committerWilliam Joye <wjoye@cfa.harvard.edu>2016-10-27 19:39:39 (GMT)
commitea28451286d3ea4a772fa174483f9a7a66bb1ab3 (patch)
tree6ee9d8a7848333a7ceeee3b13d492e40225f8b86 /tcllib/modules/crc/sum.test
parentb5ca09bae0d6a1edce939eea03594dd56383f2c8 (diff)
parent7c621da28f07e449ad90c387344f07a453927569 (diff)
downloadblt-ea28451286d3ea4a772fa174483f9a7a66bb1ab3.zip
blt-ea28451286d3ea4a772fa174483f9a7a66bb1ab3.tar.gz
blt-ea28451286d3ea4a772fa174483f9a7a66bb1ab3.tar.bz2
Merge commit '7c621da28f07e449ad90c387344f07a453927569' as 'tcllib'
Diffstat (limited to 'tcllib/modules/crc/sum.test')
-rw-r--r--tcllib/modules/crc/sum.test196
1 files changed, 196 insertions, 0 deletions
diff --git a/tcllib/modules/crc/sum.test b/tcllib/modules/crc/sum.test
new file mode 100644
index 0000000..88f938d
--- /dev/null
+++ b/tcllib/modules/crc/sum.test
@@ -0,0 +1,196 @@
+# sum.test - Copyright (C) 2002 Pat Thoyts <patthoyts@users.sourceforge.net>
+#
+# 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.8 2006/10/09 21:41:40 andreas_kupries Exp $
+
+# -------------------------------------------------------------------------
+
+source [file join \
+ [file dirname [file dirname [file join [pwd] [info script]]]] \
+ devtools testutilities.tcl]
+
+testsNeedTcl 8.4
+testsNeedTcltest 2.0
+
+testing {
+ useLocal sum.tcl sum ::crc
+}
+
+# -------------------------------------------------------------------------
+
+if {[info commands ::crc::SumBsd_c] == {}} {
+ puts "> pure tcl"
+} else {
+ puts "> critcl based"
+}
+
+# -------------------------------------------------------------------------
+
+test sum-1.0 {sum with no parameters} -body {
+ ::crc::sum
+} -returnCodes error -result {wrong # args: should be "sum ?-bsd|-sysv? ?-format string? ?-chunksize size? ?-timeout ms? -file name | -channel chan | data"}
+
+test sum-1.1 {sum with incorrect parameters} -body {
+ ::crc::sum -zxcv
+} -returnCodes error -result {bad option -zxcv: must be one of -bsd, -channel, -chunksize, -filename, -format, -sysv, -timeout}
+
+# -------------------------------------------------------------------------
+
+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} -body {
+ ::crc::sum -bsd $msg
+ } -result $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} -body {
+ ::crc::sum -sysv $msg
+ } -result $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)} -body {
+ 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
+ }
+} -result ok
+
+test sum-4.1 {sum file option (SysV)} -body {
+ 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
+ }
+} -result ok
+
+test sum-4.2 {sum -channel option (BSD)} -body {
+ 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
+ }
+} -result ok
+
+test sum-4.3 {sum -channel option (SysV)} -body {
+ 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
+ }
+} -result ok
+
+# -------------------------------------------------------------------------
+
+test sum-5.0 {sum format option (BSD)} -body {
+ ::crc::sum -bsd -format 0x%X [string repeat x 200]
+} -result 0xF8EE
+
+test sum-5.1 {sum format option (SysV)} -body {
+ ::crc::sum -sysv -format 0x%X [string repeat x 200]
+} -result 0x5DC0
+
+# -------------------------------------------------------------------------
+# ticket a80e60deb1 vectors - data over 1 KB length.
+
+foreach {n expected base count} {
+ 0 58625 a 1280
+ 1 11010 fx 640
+ 2 62980 \xfe 1280
+} {
+ test sum-6.$n {sum (sysv) over 1 K} -body {
+ crc::sum -sysv -- [string repeat $base $count]
+ } -result $expected
+}
+
+# -------------------------------------------------------------------------
+# ticket 0a3d5dfe52
+
+foreach {n expected base count suffix} {
+ 0 65535 X 1489 &
+} {
+ test sum-7.$n "sum (sysv) ${base}*${count}" -body {
+ crc::sum -sysv -- [string repeat $base $count]$suffix
+ } -result $expected
+}
+
+# -------------------------------------------------------------------------
+
+catch {unset ::crc::testfile}
+testsuiteCleanup
+
+# Local Variables:
+# mode: tcl
+# indent-tabs-mode: nil
+# End:
+