summaryrefslogtreecommitdiffstats
path: root/tcllib/modules/rc4/rc4.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/rc4/rc4.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/rc4/rc4.test')
-rw-r--r--tcllib/modules/rc4/rc4.test273
1 files changed, 273 insertions, 0 deletions
diff --git a/tcllib/modules/rc4/rc4.test b/tcllib/modules/rc4/rc4.test
new file mode 100644
index 0000000..9aabd64
--- /dev/null
+++ b/tcllib/modules/rc4/rc4.test
@@ -0,0 +1,273 @@
+# rc4.test - Copyright (C) 2004 Pat Thoyts <patthoyts@users.sourceforge.net>
+#
+# $Id: rc4.test,v 1.12 2006/10/09 21:41:41 andreas_kupries Exp $
+
+# -------------------------------------------------------------------------
+
+source [file join \
+ [file dirname [file dirname [file join [pwd] [info script]]]] \
+ devtools testutilities.tcl]
+
+testsNeedTcl 8.2
+testsNeedTcltest 1.0
+
+testing {
+ useLocal rc4.tcl rc4
+}
+
+# -------------------------------------------------------------------------
+
+if {[llength [info commands ::rc4::rc4c]]} {
+ puts "> critcl"
+}
+
+# -------------------------------------------------------------------------
+# Now the package specific tests....
+# -------------------------------------------------------------------------
+
+test rc4-1.0 {rc4 basic command options} {
+ list [catch {::rc4::rc4} msg] $msg
+} {1 {wrong # args: should be "rc4 ?-hex? -key key -in channel | string"}}
+
+test rc4-1.1 {rc4 basic command options} {
+ list [catch {::rc4::rc4 -key secret} msg] $msg
+} {1 {wrong # args: should be "rc4 ?-hex? -key key -in channel | string"}}
+
+# -------------------------------------------------------------------------
+
+# Test vectors
+set tests {
+ "\x01\x23\x45\x67\x89\xab\xcd\xef"
+ "\x01\x23\x45\x67\x89\xab\xcd\xef"
+ "\x75\xb7\x87\x80\x99\xe0\xc5\x96"
+
+ "\x01\x23\x45\x67\x89\xab\xcd\xef"
+ "\x00\x00\x00\x00\x00\x00\x00\x00"
+ "\x74\x94\xc2\xe7\x10\x4b\x08\x79"
+
+ "\x00\x00\x00\x00\x00\x00\x00\x00"
+ "\x00\x00\x00\x00\x00\x00\x00\x00"
+ "\xde\x18\x89\x41\xa3\x37\x5d\x3a"
+
+ "\xef\x01\x23\x45"
+ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+ "\xd6\xa1\x41\xa7\xec\x3c\x38\xdf\xbd\x61"
+}
+
+lappend tests \
+ "\x01\x23\x45\x67\x89\xab\xcd\xef" \
+ [string repeat \x01 512] \
+ [binary format H* \
+ [join \
+ "75 95 c3 e6 11 4a 09 78 0c 4a d4 52 33 8e 1f fd 9a 1b e9 49\
+ 8f 81 3d 76 53 34 49 b6 77 8d ca d8 c7 8a 8d 2b a9 ac 66 08\
+ 5d 0e 53 d5 9c 26 c2 d1 c4 90 c1 eb be 0c e6 6d 1b 6b 1b 13\
+ b6 b9 19 b8 47 c2 5a 91 44 7a 95 e7 5e 4e f1 67 79 cd e8 bf\
+ 0a 95 85 0e 32 af 96 89 44 4f d3 77 10 8f 98 fd cb d4 e7 26\
+ 56 75 00 99 0b cc 7e 0c a3 c4 aa a3 04 a3 87 d2 0f 3b 8f bb\
+ cd 42 a1 bd 31 1d 7a 43 03 dd a5 ab 07 88 96 ae 80 c1 8b 0a\
+ f6 6d ff 31 96 16 eb 78 4e 49 5a d2 ce 90 d7 f7 72 a8 17 47\
+ b6 5f 62 09 3b 1e 0d b9 e5 ba 53 2f af ec 47 50 83 23 e6 71\
+ 32 7d f9 44 44 32 cb 73 67 ce c8 2f 5d 44 c0 d0 0b 67 d6 50\
+ a0 75 cd 4b 70 de dd 77 eb 9b 10 23 1b 6b 5b 74 13 47 39 6d\
+ 62 89 74 21 d4 3d f9 b4 2e 44 6e 35 8e 9c 11 a9 b2 18 4e cb\
+ ef 0c d8 e7 a8 77 ef 96 8f 13 90 ec 9b 3d 35 a5 58 5c b0 09\
+ 29 0e 2f cd e7 b5 ec 66 d9 08 4b e4 40 55 a6 19 d9 dd 7f c3\
+ 16 6f 94 87 f7 cb 27 29 12 42 64 45 99 85 14 c1 5d 53 a1 8c\
+ 86 4c e3 a2 b7 55 57 93 98 81 26 52 0e ac f2 e3 06 6e 23 0c\
+ 91 be e4 dd 53 04 f5 fd 04 05 b3 5b d9 9c 73 13 5d 3d 9b c3\
+ 35 ee 04 9e f6 9b 38 67 bf 2d 7b d1 ea a5 95 d8 bf c0 06 6f\
+ f8 d3 15 09 eb 0c 6c aa 00 6c 80 7a 62 3e f8 4c 3d 33 c1 95\
+ d2 3e e3 20 c4 0d e0 55 81 57 c8 22 d4 b8 c5 69 d8 49 ae d5\
+ 9d 4e 0f d7 f3 79 58 6b 4b 7f f6 84 ed 6a 18 9f 74 86 d4 9b\
+ 9c 4b ad 9b a2 4b 96 ab f9 24 37 2c 8a 8f ff b1 0d 55 35 49\
+ 00 a7 7a 3d b5 f2 05 e1 b9 9f cd 86 60 86 3a 15 9a d4 ab e4\
+ 0f a4 89 34 16 3d dd e5 42 a6 58 55 40 fd 68 3c bf d8 c0 0f\
+ 12 12 9a 28 4d ea cc 4c de fe 58 be 71 37 54 1c 04 71 26 c8\
+ d4 9e 27 55 ab 18 1a b7 e9 40 b0 c0" {}]]
+
+if {[llength [info commands ::rc4::rc4c]] != 0} {
+ set n 0
+ foreach {key input output} $tests {
+ test rc4-critcl-2.$n {rc4 test vectors (critcl based)} {
+ list [catch {::rc4::rc4 -key $key $input} msg] $msg
+ } [list 0 $output]
+ incr n
+ }
+}
+
+puts "> pure Tcl - array based"
+::rc4::SelectImplementation array
+set n 0
+foreach {key input output} $tests {
+ test rc4-array-2.$n {rc4 test vectors (pure tcl array based)} {
+ list [catch {::rc4::rc4 -key $key $input} msg] $msg
+ } [list 0 $output]
+ incr n
+}
+
+puts "> pure Tcl - list based"
+::rc4::SelectImplementation list
+set n 0
+foreach {key input output} $tests {
+ test rc4-list-2.$n {rc4 test vectors (pure tcl list based)} {
+ list [catch {::rc4::rc4 -key $key $input} msg] $msg
+ } [list 0 $output]
+ incr n
+}
+
+test rc4-3.0 {rc4 check hyphen handling} {
+ list [catch {rc4::rc4 -hex -key - \0} msg] $msg
+} {0 9d}
+
+test rc4-3.1 {rc4 check hyphen handling} {
+ list [catch {rc4::rc4 -hex -key -- \0} msg] $msg
+} {0 9d}
+
+test rc4-3.2 {rc4 check hyphen handling} {
+ list [catch {rc4::rc4 -hex -key - -} msg] $msg
+} {0 b0}
+
+test rc4-3.3 {rc4 check hyphen handling} {
+ list [catch {rc4::rc4 -hex -key - --} msg] $msg
+} {0 b046}
+
+test rc4-3.4 {rc4 check hyphen handling} {
+ list [catch {rc4::rc4 -hex -key - -- -} msg] $msg
+} {0 b0}
+
+test rc4-3.5 {rc4 check hyphen handling} {
+ list [catch {rc4::rc4 -hex -key - -- --} msg] $msg
+} {0 b046}
+
+test rc4-4.0 {check file reading} {
+ list [catch {
+ set f [open [set path [makeFile {} rc4test.data]] w]
+ fconfigure $f -translation lf -eofchar {} -encoding binary
+ puts -nonewline $f "\0\1\2"
+ close $f
+ set res [rc4::rc4 -hex -key 01234567 -infile $path]
+ removeFile rc4test.data
+ set res
+ } msg] $msg
+} {0 91d4f1}
+
+test rc4-4.1 {check channel reading} {
+ list [catch {
+ set f [open [set path [makeFile {} rc4test.data]] w]
+ fconfigure $f -translation lf -eofchar {} -encoding binary
+ puts -nonewline $f "\0\1\2"
+ close $f
+
+ set f [open $path r]
+ fconfigure $f -translation lf -eofchar {} -encoding binary
+ set r [rc4::rc4 -hex -key 01234567 -in $f]
+ close $f
+ removeFile rc4test.data
+ set r
+ } msg] $msg
+} {0 91d4f1}
+
+test rc4-4.2 {check channel output} {
+ list [catch {
+ set f [open [makeFile {} rc4test.data] w+]
+ fconfigure $f -translation lf -eofchar {} -encoding binary
+ set r [rc4::rc4 -hex -key 01234567 -out $f "abcdef"]
+ seek $f 0
+ set s [rc4::Hex [read $f]]
+ close $f
+ removeFile rc4test.data
+ list $r $s
+ } msg] $msg
+} {0 {{} f0b7907b2341}}
+
+test rc4-4.3 {check channel input and output} {
+ list [catch {
+ set f [open [makeFile {} rc4test.data] w+]
+ fconfigure $f -translation lf -eofchar {} -encoding binary
+ puts -nonewline $f "abcdef"
+ seek $f 0
+ set g [open [makeFile {} rc4test2.data] w+]
+ fconfigure $g -translation lf -eofchar {} -encoding binary
+ set r [rc4::rc4 -hex -key 01234567 -in $f -out $g]
+ close $f
+ seek $g 0
+ set s [rc4::Hex [read $g]]
+ close $g
+ removeFile rc4test.data
+ removeFile rc4test2.data
+ list $r $s
+ } msg] $msg
+} {0 {{} f0b7907b2341}}
+
+proc ::rc4::TestCommandProc {junk data} {
+ if {[string compare $junk "JuNk"] != 0} {
+ set ::rc4::_test magicfailure
+ } else {
+ set ::rc4::_test [Hex $data]
+ }
+}
+
+test rc4-5.0 {check -command option} {
+ set ::rc4::_test unset
+ list [catch {
+ set r [rc4::rc4 -key 01234567 \
+ -command [list ::rc4::TestCommandProc JuNk] "abcdef"]
+ list $r $::rc4::_test
+ } msg] $msg
+} {0 {{} f0b7907b2341}}
+
+test rc4-5.1 {check -command option (-hex should be ignored)} {
+ set ::rc4::_test unset
+ list [catch {
+ set r [rc4::rc4 -hex -key 01234567 \
+ -command [list ::rc4::TestCommandProc JuNk] "abcdef"]
+ list $r $::rc4::_test
+ } msg] $msg
+} {0 {{} f0b7907b2341}}
+
+test rc4-5.2 {check -command option with channel input} {
+ set ::rc4::_test unset
+ list [catch {
+ set f [open [makeFile {} rc4test.data] w+]
+ fconfigure $f -translation lf -eofchar {} -encoding binary
+ puts -nonewline $f "abcdef"
+ seek $f 0
+ set id [after 1000 {set ::rc4::_test timeout}]
+ set r [rc4::rc4 -key 01234567 -in $f \
+ -command [list ::rc4::TestCommandProc JuNk]]
+ vwait ::rc4::_test
+ after cancel $id
+ close $f
+ removeFile rc4test.data
+ list $r $::rc4::_test
+ } msg] $msg
+} {0 {{} f0b7907b2341}}
+
+test rc4-5.3 {check -command option with file input} {
+ set ::rc4::_test unset
+ list [catch {
+ set f [open [set path [makeFile {} rc4test.data]] w]
+ fconfigure $f -translation lf -eofchar {} -encoding binary
+ puts -nonewline $f "abcdef"
+ close $f
+ set id [after 1000 {set ::rc4::_test timeout}]
+ set r [rc4::rc4 -key 01234567 -infile $path \
+ -command [list ::rc4::TestCommandProc JuNk]]
+ vwait ::rc4::_test
+ after cancel $id
+ removeFile rc4test.data
+ list $r $::rc4::_test
+ } msg] $msg
+} {0 {{} f0b7907b2341}}
+
+# -------------------------------------------------------------------------
+
+catch {unset ::rc4::_test}
+rename ::rc4::TestCommandProc {}
+testsuiteCleanup
+
+# Local variables:
+# mode: tcl
+# indent-tabs-mode: nil
+# End: