registry.test
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:28k
源码类别:

通讯编程

开发平台:

Visual C++

  1. # registry.test --
  2. #
  3. # This file contains a collection of tests for the registry command.
  4. # Sourcing this file into Tcl runs the tests and generates output for
  5. # errors.  No output means no errors were found.
  6. #
  7. # In order for these tests to run, the registry package must be on the
  8. # auto_path or the registry package must have been loaded already.
  9. #
  10. # Copyright (c) 1997 by Sun Microsystems, Inc.  All rights reserved.
  11. # Copyright (c) 1998-1999 by Scriptics Corporation.
  12. #
  13. # RCS: @(#) $Id: registry.test,v 1.12.2.3 2007/03/17 22:41:05 kennykb Exp $
  14. if {[lsearch [namespace children] ::tcltest] == -1} {
  15.     package require tcltest 2
  16.     namespace import -force ::tcltest::*
  17. }
  18. if {$tcl_platform(platform) == "windows"} {
  19.     if [catch {
  20. set lib [lindex [glob -directory [file join [pwd] [file dirname 
  21. [info nameofexecutable]]] tclreg*.dll] 0]
  22. load $lib registry
  23.     }] {
  24. puts "Unable to find the registry package. Skipping registry tests."
  25. return
  26.     }
  27. }
  28. # determine the current locale
  29. testConstraint english [expr {[llength [info commands testlocale]]
  30. && [string equal [testlocale all ""] "English_United States.1252"]
  31. }]
  32. set hostname [info hostname]
  33. test registry-1.1 {argument parsing for registry command} {pcOnly} {
  34.     list [catch {registry} msg] $msg
  35. } {1 {wrong # args: should be "registry option ?arg arg ...?"}}
  36. test registry-1.2 {argument parsing for registry command} {pcOnly} {
  37.     list [catch {registry foo} msg] $msg
  38. } {1 {bad option "foo": must be broadcast, delete, get, keys, set, type, or values}}
  39. test registry-1.3 {argument parsing for registry command} {pcOnly} {
  40.     list [catch {registry d} msg] $msg
  41. } {1 {wrong # args: should be "registry delete keyName ?valueName?"}}
  42. test registry-1.4 {argument parsing for registry command} {pcOnly} {
  43.     list [catch {registry delete} msg] $msg
  44. } {1 {wrong # args: should be "registry delete keyName ?valueName?"}}
  45. test registry-1.5 {argument parsing for registry command} {pcOnly} {
  46.     list [catch {registry delete foo bar baz} msg] $msg
  47. } {1 {wrong # args: should be "registry delete keyName ?valueName?"}}
  48. test registry-1.6 {argument parsing for registry command} {pcOnly} {
  49.     list [catch {registry g} msg] $msg
  50. } {1 {wrong # args: should be "registry get keyName valueName"}}
  51. test registry-1.7 {argument parsing for registry command} {pcOnly} {
  52.     list [catch {registry get} msg] $msg
  53. } {1 {wrong # args: should be "registry get keyName valueName"}}
  54. test registry-1.8 {argument parsing for registry command} {pcOnly} {
  55.     list [catch {registry get foo} msg] $msg
  56. } {1 {wrong # args: should be "registry get keyName valueName"}}
  57. test registry-1.9 {argument parsing for registry command} {pcOnly} {
  58.     list [catch {registry get foo bar baz} msg] $msg
  59. } {1 {wrong # args: should be "registry get keyName valueName"}}
  60. test registry-1.10 {argument parsing for registry command} {pcOnly} {
  61.     list [catch {registry k} msg] $msg
  62. } {1 {wrong # args: should be "registry keys keyName ?pattern?"}}
  63. test registry-1.11 {argument parsing for registry command} {pcOnly} {
  64.     list [catch {registry keys} msg] $msg
  65. } {1 {wrong # args: should be "registry keys keyName ?pattern?"}}
  66. test registry-1.12 {argument parsing for registry command} {pcOnly} {
  67.     list [catch {registry keys foo bar baz} msg] $msg
  68. } {1 {wrong # args: should be "registry keys keyName ?pattern?"}}
  69. test registry-1.13 {argument parsing for registry command} {pcOnly} {
  70.     list [catch {registry s} msg] $msg
  71. } {1 {wrong # args: should be "registry set keyName ?valueName data ?type??"}}
  72. test registry-1.14 {argument parsing for registry command} {pcOnly} {
  73.     list [catch {registry set} msg] $msg
  74. } {1 {wrong # args: should be "registry set keyName ?valueName data ?type??"}}
  75. test registry-1.15 {argument parsing for registry command} {pcOnly} {
  76.     list [catch {registry set foo bar} msg] $msg
  77. } {1 {wrong # args: should be "registry set keyName ?valueName data ?type??"}}
  78. test registry-1.16 {argument parsing for registry command} {pcOnly} {
  79.     list [catch {registry set foo bar baz blat gorp} msg] $msg
  80. } {1 {wrong # args: should be "registry set keyName ?valueName data ?type??"}}
  81. test registry-1.17 {argument parsing for registry command} {pcOnly} {
  82.     list [catch {registry t} msg] $msg
  83. } {1 {wrong # args: should be "registry type keyName valueName"}}
  84. test registry-1.18 {argument parsing for registry command} {pcOnly} {
  85.     list [catch {registry type} msg] $msg
  86. } {1 {wrong # args: should be "registry type keyName valueName"}}
  87. test registry-1.19 {argument parsing for registry command} {pcOnly} {
  88.     list [catch {registry type foo} msg] $msg
  89. } {1 {wrong # args: should be "registry type keyName valueName"}}
  90. test registry-1.20 {argument parsing for registry command} {pcOnly} {
  91.     list [catch {registry type foo bar baz} msg] $msg
  92. } {1 {wrong # args: should be "registry type keyName valueName"}}
  93. test registry-1.21 {argument parsing for registry command} {pcOnly} {
  94.     list [catch {registry v} msg] $msg
  95. } {1 {wrong # args: should be "registry values keyName ?pattern?"}}
  96. test registry-1.22 {argument parsing for registry command} {pcOnly} {
  97.     list [catch {registry values} msg] $msg
  98. } {1 {wrong # args: should be "registry values keyName ?pattern?"}}
  99. test registry-1.23 {argument parsing for registry command} {pcOnly} {
  100.     list [catch {registry values foo bar baz} msg] $msg
  101. } {1 {wrong # args: should be "registry values keyName ?pattern?"}}
  102. test registry-2.1 {DeleteKey: bad key} {pcOnly} {
  103.     list [catch {registry delete foo} msg] $msg
  104. } {1 {bad root name "foo": must be HKEY_LOCAL_MACHINE, HKEY_USERS, HKEY_CLASSES_ROOT, HKEY_CURRENT_USER, HKEY_CURRENT_CONFIG, HKEY_PERFORMANCE_DATA, or HKEY_DYN_DATA}}
  105. test registry-2.2 {DeleteKey: bad key} {pcOnly} {
  106.     list [catch {registry delete HKEY_CLASSES_ROOT} msg] $msg
  107. } {1 {bad key: cannot delete root keys}}
  108. test registry-2.3 {DeleteKey: bad key} {pcOnly} {
  109.     list [catch {registry delete HKEY_CLASSES_ROOT\} msg] $msg
  110. } {1 {bad key: cannot delete root keys}}
  111. test registry-2.4 {DeleteKey: subkey at root level} {pcOnly} {
  112.     registry set HKEY_CLASSES_ROOT\TclFoobar
  113.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  114.     registry keys HKEY_CLASSES_ROOT TclFoobar
  115. } {}
  116. test registry-2.5 {DeleteKey: subkey below root level} {pcOnly} {
  117.     registry set HKEY_CLASSES_ROOT\TclFoobar\test
  118.     registry delete HKEY_CLASSES_ROOT\TclFoobar\test
  119.     set result [registry keys HKEY_CLASSES_ROOT TclFoobar\test]
  120.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  121.     set result
  122. } {}
  123. test registry-2.6 {DeleteKey: recursive delete} {pcOnly} {
  124.     registry set HKEY_CLASSES_ROOT\TclFoobar\test1
  125.     registry set HKEY_CLASSES_ROOT\TclFoobar\test2\test3
  126.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  127.     set result [registry keys HKEY_CLASSES_ROOT TclFoobar]
  128.     set result
  129. } {}
  130. test registry-2.7 {DeleteKey: trailing backslashes} {pcOnly english} {
  131.     registry set HKEY_CLASSES_ROOT\TclFoobar\baz
  132.     list [catch {registry delete HKEY_CLASSES_ROOT\TclFoobar\} msg] $msg
  133. } {1 {unable to delete key: The configuration registry key is invalid.}}
  134. test registry-2.8 {DeleteKey: failure} {pcOnly} {
  135.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  136.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  137. } {}
  138. test registry-2.9 {DeleteKey: unicode} {pcOnly} {
  139.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  140.     registry set HKEY_CLASSES_ROOT\TclFoobar\testu00c7bar\a
  141.     registry set HKEY_CLASSES_ROOT\TclFoobar\testu00c7bar\b
  142.     registry delete HKEY_CLASSES_ROOT\TclFoobar\testu00c7bar
  143.     set result [registry keys HKEY_CLASSES_ROOT\TclFoobar]
  144.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  145.     set result
  146. } {}
  147. test registry-3.1 {DeleteValue} {pcOnly} {
  148.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  149.     registry set HKEY_CLASSES_ROOT\TclFoobar\baz test1 blort
  150.     registry set HKEY_CLASSES_ROOT\TclFoobar\baz test2 blat
  151.     registry delete HKEY_CLASSES_ROOT\TclFoobar\baz test1
  152.     set result [registry values HKEY_CLASSES_ROOT\TclFoobar\baz]
  153.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  154.     set result
  155. } test2
  156. test registry-3.2 {DeleteValue: bad key} {pcOnly english} {
  157.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  158.     list [catch {registry delete HKEY_CLASSES_ROOT\TclFoobar test} msg] $msg
  159. } {1 {unable to open key: The system cannot find the file specified.}}
  160. test registry-3.3 {DeleteValue: bad value} {pcOnly english} {
  161.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  162.     registry set HKEY_CLASSES_ROOT\TclFoobar\baz test2 blort
  163.     set result [list [catch {registry delete HKEY_CLASSES_ROOT\TclFoobar test1} msg] $msg]
  164.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  165.     set result
  166. } {1 {unable to delete value "test1" from key "HKEY_CLASSES_ROOTTclFoobar": The system cannot find the file specified.}}
  167. test registry-3.4 {DeleteValue: Unicode} {pcOnly} {
  168.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  169.     registry set HKEY_CLASSES_ROOT\TclFoobar\u00c7baz u00c7test1 blort
  170.     registry set HKEY_CLASSES_ROOT\TclFoobar\u00c7baz test2 blat
  171.     registry delete HKEY_CLASSES_ROOT\TclFoobar\u00c7baz u00c7test1
  172.     set result [registry values HKEY_CLASSES_ROOT\TclFoobar\u00c7baz]
  173.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  174.     set result
  175. } test2
  176. test registry-4.1 {GetKeyNames: bad key} {pcOnly english} {
  177.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  178.     list [catch {registry keys HKEY_CLASSES_ROOT\TclFoobar} msg] $msg
  179. } {1 {unable to open key: The system cannot find the file specified.}}
  180. test registry-4.2 {GetKeyNames} {pcOnly} {
  181.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  182.     registry set HKEY_CLASSES_ROOT\TclFoobar\baz
  183.     set result [registry keys HKEY_CLASSES_ROOT\TclFoobar]
  184.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  185.     set result
  186. } {baz}
  187. test registry-4.3 {GetKeyNames: remote key} {pcOnly nonPortable english} {
  188.     registry set \\$hostname\HKEY_CLASSES_ROOT\TclFoobar\baz
  189.     set result [registry keys \\gaspode\HKEY_CLASSES_ROOT\TclFoobar]
  190.     registry delete \\$hostname\HKEY_CLASSES_ROOT\TclFoobar
  191.     set result
  192. } {baz}
  193. test registry-4.4 {GetKeyNames: empty key} {pcOnly} {
  194.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  195.     registry set HKEY_CLASSES_ROOT\TclFoobar
  196.     set result [registry keys HKEY_CLASSES_ROOT\TclFoobar]
  197.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  198.     set result
  199. } {}
  200. test registry-4.5 {GetKeyNames: patterns} {pcOnly} {
  201.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  202.     registry set HKEY_CLASSES_ROOT\TclFoobar\baz
  203.     registry set HKEY_CLASSES_ROOT\TclFoobar\blat
  204.     registry set HKEY_CLASSES_ROOT\TclFoobar\foo
  205.     set result [lsort [registry keys HKEY_CLASSES_ROOT\TclFoobar b*]]
  206.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  207.     set result
  208. } {baz blat}
  209. test registry-4.6 {GetKeyNames: names with spaces} {pcOnly} {
  210.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  211.     registry set HKEY_CLASSES_ROOT\TclFoobar\baz bar
  212.     registry set HKEY_CLASSES_ROOT\TclFoobar\blat
  213.     registry set HKEY_CLASSES_ROOT\TclFoobar\foo
  214.     set result [lsort [registry keys HKEY_CLASSES_ROOT\TclFoobar b*]]
  215.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  216.     set result
  217. } {{baz bar} blat}
  218. test registry-4.7 {GetKeyNames: Unicode} {pcOnly english} {
  219.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  220.     registry set HKEY_CLASSES_ROOT\TclFoobar\bazu00c7bar
  221.     registry set HKEY_CLASSES_ROOT\TclFoobar\blat
  222.     registry set HKEY_CLASSES_ROOT\TclFoobar\foo
  223.     set result [lsort [registry keys HKEY_CLASSES_ROOT\TclFoobar b*]]
  224.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  225.     set result
  226. } "bazu00c7bar blat"
  227. test registry-4.8 {GetKeyNames: Unicode} {pcOnly} {
  228.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  229.     registry set HKEY_CLASSES_ROOT\TclFoobar\bazu30b7bar
  230.     registry set HKEY_CLASSES_ROOT\TclFoobar\blat
  231.     registry set HKEY_CLASSES_ROOT\TclFoobar\foo
  232.     set result [lsort [registry keys HKEY_CLASSES_ROOT\TclFoobar b*]]
  233.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  234.     set result
  235. } "bazu30b7bar blat"
  236. test registry-4.9 {GetKeyNames: very long key [Bug 1682211]} 
  237.     -constraints {pcOnly} 
  238.     -setup {
  239. registry set HKEY_CLASSES_ROOT\TclFoobar\a
  240. registry set HKEY_CLASSES_ROOT\TclFoobar\b[string repeat x 254]
  241. registry set HKEY_CLASSES_ROOT\TclFoobar\c
  242.     } 
  243.     -body {
  244. lsort [registry keys HKEY_CLASSES_ROOT\TclFoobar]
  245.     } 
  246.     -cleanup {
  247. registry delete HKEY_CLASSES_ROOT\TclFoobar
  248.     } 
  249.     -result [list a b[string repeat x 254] c]
  250. test registry-5.1 {GetType} {pcOnly english} {
  251.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  252.     list [catch {registry type HKEY_CLASSES_ROOT\TclFoobar val1} msg] $msg
  253. } {1 {unable to open key: The system cannot find the file specified.}}
  254. test registry-5.2 {GetType} {pcOnly english} {
  255.     registry set HKEY_CLASSES_ROOT\TclFoobar
  256.     list [catch {registry type HKEY_CLASSES_ROOT\TclFoobar val1} msg] $msg
  257. } {1 {unable to get type of value "val1" from key "HKEY_CLASSES_ROOTTclFoobar": The system cannot find the file specified.}}
  258. test registry-5.3 {GetType} {pcOnly} {
  259.     registry set HKEY_CLASSES_ROOT\TclFoobar val1 foobar none
  260.     set result [registry type HKEY_CLASSES_ROOT\TclFoobar val1]
  261.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  262.     set result
  263. } none
  264. test registry-5.4 {GetType} {pcOnly} {
  265.     registry set HKEY_CLASSES_ROOT\TclFoobar val1 foobar
  266.     set result [registry type HKEY_CLASSES_ROOT\TclFoobar val1]
  267.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  268.     set result
  269. } sz
  270. test registry-5.5 {GetType} {pcOnly} {
  271.     registry set HKEY_CLASSES_ROOT\TclFoobar val1 foobar sz
  272.     set result [registry type HKEY_CLASSES_ROOT\TclFoobar val1]
  273.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  274.     set result
  275. } sz
  276. test registry-5.6 {GetType} {pcOnly} {
  277.     registry set HKEY_CLASSES_ROOT\TclFoobar val1 foobar expand_sz
  278.     set result [registry type HKEY_CLASSES_ROOT\TclFoobar val1]
  279.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  280.     set result
  281. } expand_sz
  282. test registry-5.7 {GetType} {pcOnly} {
  283.     registry set HKEY_CLASSES_ROOT\TclFoobar val1 1 binary
  284.     set result [registry type HKEY_CLASSES_ROOT\TclFoobar val1]
  285.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  286.     set result
  287. } binary
  288. test registry-5.8 {GetType} {pcOnly} {
  289.     registry set HKEY_CLASSES_ROOT\TclFoobar val1 1 dword
  290.     set result [registry type HKEY_CLASSES_ROOT\TclFoobar val1]
  291.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  292.     set result
  293. } dword
  294. test registry-5.9 {GetType} {pcOnly} {
  295.     registry set HKEY_CLASSES_ROOT\TclFoobar val1 1 dword_big_endian
  296.     set result [registry type HKEY_CLASSES_ROOT\TclFoobar val1]
  297.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  298.     set result
  299. } dword_big_endian
  300. test registry-5.10 {GetType} {pcOnly} {
  301.     registry set HKEY_CLASSES_ROOT\TclFoobar val1 1 link
  302.     set result [registry type HKEY_CLASSES_ROOT\TclFoobar val1]
  303.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  304.     set result
  305. } link
  306. test registry-5.11 {GetType} {pcOnly} {
  307.     registry set HKEY_CLASSES_ROOT\TclFoobar val1 foobar multi_sz
  308.     set result [registry type HKEY_CLASSES_ROOT\TclFoobar val1]
  309.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  310.     set result
  311. } multi_sz
  312. test registry-5.12 {GetType} {pcOnly} {
  313.     registry set HKEY_CLASSES_ROOT\TclFoobar val1 1 resource_list
  314.     set result [registry type HKEY_CLASSES_ROOT\TclFoobar val1]
  315.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  316.     set result
  317. } resource_list
  318. test registry-5.13 {GetType: unknown types} {pcOnly} {
  319.     registry set HKEY_CLASSES_ROOT\TclFoobar val1 1 24
  320.     set result [registry type HKEY_CLASSES_ROOT\TclFoobar val1]
  321.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  322.     set result
  323. } 24
  324. test registry-5.14 {GetType: Unicode} {pcOnly} {
  325.     registry set HKEY_CLASSES_ROOT\TclFoobar vau00c7l1 1 24
  326.     set result [registry type HKEY_CLASSES_ROOT\TclFoobar vau00c7l1]
  327.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  328.     set result
  329. } 24
  330. test registry-6.1 {GetValue} {pcOnly english} {
  331.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  332.     list [catch {registry get HKEY_CLASSES_ROOT\TclFoobar val1} msg] $msg
  333. } {1 {unable to open key: The system cannot find the file specified.}}
  334. test registry-6.2 {GetValue} {pcOnly english} {
  335.     registry set HKEY_CLASSES_ROOT\TclFoobar
  336.     list [catch {registry get HKEY_CLASSES_ROOT\TclFoobar val1} msg] $msg
  337. } {1 {unable to get value "val1" from key "HKEY_CLASSES_ROOTTclFoobar": The system cannot find the file specified.}}
  338. test registry-6.3 {GetValue} {pcOnly} {
  339.     registry set HKEY_CLASSES_ROOT\TclFoobar val1 foobar none
  340.     set result [registry get HKEY_CLASSES_ROOT\TclFoobar val1]
  341.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  342.     set result
  343. } foobar
  344. test registry-6.4 {GetValue} {pcOnly} {
  345.     registry set HKEY_CLASSES_ROOT\TclFoobar val1 foobar
  346.     set result [registry get HKEY_CLASSES_ROOT\TclFoobar val1]
  347.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  348.     set result
  349. } foobar
  350. test registry-6.5 {GetValue} {pcOnly} {
  351.     registry set HKEY_CLASSES_ROOT\TclFoobar val1 foobar sz
  352.     set result [registry get HKEY_CLASSES_ROOT\TclFoobar val1]
  353.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  354.     set result
  355. } foobar
  356. test registry-6.6 {GetValue} {pcOnly} {
  357.     registry set HKEY_CLASSES_ROOT\TclFoobar val1 foobar expand_sz
  358.     set result [registry get HKEY_CLASSES_ROOT\TclFoobar val1]
  359.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  360.     set result
  361. } foobar
  362. test registry-6.7 {GetValue} {pcOnly} {
  363.     registry set HKEY_CLASSES_ROOT\TclFoobar val1 1 binary
  364.     set result [registry get HKEY_CLASSES_ROOT\TclFoobar val1]
  365.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  366.     set result
  367. } 1
  368. test registry-6.8 {GetValue} {pcOnly} {
  369.     registry set HKEY_CLASSES_ROOT\TclFoobar val1 0x20 dword
  370.     set result [registry get HKEY_CLASSES_ROOT\TclFoobar val1]
  371.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  372.     set result
  373. } 32
  374. test registry-6.9 {GetValue} {pcOnly} {
  375.     registry set HKEY_CLASSES_ROOT\TclFoobar val1 0x20 dword_big_endian
  376.     set result [registry get HKEY_CLASSES_ROOT\TclFoobar val1]
  377.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  378.     set result
  379. } 32
  380. test registry-6.10 {GetValue} {pcOnly} {
  381.     registry set HKEY_CLASSES_ROOT\TclFoobar val1 1 link
  382.     set result [registry get HKEY_CLASSES_ROOT\TclFoobar val1]
  383.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  384.     set result
  385. } 1
  386. test registry-6.11 {GetValue} {pcOnly} {
  387.     registry set HKEY_CLASSES_ROOT\TclFoobar val1 foobar multi_sz
  388.     set result [registry get HKEY_CLASSES_ROOT\TclFoobar val1]
  389.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  390.     set result
  391. } foobar
  392. test registry-6.12 {GetValue} {pcOnly} {
  393.     registry set HKEY_CLASSES_ROOT\TclFoobar val1 {foo bar baz} multi_sz
  394.     set result [registry get HKEY_CLASSES_ROOT\TclFoobar val1]
  395.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  396.     set result
  397. } {{foo bar} baz}
  398. test registry-6.13 {GetValue} {pcOnly} {
  399.     registry set HKEY_CLASSES_ROOT\TclFoobar val1 {} multi_sz
  400.     set result [registry get HKEY_CLASSES_ROOT\TclFoobar val1]
  401.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  402.     set result
  403. } {}
  404. test registry-6.14 {GetValue: truncation of multivalues with null elements} 
  405. {pcOnly} {
  406.     registry set HKEY_CLASSES_ROOT\TclFoobar val1 {a {} b} multi_sz
  407.     set result [registry get HKEY_CLASSES_ROOT\TclFoobar val1]
  408.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  409.     set result
  410. } a
  411. test registry-6.15 {GetValue} {pcOnly} {
  412.     registry set HKEY_CLASSES_ROOT\TclFoobar val1 1 resource_list
  413.     set result [registry get HKEY_CLASSES_ROOT\TclFoobar val1]
  414.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  415.     set result
  416. } 1
  417. test registry-6.16 {GetValue: unknown types} {pcOnly} {
  418.     registry set HKEY_CLASSES_ROOT\TclFoobar val1 1 24
  419.     set result [registry get HKEY_CLASSES_ROOT\TclFoobar val1]
  420.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  421.     set result
  422. } 1
  423. test registry-6.17 {GetValue: Unicode value names} {pcOnly} {
  424.     registry set HKEY_CLASSES_ROOT\TclFoobar valu00c71 foobar multi_sz
  425.     set result [registry get HKEY_CLASSES_ROOT\TclFoobar valu00c71]
  426.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  427.     set result
  428. } foobar
  429. test registry-6.18 {GetValue: values with Unicode strings} {pcOnly} {
  430.     registry set HKEY_CLASSES_ROOT\TclFoobar val1 {foo bau30b7r baz} multi_sz
  431.     set result [registry get HKEY_CLASSES_ROOT\TclFoobar val1]
  432.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  433.     set result
  434. } "foo bau30b7r baz"
  435. test registry-6.19 {GetValue: values with Unicode strings} {pcOnly english} {
  436.     registry set HKEY_CLASSES_ROOT\TclFoobar val1 {foo bau00c7r baz} multi_sz
  437.     set result [registry get HKEY_CLASSES_ROOT\TclFoobar val1]
  438.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  439.     set result
  440. } "foo bau00c7r baz"
  441. test registry-6.20 {GetValue: values with Unicode strings with embedded nulls} {pcOnly} {
  442.     registry set HKEY_CLASSES_ROOT\TclFoobar val1 {foo bau0000r baz} multi_sz
  443.     set result [registry get HKEY_CLASSES_ROOT\TclFoobar val1]
  444.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  445.     set result
  446. } "foo ba r baz"
  447. test registry-7.1 {GetValueNames: bad key} {pcOnly english} {
  448.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  449.     list [catch {registry values HKEY_CLASSES_ROOT\TclFoobar} msg] $msg
  450. } {1 {unable to open key: The system cannot find the file specified.}}
  451. test registry-7.2 {GetValueNames} {pcOnly} {
  452.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  453.     registry set HKEY_CLASSES_ROOT\TclFoobar baz foobar
  454.     set result [registry values HKEY_CLASSES_ROOT\TclFoobar]
  455.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  456.     set result
  457. } baz
  458. test registry-7.3 {GetValueNames} {pcOnly} {
  459.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  460.     registry set HKEY_CLASSES_ROOT\TclFoobar baz foobar1
  461.     registry set HKEY_CLASSES_ROOT\TclFoobar blat foobar2
  462.     registry set HKEY_CLASSES_ROOT\TclFoobar {} foobar3
  463.     set result [lsort [registry values HKEY_CLASSES_ROOT\TclFoobar]]
  464.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  465.     set result
  466. } {{} baz blat}
  467. test registry-7.4 {GetValueNames: remote key} {pcOnly nonPortable english} {
  468.     registry set \\$hostname\HKEY_CLASSES_ROOT\TclFoobar baz blat
  469.     set result [registry values \\$hostname\HKEY_CLASSES_ROOT\TclFoobar]
  470.     registry delete \\$hostname\HKEY_CLASSES_ROOT\TclFoobar
  471.     set result
  472. } baz
  473. test registry-7.5 {GetValueNames: empty key} {pcOnly} {
  474.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  475.     registry set HKEY_CLASSES_ROOT\TclFoobar
  476.     set result [registry values HKEY_CLASSES_ROOT\TclFoobar]
  477.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  478.     set result
  479. } {}
  480. test registry-7.6 {GetValueNames: patterns} {pcOnly} {
  481.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  482.     registry set HKEY_CLASSES_ROOT\TclFoobar baz foobar1
  483.     registry set HKEY_CLASSES_ROOT\TclFoobar blat foobar2
  484.     registry set HKEY_CLASSES_ROOT\TclFoobar foo foobar3
  485.     set result [lsort [registry values HKEY_CLASSES_ROOT\TclFoobar b*]]
  486.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  487.     set result
  488. } {baz blat}
  489. test registry-7.7 {GetValueNames: names with spaces} {pcOnly} {
  490.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  491.     registry set HKEY_CLASSES_ROOT\TclFoobar baz bar foobar1
  492.     registry set HKEY_CLASSES_ROOT\TclFoobar blat foobar2
  493.     registry set HKEY_CLASSES_ROOT\TclFoobar foo foobar3
  494.     set result [lsort [registry values HKEY_CLASSES_ROOT\TclFoobar b*]]
  495.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  496.     set result
  497. } {{baz bar} blat}
  498. test registry-8.1 {OpenSubKey} {pcOnly nonPortable english} {
  499.     # This test will only succeed if the current user does not have registry
  500.     # access on the specified machine.
  501.     list [catch {registry keys {\momHKEY_LOCAL_MACHINE}} msg] $msg
  502. } {1 {unable to open key: Access is denied.}}
  503. test registry-8.2 {OpenSubKey} {pcOnly} {
  504.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  505.     registry set HKEY_CLASSES_ROOT\TclFoobar
  506.     set result [registry keys HKEY_CLASSES_ROOT TclFoobar]
  507.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  508.     set result
  509. } TclFoobar
  510. test registry-8.3 {OpenSubKey} {pcOnly english} {
  511.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  512.     list [catch {registry keys HKEY_CLASSES_ROOT\TclFoobar} msg] $msg
  513. } {1 {unable to open key: The system cannot find the file specified.}}
  514. test registry-9.1 {ParseKeyName: bad keys} {pcOnly} {
  515.     list [catch {registry values \} msg] $msg
  516. } "1 {bad key "\": must start with a valid root}"
  517. test registry-9.2 {ParseKeyName: bad keys} {pcOnly} {
  518.     list [catch {registry values \foobar} msg] $msg
  519. } {1 {bad key "foobar": must start with a valid root}}
  520. test registry-9.3 {ParseKeyName: bad keys} {pcOnly} {
  521.     list [catch {registry values \\} msg] $msg
  522. } {1 {bad root name "": must be HKEY_LOCAL_MACHINE, HKEY_USERS, HKEY_CLASSES_ROOT, HKEY_CURRENT_USER, HKEY_CURRENT_CONFIG, HKEY_PERFORMANCE_DATA, or HKEY_DYN_DATA}}
  523. test registry-9.4 {ParseKeyName: bad keys} {pcOnly} {
  524.     list [catch {registry values \\\} msg] $msg
  525. } {1 {bad root name "": must be HKEY_LOCAL_MACHINE, HKEY_USERS, HKEY_CLASSES_ROOT, HKEY_CURRENT_USER, HKEY_CURRENT_CONFIG, HKEY_PERFORMANCE_DATA, or HKEY_DYN_DATA}}
  526. test registry-9.5 {ParseKeyName: bad keys} {pcOnly english} {
  527.     list [catch {registry values \\\HKEY_CLASSES_ROOT} msg] $msg
  528. } {1 {unable to open key: The network address is invalid.}}
  529. test registry-9.6 {ParseKeyName: bad keys} {pcOnly} {
  530.     list [catch {registry values \\gaspode} msg] $msg
  531. } {1 {bad root name "": must be HKEY_LOCAL_MACHINE, HKEY_USERS, HKEY_CLASSES_ROOT, HKEY_CURRENT_USER, HKEY_CURRENT_CONFIG, HKEY_PERFORMANCE_DATA, or HKEY_DYN_DATA}}
  532. test registry-9.7 {ParseKeyName: bad keys} {pcOnly} {
  533.     list [catch {registry values foobar} msg] $msg
  534. } {1 {bad root name "foobar": must be HKEY_LOCAL_MACHINE, HKEY_USERS, HKEY_CLASSES_ROOT, HKEY_CURRENT_USER, HKEY_CURRENT_CONFIG, HKEY_PERFORMANCE_DATA, or HKEY_DYN_DATA}}
  535. test registry-9.8 {ParseKeyName: null keys} {pcOnly} {
  536.     list [catch {registry delete HKEY_CLASSES_ROOT\} msg] $msg
  537. } {1 {bad key: cannot delete root keys}}
  538. test registry-9.9 {ParseKeyName: null keys} {pcOnly english} {
  539.     list [catch {registry keys HKEY_CLASSES_ROOT\TclFoobar\baz} msg] $msg
  540. } {1 {unable to open key: The system cannot find the file specified.}}
  541. test registry-10.1 {RecursiveDeleteKey} {pcOnly} {
  542.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  543.     registry set HKEY_CLASSES_ROOT\TclFoobar\test1
  544.     registry set HKEY_CLASSES_ROOT\TclFoobar\test2\test3
  545.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  546.     set result [registry keys HKEY_CLASSES_ROOT TclFoobar]
  547.     set result
  548. } {}
  549. test registry-10.2 {RecursiveDeleteKey} {pcOnly} {
  550.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  551.     registry set HKEY_CLASSES_ROOT\TclFoobar\test1
  552.     registry set HKEY_CLASSES_ROOT\TclFoobar\test2\test3
  553.     set result [registry delete HKEY_CLASSES_ROOT\TclFoobar\test2\test4]
  554.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  555.     set result
  556. } {}
  557. test registry-11.1 {SetValue: recursive creation} {pcOnly} {
  558.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  559.     registry set HKEY_CLASSES_ROOT\TclFoobar\baz blat foobar
  560.     set result [registry get HKEY_CLASSES_ROOT\TclFoobar\baz blat]
  561. } foobar
  562. test registry-11.2 {SetValue: modification} {pcOnly} {
  563.     registry delete HKEY_CLASSES_ROOT\TclFoobar
  564.     registry set HKEY_CLASSES_ROOT\TclFoobar\baz blat foobar
  565.     registry set HKEY_CLASSES_ROOT\TclFoobar\baz blat frob
  566.     set result [registry get HKEY_CLASSES_ROOT\TclFoobar\baz blat]
  567. } frob
  568. test registry-11.3 {SetValue: failure} {pcOnly nonPortable english} {
  569.     # This test will only succeed if the current user does not have registry
  570.     # access on the specified machine.
  571.     list [catch {registry set {\momHKEY_CLASSES_ROOTTclFoobar} bar foobar} msg] $msg
  572. } {1 {unable to open key: Access is denied.}}
  573. test registry-12.1 {BroadcastValue} {pcOnly} {
  574.     list [catch {registry broadcast} msg] $msg
  575. } {1 {wrong # args: should be "registry broadcast keyName ?-timeout millisecs?"}}
  576. test registry-12.2 {BroadcastValue} {pcOnly} {
  577.     list [catch {registry broadcast "" -time} msg] $msg
  578. } {1 {wrong # args: should be "registry broadcast keyName ?-timeout millisecs?"}}
  579. test registry-12.3 {BroadcastValue} {pcOnly} {
  580.     list [catch {registry broadcast "" - 500} msg] $msg
  581. } {1 {wrong # args: should be "registry broadcast keyName ?-timeout millisecs?"}}
  582. test registry-12.4 {BroadcastValue} {pcOnly} {
  583.     list [catch {registry broadcast {Environment}} msg] $msg
  584. } {0 {1 0}}
  585. test registry-12.5 {BroadcastValue} {pcOnly} {
  586.     list [catch {registry b {}} msg] $msg
  587. } {0 {1 0}}
  588. # cleanup
  589. unset hostname
  590. ::tcltest::cleanupTests
  591. return
  592. # Local Variables:
  593. # mode: tcl
  594. # tcl-indent-level: 4
  595. # fill-column: 78
  596. # End: