Tcl Library Source Code

Hex Artifact Content
Login

Artifact c910946c3505e3a50bd516899595d51b30d7eaa1:


0000: 23 20 2d 2a 2d 20 74 63 6c 20 2d 2a 2d 0a 23 20  # -*- tcl -*-.# 
0010: 6d 64 35 2e 74 65 73 74 3a 20 20 74 65 73 74 73  md5.test:  tests
0020: 20 66 6f 72 20 74 68 65 20 6d 64 35 20 63 6f 6d   for the md5 com
0030: 6d 61 6e 64 73 0a 23 0a 23 20 54 68 69 73 20 66  mands.#.# This f
0040: 69 6c 65 20 63 6f 6e 74 61 69 6e 73 20 61 20 63  ile contains a c
0050: 6f 6c 6c 65 63 74 69 6f 6e 20 6f 66 20 74 65 73  ollection of tes
0060: 74 73 20 66 6f 72 20 6f 6e 65 20 6f 72 20 6d 6f  ts for one or mo
0070: 72 65 20 6f 66 20 74 68 65 20 54 63 6c 0a 23 20  re of the Tcl.# 
0080: 62 75 69 6c 74 2d 69 6e 20 63 6f 6d 6d 61 6e 64  built-in command
0090: 73 2e 20 20 53 6f 75 72 63 69 6e 67 20 74 68 69  s.  Sourcing thi
00a0: 73 20 66 69 6c 65 20 69 6e 74 6f 20 54 63 6c 20  s file into Tcl 
00b0: 72 75 6e 73 20 74 68 65 20 74 65 73 74 73 20 61  runs the tests a
00c0: 6e 64 0a 23 20 67 65 6e 65 72 61 74 65 73 20 6f  nd.# generates o
00d0: 75 74 70 75 74 20 66 6f 72 20 65 72 72 6f 72 73  utput for errors
00e0: 2e 20 20 4e 6f 20 6f 75 74 70 75 74 20 6d 65 61  .  No output mea
00f0: 6e 73 20 6e 6f 20 65 72 72 6f 72 73 20 77 65 72  ns no errors wer
0100: 65 20 66 6f 75 6e 64 2e 0a 23 0a 23 20 43 6f 70  e found..#.# Cop
0110: 79 72 69 67 68 74 20 28 63 29 20 32 30 30 31 20  yright (c) 2001 
0120: 62 79 20 41 63 74 69 76 65 53 74 61 74 65 20 54  by ActiveState T
0130: 6f 6f 6c 20 43 6f 72 70 2e 0a 23 20 41 6c 6c 20  ool Corp..# All 
0140: 72 69 67 68 74 73 20 72 65 73 65 72 76 65 64 2e  rights reserved.
0150: 0a 23 0a 23 20 52 43 53 3a 20 40 28 23 29 20 24  .#.# RCS: @(#) $
0160: 49 64 3a 20 6d 64 35 2e 74 65 73 74 2c 76 20 31  Id: md5.test,v 1
0170: 2e 31 31 20 32 30 30 36 2f 31 30 2f 30 39 20 32  .11 2006/10/09 2
0180: 31 3a 34 31 3a 34 31 20 61 6e 64 72 65 61 73 5f  1:41:41 andreas_
0190: 6b 75 70 72 69 65 73 20 45 78 70 20 24 0a 0a 23  kupries Exp $..#
01a0: 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ---------------
01b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
01c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
01d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
01e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 73 6f 75 72  ----------..sour
01f0: 63 65 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 5c 0a  ce [file join \.
0200: 09 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65 20 5b  .[file dirname [
0210: 66 69 6c 65 20 64 69 72 6e 61 6d 65 20 5b 66 69  file dirname [fi
0220: 6c 65 20 6a 6f 69 6e 20 5b 70 77 64 5d 20 5b 69  le join [pwd] [i
0230: 6e 66 6f 20 73 63 72 69 70 74 5d 5d 5d 5d 20 5c  nfo script]]]] \
0240: 0a 09 64 65 76 74 6f 6f 6c 73 20 74 65 73 74 75  ..devtools testu
0250: 74 69 6c 69 74 69 65 73 2e 74 63 6c 5d 0a 0a 74  tilities.tcl]..t
0260: 65 73 74 73 4e 65 65 64 54 63 6c 20 20 20 20 20  estsNeedTcl     
0270: 38 2e 32 0a 74 65 73 74 73 4e 65 65 64 54 63 6c  8.2.testsNeedTcl
0280: 74 65 73 74 20 31 2e 30 0a 0a 74 65 73 74 69 6e  test 1.0..testin
0290: 67 20 7b 0a 20 20 20 20 75 73 65 4c 6f 63 61 6c  g {.    useLocal
02a0: 20 6d 64 35 2e 74 63 6c 20 6d 64 35 0a 7d 0a 0a   md5.tcl md5.}..
02b0: 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  # --------------
02c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
02d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
02e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
02f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 69 66 20  -----------..if 
0300: 7b 5b 63 61 74 63 68 20 7b 70 61 63 6b 61 67 65  {[catch {package
0310: 20 70 72 65 73 65 6e 74 20 54 72 66 7d 5d 20 7c   present Trf}] |
0320: 7c 20 5b 63 61 74 63 68 20 7b 3a 3a 6d 64 35 20  | [catch {::md5 
0330: 2d 2d 20 74 65 73 74 7d 5d 7d 20 7b 0a 20 20 20  -- test}]} {.   
0340: 20 70 75 74 73 20 22 3e 20 70 75 72 65 20 54 63   puts "> pure Tc
0350: 6c 22 0a 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20  l".} else {.    
0360: 70 75 74 73 20 22 3e 20 54 72 66 20 62 61 73 65  puts "> Trf base
0370: 64 22 0a 7d 0a 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d  d".}..# --------
0380: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0390: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
03a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
03b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
03c0: 2d 0a 0a 74 65 73 74 20 6d 64 35 2d 31 2e 30 20  -..test md5-1.0 
03d0: 7b 6d 64 35 7d 20 7b 0a 20 20 20 20 63 61 74 63  {md5} {.    catc
03e0: 68 20 7b 3a 3a 6d 64 35 3a 3a 6d 64 35 7d 20 72  h {::md5::md5} r
03f0: 65 73 75 6c 74 0a 20 20 20 20 73 65 74 20 72 65  esult.    set re
0400: 73 75 6c 74 0a 7d 20 5b 74 63 6c 74 65 73 74 3a  sult.} [tcltest:
0410: 3a 77 72 6f 6e 67 4e 75 6d 41 72 67 73 20 22 3a  :wrongNumArgs ":
0420: 3a 6d 64 35 3a 3a 6d 64 35 22 20 22 6d 73 67 22  :md5::md5" "msg"
0430: 20 30 5d 0a 0a 74 65 73 74 20 6d 64 35 2d 31 2e   0]..test md5-1.
0440: 31 20 7b 6d 64 35 7d 20 7b 0a 20 20 20 20 63 61  1 {md5} {.    ca
0450: 74 63 68 20 7b 3a 3a 6d 64 35 3a 3a 68 6d 61 63  tch {::md5::hmac
0460: 7d 20 72 65 73 75 6c 74 0a 20 20 20 20 73 65 74  } result.    set
0470: 20 72 65 73 75 6c 74 0a 7d 20 5b 74 63 6c 74 65   result.} [tclte
0480: 73 74 3a 3a 77 72 6f 6e 67 4e 75 6d 41 72 67 73  st::wrongNumArgs
0490: 20 22 3a 3a 6d 64 35 3a 3a 68 6d 61 63 22 20 22   "::md5::hmac" "
04a0: 6b 65 79 20 74 65 78 74 22 20 30 5d 0a 0a 74 65  key text" 0]..te
04b0: 73 74 20 6d 64 35 2d 31 2e 32 20 7b 6d 64 35 7d  st md5-1.2 {md5}
04c0: 20 7b 0a 20 20 20 20 63 61 74 63 68 20 7b 3a 3a   {.    catch {::
04d0: 6d 64 35 3a 3a 68 6d 61 63 20 6b 65 79 7d 20 72  md5::hmac key} r
04e0: 65 73 75 6c 74 0a 20 20 20 20 73 65 74 20 72 65  esult.    set re
04f0: 73 75 6c 74 0a 7d 20 5b 74 63 6c 74 65 73 74 3a  sult.} [tcltest:
0500: 3a 77 72 6f 6e 67 4e 75 6d 41 72 67 73 20 22 3a  :wrongNumArgs ":
0510: 3a 6d 64 35 3a 3a 68 6d 61 63 22 20 22 6b 65 79  :md5::hmac" "key
0520: 20 74 65 78 74 22 20 31 5d 0a 0a 0a 66 6f 72 65   text" 1]...fore
0530: 61 63 68 20 7b 6e 20 6d 73 67 20 65 78 70 65 63  ach {n msg expec
0540: 74 65 64 7d 20 7b 0a 20 20 20 20 31 20 20 20 20  ted} {.    1    
0550: 22 22 0a 20 20 20 20 22 64 34 31 64 38 63 64 39  "".    "d41d8cd9
0560: 38 66 30 30 62 32 30 34 65 39 38 30 30 39 39 38  8f00b204e9800998
0570: 65 63 66 38 34 32 37 65 22 0a 20 20 20 20 32 20  ecf8427e".    2 
0580: 20 20 20 22 61 22 0a 20 20 20 20 22 30 63 63 31     "a".    "0cc1
0590: 37 35 62 39 63 30 66 31 62 36 61 38 33 31 63 33  75b9c0f1b6a831c3
05a0: 39 39 65 32 36 39 37 37 32 36 36 31 22 0a 20 20  99e269772661".  
05b0: 20 20 33 20 20 20 20 22 61 62 63 22 0a 20 20 20    3    "abc".   
05c0: 20 22 39 30 30 31 35 30 39 38 33 63 64 32 34 66   "900150983cd24f
05d0: 62 30 64 36 39 36 33 66 37 64 32 38 65 31 37 66  b0d6963f7d28e17f
05e0: 37 32 22 0a 20 20 20 20 34 20 20 20 20 22 6d 65  72".    4    "me
05f0: 73 73 61 67 65 20 64 69 67 65 73 74 22 0a 20 20  ssage digest".  
0600: 20 20 22 66 39 36 62 36 39 37 64 37 63 62 37 39    "f96b697d7cb79
0610: 33 38 64 35 32 35 61 32 66 33 31 61 61 66 31 36  38d525a2f31aaf16
0620: 31 64 30 22 0a 20 20 20 20 35 20 20 20 20 22 61  1d0".    5    "a
0630: 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71  bcdefghijklmnopq
0640: 72 73 74 75 76 77 78 79 7a 22 0a 20 20 20 20 22  rstuvwxyz".    "
0650: 63 33 66 63 64 33 64 37 36 31 39 32 65 34 30 30  c3fcd3d76192e400
0660: 37 64 66 62 34 39 36 63 63 61 36 37 65 31 33 62  7dfb496cca67e13b
0670: 22 0a 20 20 20 20 36 20 20 20 20 22 41 42 43 44  ".    6    "ABCD
0680: 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54  EFGHIJKLMNOPQRST
0690: 55 56 57 58 59 5a 61 62 63 64 65 66 67 68 69 6a  UVWXYZabcdefghij
06a0: 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 7a  klmnopqrstuvwxyz
06b0: 30 31 32 33 34 35 36 37 38 39 22 0a 20 20 20 20  0123456789".    
06c0: 22 64 31 37 34 61 62 39 38 64 32 37 37 64 39 66  "d174ab98d277d9f
06d0: 35 61 35 36 31 31 63 32 63 39 66 34 31 39 64 39  5a5611c2c9f419d9
06e0: 66 22 0a 20 20 20 20 37 20 20 20 20 22 31 32 33  f".    7    "123
06f0: 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39  4567890123456789
0700: 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35  0123456789012345
0710: 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31  6789012345678901
0720: 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37  2345678901234567
0730: 38 39 30 31 32 33 34 35 36 37 38 39 30 22 0a 20  8901234567890". 
0740: 20 20 20 22 35 37 65 64 66 34 61 32 32 62 65 33     "57edf4a22be3
0750: 63 39 35 35 61 63 34 39 64 61 32 65 32 31 30 37  c955ac49da2e2107
0760: 62 36 37 61 22 0a 7d 20 7b 0a 20 20 20 20 74 65  b67a".} {.    te
0770: 73 74 20 6d 64 35 2d 32 2e 24 6e 20 7b 6d 64 35  st md5-2.$n {md5
0780: 7d 20 7b 0a 09 3a 3a 6d 64 35 3a 3a 6d 64 35 20  } {..::md5::md5 
0790: 24 6d 73 67 0a 20 20 20 20 7d 20 24 65 78 70 65  $msg.    } $expe
07a0: 63 74 65 64 20 3b 20 23 20 7b 7d 0a 7d 0a 0a 66  cted ; # {}.}..f
07b0: 6f 72 65 61 63 68 20 7b 6e 20 6b 65 79 20 74 65  oreach {n key te
07c0: 78 74 20 65 78 70 65 63 74 65 64 7d 20 7b 0a 20  xt expected} {. 
07d0: 20 20 20 31 20 22 22 20 20 20 20 20 22 22 20 20     1 ""     ""  
07e0: 20 20 20 20 22 37 34 65 36 66 37 32 39 38 61 39      "74e6f7298a9
07f0: 63 32 64 31 36 38 39 33 35 66 35 38 63 30 30 31  c2d168935f58c001
0800: 62 61 64 38 38 22 0a 20 20 20 20 32 20 22 66 6f  bad88".    2 "fo
0810: 6f 22 20 20 22 68 65 6c 6c 6f 22 20 22 65 66 32  o"  "hello" "ef2
0820: 61 63 38 39 30 31 35 33 30 64 62 33 30 61 61 35  ac8901530db30aa5
0830: 36 39 32 39 61 64 66 65 35 65 31 33 62 22 0a 20  6929adfe5e13b". 
0840: 20 20 20 33 20 22 62 61 72 22 20 20 22 77 6f 72     3 "bar"  "wor
0850: 6c 64 22 20 22 64 66 63 30 35 35 39 34 62 30 31  ld" "dfc05594b01
0860: 39 65 64 35 31 35 33 35 39 32 32 61 31 32 39 35  9ed51535922a1295
0870: 34 34 36 65 38 22 0a 20 20 20 20 34 20 22 6b 65  446e8".    4 "ke
0880: 79 22 20 20 22 74 65 78 74 22 20 20 22 64 30 63  y"  "text"  "d0c
0890: 61 36 31 37 37 63 36 31 63 39 37 35 66 64 32 66  a6177c61c975fd2f
08a0: 38 63 30 37 64 38 63 36 35 32 38 63 36 22 0a 20  8c07d8c6528c6". 
08b0: 20 20 20 35 20 22 6d 64 35 22 20 20 22 68 6d 61     5 "md5"  "hma
08c0: 63 22 20 20 22 64 31 38 39 66 33 36 32 64 61 66  c"  "d189f362daf
08d0: 38 36 61 35 63 38 65 31 34 62 61 34 61 62 61 39  86a5c8e14ba4aba9
08e0: 31 62 32 36 30 22 0a 20 20 20 20 36 20 22 68 6d  1b260".    6 "hm
08f0: 61 63 22 20 22 6d 64 35 22 20 20 20 22 34 38 30  ac" "md5"   "480
0900: 33 34 33 63 66 30 66 32 64 35 39 33 31 65 63 34  343cf0f2d5931ec4
0910: 39 32 33 65 38 31 30 35 39 66 62 38 34 22 0a 20  923e81059fb84". 
0920: 20 20 20 37 20 22 6d 64 35 22 20 20 22 6d 64 35     7 "md5"  "md5
0930: 22 20 20 20 22 39 32 63 35 66 62 39 38 36 65 33  "   "92c5fb986e3
0940: 34 35 66 32 31 66 31 38 31 30 34 37 61 62 39 33  45f21f181047ab93
0950: 39 65 63 37 37 22 0a 20 20 20 20 38 20 22 68 6d  9ec77".    8 "hm
0960: 61 63 22 20 22 68 6d 61 63 22 20 20 22 30 38 61  ac" "hmac"  "08a
0970: 62 62 65 35 38 61 35 35 32 31 39 37 38 39 65 33  bbe58a55219789e3
0980: 65 65 64 65 31 35 33 38 30 38 61 35 36 22 0a 20  eede153808a56". 
0990: 20 20 20 39 20 22 30 31 32 33 34 35 36 37 61 62     9 "01234567ab
09a0: 63 64 65 66 67 68 30 31 32 33 34 35 36 37 61 62  cdefgh01234567ab
09b0: 63 64 65 66 67 68 30 31 32 33 34 35 36 37 61 62  cdefgh01234567ab
09c0: 63 64 65 66 67 68 30 31 32 33 34 35 36 37 61 62  cdefgh01234567ab
09d0: 63 64 65 66 67 68 3d 3d 22 20 22 68 65 6c 6c 6f  cdefgh==" "hello
09e0: 20 77 6f 72 6c 64 22 0a 20 20 20 20 22 63 66 30   world".    "cf0
09f0: 32 33 37 34 36 36 66 39 62 33 63 37 37 33 38 35  237466f9b3c77385
0a00: 38 61 31 38 39 32 62 34 37 34 63 39 65 22 0a 7d  8a1892b474c9e".}
0a10: 20 7b 0a 20 20 20 20 74 65 73 74 20 6d 64 35 2d   {.    test md5-
0a20: 33 2e 24 6e 20 7b 68 6d 61 63 7d 20 7b 0a 09 3a  3.$n {hmac} {..:
0a30: 3a 6d 64 35 3a 3a 68 6d 61 63 20 24 6b 65 79 20  :md5::hmac $key 
0a40: 24 74 65 78 74 0a 20 20 20 20 7d 20 24 65 78 70  $text.    } $exp
0a50: 65 63 74 65 64 20 3b 20 23 20 7b 7d 0a 7d 0a 0a  ected ; # {}.}..
0a60: 74 65 73 74 73 75 69 74 65 43 6c 65 61 6e 75 70  testsuiteCleanup
0a70: 0a                                               .