os/persistentdata/persistentstorage/sqlite3api/TEST/TCL/tcldistribution/tests/registry.test
First public contribution.
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.
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.
10 # Copyright (c) 1997 by Sun Microsystems, Inc. All rights reserved.
11 # Copyright (c) 1998-1999 by Scriptics Corporation.
13 # RCS: @(#) $Id: registry.test,v 1.12.2.3 2007/03/17 22:41:05 kennykb Exp $
15 if {[lsearch [namespace children] ::tcltest] == -1} {
16 package require tcltest 2
17 namespace import -force ::tcltest::*
20 if {$tcl_platform(platform) == "windows"} {
22 set lib [lindex [glob -directory [file join [pwd] [file dirname \
23 [info nameofexecutable]]] tclreg*.dll] 0]
26 puts "Unable to find the registry package. Skipping registry tests."
31 # determine the current locale
32 testConstraint english [expr {[llength [info commands testlocale]]
33 && [string equal [testlocale all ""] "English_United States.1252"]
36 set hostname [info hostname]
38 test registry-1.1 {argument parsing for registry command} {pcOnly} {
39 list [catch {registry} msg] $msg
40 } {1 {wrong # args: should be "registry option ?arg arg ...?"}}
41 test registry-1.2 {argument parsing for registry command} {pcOnly} {
42 list [catch {registry foo} msg] $msg
43 } {1 {bad option "foo": must be broadcast, delete, get, keys, set, type, or values}}
45 test registry-1.3 {argument parsing for registry command} {pcOnly} {
46 list [catch {registry d} msg] $msg
47 } {1 {wrong # args: should be "registry delete keyName ?valueName?"}}
48 test registry-1.4 {argument parsing for registry command} {pcOnly} {
49 list [catch {registry delete} msg] $msg
50 } {1 {wrong # args: should be "registry delete keyName ?valueName?"}}
51 test registry-1.5 {argument parsing for registry command} {pcOnly} {
52 list [catch {registry delete foo bar baz} msg] $msg
53 } {1 {wrong # args: should be "registry delete keyName ?valueName?"}}
55 test registry-1.6 {argument parsing for registry command} {pcOnly} {
56 list [catch {registry g} msg] $msg
57 } {1 {wrong # args: should be "registry get keyName valueName"}}
58 test registry-1.7 {argument parsing for registry command} {pcOnly} {
59 list [catch {registry get} msg] $msg
60 } {1 {wrong # args: should be "registry get keyName valueName"}}
61 test registry-1.8 {argument parsing for registry command} {pcOnly} {
62 list [catch {registry get foo} msg] $msg
63 } {1 {wrong # args: should be "registry get keyName valueName"}}
64 test registry-1.9 {argument parsing for registry command} {pcOnly} {
65 list [catch {registry get foo bar baz} msg] $msg
66 } {1 {wrong # args: should be "registry get keyName valueName"}}
68 test registry-1.10 {argument parsing for registry command} {pcOnly} {
69 list [catch {registry k} msg] $msg
70 } {1 {wrong # args: should be "registry keys keyName ?pattern?"}}
71 test registry-1.11 {argument parsing for registry command} {pcOnly} {
72 list [catch {registry keys} msg] $msg
73 } {1 {wrong # args: should be "registry keys keyName ?pattern?"}}
74 test registry-1.12 {argument parsing for registry command} {pcOnly} {
75 list [catch {registry keys foo bar baz} msg] $msg
76 } {1 {wrong # args: should be "registry keys keyName ?pattern?"}}
78 test registry-1.13 {argument parsing for registry command} {pcOnly} {
79 list [catch {registry s} msg] $msg
80 } {1 {wrong # args: should be "registry set keyName ?valueName data ?type??"}}
81 test registry-1.14 {argument parsing for registry command} {pcOnly} {
82 list [catch {registry set} msg] $msg
83 } {1 {wrong # args: should be "registry set keyName ?valueName data ?type??"}}
84 test registry-1.15 {argument parsing for registry command} {pcOnly} {
85 list [catch {registry set foo bar} msg] $msg
86 } {1 {wrong # args: should be "registry set keyName ?valueName data ?type??"}}
87 test registry-1.16 {argument parsing for registry command} {pcOnly} {
88 list [catch {registry set foo bar baz blat gorp} msg] $msg
89 } {1 {wrong # args: should be "registry set keyName ?valueName data ?type??"}}
91 test registry-1.17 {argument parsing for registry command} {pcOnly} {
92 list [catch {registry t} msg] $msg
93 } {1 {wrong # args: should be "registry type keyName valueName"}}
94 test registry-1.18 {argument parsing for registry command} {pcOnly} {
95 list [catch {registry type} msg] $msg
96 } {1 {wrong # args: should be "registry type keyName valueName"}}
97 test registry-1.19 {argument parsing for registry command} {pcOnly} {
98 list [catch {registry type foo} msg] $msg
99 } {1 {wrong # args: should be "registry type keyName valueName"}}
100 test registry-1.20 {argument parsing for registry command} {pcOnly} {
101 list [catch {registry type foo bar baz} msg] $msg
102 } {1 {wrong # args: should be "registry type keyName valueName"}}
104 test registry-1.21 {argument parsing for registry command} {pcOnly} {
105 list [catch {registry v} msg] $msg
106 } {1 {wrong # args: should be "registry values keyName ?pattern?"}}
107 test registry-1.22 {argument parsing for registry command} {pcOnly} {
108 list [catch {registry values} msg] $msg
109 } {1 {wrong # args: should be "registry values keyName ?pattern?"}}
110 test registry-1.23 {argument parsing for registry command} {pcOnly} {
111 list [catch {registry values foo bar baz} msg] $msg
112 } {1 {wrong # args: should be "registry values keyName ?pattern?"}}
114 test registry-2.1 {DeleteKey: bad key} {pcOnly} {
115 list [catch {registry delete foo} msg] $msg
116 } {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}}
117 test registry-2.2 {DeleteKey: bad key} {pcOnly} {
118 list [catch {registry delete HKEY_CLASSES_ROOT} msg] $msg
119 } {1 {bad key: cannot delete root keys}}
120 test registry-2.3 {DeleteKey: bad key} {pcOnly} {
121 list [catch {registry delete HKEY_CLASSES_ROOT\\} msg] $msg
122 } {1 {bad key: cannot delete root keys}}
123 test registry-2.4 {DeleteKey: subkey at root level} {pcOnly} {
124 registry set HKEY_CLASSES_ROOT\\TclFoobar
125 registry delete HKEY_CLASSES_ROOT\\TclFoobar
126 registry keys HKEY_CLASSES_ROOT TclFoobar
128 test registry-2.5 {DeleteKey: subkey below root level} {pcOnly} {
129 registry set HKEY_CLASSES_ROOT\\TclFoobar\\test
130 registry delete HKEY_CLASSES_ROOT\\TclFoobar\\test
131 set result [registry keys HKEY_CLASSES_ROOT TclFoobar\\test]
132 registry delete HKEY_CLASSES_ROOT\\TclFoobar
135 test registry-2.6 {DeleteKey: recursive delete} {pcOnly} {
136 registry set HKEY_CLASSES_ROOT\\TclFoobar\\test1
137 registry set HKEY_CLASSES_ROOT\\TclFoobar\\test2\\test3
138 registry delete HKEY_CLASSES_ROOT\\TclFoobar
139 set result [registry keys HKEY_CLASSES_ROOT TclFoobar]
142 test registry-2.7 {DeleteKey: trailing backslashes} {pcOnly english} {
143 registry set HKEY_CLASSES_ROOT\\TclFoobar\\baz
144 list [catch {registry delete HKEY_CLASSES_ROOT\\TclFoobar\\} msg] $msg
145 } {1 {unable to delete key: The configuration registry key is invalid.}}
146 test registry-2.8 {DeleteKey: failure} {pcOnly} {
147 registry delete HKEY_CLASSES_ROOT\\TclFoobar
148 registry delete HKEY_CLASSES_ROOT\\TclFoobar
150 test registry-2.9 {DeleteKey: unicode} {pcOnly} {
151 registry delete HKEY_CLASSES_ROOT\\TclFoobar
152 registry set HKEY_CLASSES_ROOT\\TclFoobar\\test\u00c7bar\\a
153 registry set HKEY_CLASSES_ROOT\\TclFoobar\\test\u00c7bar\\b
154 registry delete HKEY_CLASSES_ROOT\\TclFoobar\\test\u00c7bar
155 set result [registry keys HKEY_CLASSES_ROOT\\TclFoobar]
156 registry delete HKEY_CLASSES_ROOT\\TclFoobar
160 test registry-3.1 {DeleteValue} {pcOnly} {
161 registry delete HKEY_CLASSES_ROOT\\TclFoobar
162 registry set HKEY_CLASSES_ROOT\\TclFoobar\\baz test1 blort
163 registry set HKEY_CLASSES_ROOT\\TclFoobar\\baz test2 blat
164 registry delete HKEY_CLASSES_ROOT\\TclFoobar\\baz test1
165 set result [registry values HKEY_CLASSES_ROOT\\TclFoobar\\baz]
166 registry delete HKEY_CLASSES_ROOT\\TclFoobar
169 test registry-3.2 {DeleteValue: bad key} {pcOnly english} {
170 registry delete HKEY_CLASSES_ROOT\\TclFoobar
171 list [catch {registry delete HKEY_CLASSES_ROOT\\TclFoobar test} msg] $msg
172 } {1 {unable to open key: The system cannot find the file specified.}}
173 test registry-3.3 {DeleteValue: bad value} {pcOnly english} {
174 registry delete HKEY_CLASSES_ROOT\\TclFoobar
175 registry set HKEY_CLASSES_ROOT\\TclFoobar\\baz test2 blort
176 set result [list [catch {registry delete HKEY_CLASSES_ROOT\\TclFoobar test1} msg] $msg]
177 registry delete HKEY_CLASSES_ROOT\\TclFoobar
179 } {1 {unable to delete value "test1" from key "HKEY_CLASSES_ROOT\TclFoobar": The system cannot find the file specified.}}
180 test registry-3.4 {DeleteValue: Unicode} {pcOnly} {
181 registry delete HKEY_CLASSES_ROOT\\TclFoobar
182 registry set HKEY_CLASSES_ROOT\\TclFoobar\\\u00c7baz \u00c7test1 blort
183 registry set HKEY_CLASSES_ROOT\\TclFoobar\\\u00c7baz test2 blat
184 registry delete HKEY_CLASSES_ROOT\\TclFoobar\\\u00c7baz \u00c7test1
185 set result [registry values HKEY_CLASSES_ROOT\\TclFoobar\\\u00c7baz]
186 registry delete HKEY_CLASSES_ROOT\\TclFoobar
190 test registry-4.1 {GetKeyNames: bad key} {pcOnly english} {
191 registry delete HKEY_CLASSES_ROOT\\TclFoobar
192 list [catch {registry keys HKEY_CLASSES_ROOT\\TclFoobar} msg] $msg
193 } {1 {unable to open key: The system cannot find the file specified.}}
194 test registry-4.2 {GetKeyNames} {pcOnly} {
195 registry delete HKEY_CLASSES_ROOT\\TclFoobar
196 registry set HKEY_CLASSES_ROOT\\TclFoobar\\baz
197 set result [registry keys HKEY_CLASSES_ROOT\\TclFoobar]
198 registry delete HKEY_CLASSES_ROOT\\TclFoobar
201 test registry-4.3 {GetKeyNames: remote key} {pcOnly nonPortable english} {
202 registry set \\\\$hostname\\HKEY_CLASSES_ROOT\\TclFoobar\\baz
203 set result [registry keys \\\\gaspode\\HKEY_CLASSES_ROOT\\TclFoobar]
204 registry delete \\\\$hostname\\HKEY_CLASSES_ROOT\\TclFoobar
207 test registry-4.4 {GetKeyNames: empty key} {pcOnly} {
208 registry delete HKEY_CLASSES_ROOT\\TclFoobar
209 registry set HKEY_CLASSES_ROOT\\TclFoobar
210 set result [registry keys HKEY_CLASSES_ROOT\\TclFoobar]
211 registry delete HKEY_CLASSES_ROOT\\TclFoobar
214 test registry-4.5 {GetKeyNames: patterns} {pcOnly} {
215 registry delete HKEY_CLASSES_ROOT\\TclFoobar
216 registry set HKEY_CLASSES_ROOT\\TclFoobar\\baz
217 registry set HKEY_CLASSES_ROOT\\TclFoobar\\blat
218 registry set HKEY_CLASSES_ROOT\\TclFoobar\\foo
219 set result [lsort [registry keys HKEY_CLASSES_ROOT\\TclFoobar b*]]
220 registry delete HKEY_CLASSES_ROOT\\TclFoobar
223 test registry-4.6 {GetKeyNames: names with spaces} {pcOnly} {
224 registry delete HKEY_CLASSES_ROOT\\TclFoobar
225 registry set HKEY_CLASSES_ROOT\\TclFoobar\\baz\ bar
226 registry set HKEY_CLASSES_ROOT\\TclFoobar\\blat
227 registry set HKEY_CLASSES_ROOT\\TclFoobar\\foo
228 set result [lsort [registry keys HKEY_CLASSES_ROOT\\TclFoobar b*]]
229 registry delete HKEY_CLASSES_ROOT\\TclFoobar
232 test registry-4.7 {GetKeyNames: Unicode} {pcOnly english} {
233 registry delete HKEY_CLASSES_ROOT\\TclFoobar
234 registry set HKEY_CLASSES_ROOT\\TclFoobar\\baz\u00c7bar
235 registry set HKEY_CLASSES_ROOT\\TclFoobar\\blat
236 registry set HKEY_CLASSES_ROOT\\TclFoobar\\foo
237 set result [lsort [registry keys HKEY_CLASSES_ROOT\\TclFoobar b*]]
238 registry delete HKEY_CLASSES_ROOT\\TclFoobar
240 } "baz\u00c7bar blat"
241 test registry-4.8 {GetKeyNames: Unicode} {pcOnly} {
242 registry delete HKEY_CLASSES_ROOT\\TclFoobar
243 registry set HKEY_CLASSES_ROOT\\TclFoobar\\baz\u30b7bar
244 registry set HKEY_CLASSES_ROOT\\TclFoobar\\blat
245 registry set HKEY_CLASSES_ROOT\\TclFoobar\\foo
246 set result [lsort [registry keys HKEY_CLASSES_ROOT\\TclFoobar b*]]
247 registry delete HKEY_CLASSES_ROOT\\TclFoobar
249 } "baz\u30b7bar blat"
250 test registry-4.9 {GetKeyNames: very long key [Bug 1682211]} \
251 -constraints {pcOnly} \
253 registry set HKEY_CLASSES_ROOT\\TclFoobar\\a
254 registry set HKEY_CLASSES_ROOT\\TclFoobar\\b[string repeat x 254]
255 registry set HKEY_CLASSES_ROOT\\TclFoobar\\c
258 lsort [registry keys HKEY_CLASSES_ROOT\\TclFoobar]
261 registry delete HKEY_CLASSES_ROOT\\TclFoobar
263 -result [list a b[string repeat x 254] c]
265 test registry-5.1 {GetType} {pcOnly english} {
266 registry delete HKEY_CLASSES_ROOT\\TclFoobar
267 list [catch {registry type HKEY_CLASSES_ROOT\\TclFoobar val1} msg] $msg
268 } {1 {unable to open key: The system cannot find the file specified.}}
269 test registry-5.2 {GetType} {pcOnly english} {
270 registry set HKEY_CLASSES_ROOT\\TclFoobar
271 list [catch {registry type HKEY_CLASSES_ROOT\\TclFoobar val1} msg] $msg
272 } {1 {unable to get type of value "val1" from key "HKEY_CLASSES_ROOT\TclFoobar": The system cannot find the file specified.}}
273 test registry-5.3 {GetType} {pcOnly} {
274 registry set HKEY_CLASSES_ROOT\\TclFoobar val1 foobar none
275 set result [registry type HKEY_CLASSES_ROOT\\TclFoobar val1]
276 registry delete HKEY_CLASSES_ROOT\\TclFoobar
279 test registry-5.4 {GetType} {pcOnly} {
280 registry set HKEY_CLASSES_ROOT\\TclFoobar val1 foobar
281 set result [registry type HKEY_CLASSES_ROOT\\TclFoobar val1]
282 registry delete HKEY_CLASSES_ROOT\\TclFoobar
285 test registry-5.5 {GetType} {pcOnly} {
286 registry set HKEY_CLASSES_ROOT\\TclFoobar val1 foobar sz
287 set result [registry type HKEY_CLASSES_ROOT\\TclFoobar val1]
288 registry delete HKEY_CLASSES_ROOT\\TclFoobar
291 test registry-5.6 {GetType} {pcOnly} {
292 registry set HKEY_CLASSES_ROOT\\TclFoobar val1 foobar expand_sz
293 set result [registry type HKEY_CLASSES_ROOT\\TclFoobar val1]
294 registry delete HKEY_CLASSES_ROOT\\TclFoobar
297 test registry-5.7 {GetType} {pcOnly} {
298 registry set HKEY_CLASSES_ROOT\\TclFoobar val1 1 binary
299 set result [registry type HKEY_CLASSES_ROOT\\TclFoobar val1]
300 registry delete HKEY_CLASSES_ROOT\\TclFoobar
303 test registry-5.8 {GetType} {pcOnly} {
304 registry set HKEY_CLASSES_ROOT\\TclFoobar val1 1 dword
305 set result [registry type HKEY_CLASSES_ROOT\\TclFoobar val1]
306 registry delete HKEY_CLASSES_ROOT\\TclFoobar
309 test registry-5.9 {GetType} {pcOnly} {
310 registry set HKEY_CLASSES_ROOT\\TclFoobar val1 1 dword_big_endian
311 set result [registry type HKEY_CLASSES_ROOT\\TclFoobar val1]
312 registry delete HKEY_CLASSES_ROOT\\TclFoobar
315 test registry-5.10 {GetType} {pcOnly} {
316 registry set HKEY_CLASSES_ROOT\\TclFoobar val1 1 link
317 set result [registry type HKEY_CLASSES_ROOT\\TclFoobar val1]
318 registry delete HKEY_CLASSES_ROOT\\TclFoobar
321 test registry-5.11 {GetType} {pcOnly} {
322 registry set HKEY_CLASSES_ROOT\\TclFoobar val1 foobar multi_sz
323 set result [registry type HKEY_CLASSES_ROOT\\TclFoobar val1]
324 registry delete HKEY_CLASSES_ROOT\\TclFoobar
327 test registry-5.12 {GetType} {pcOnly} {
328 registry set HKEY_CLASSES_ROOT\\TclFoobar val1 1 resource_list
329 set result [registry type HKEY_CLASSES_ROOT\\TclFoobar val1]
330 registry delete HKEY_CLASSES_ROOT\\TclFoobar
333 test registry-5.13 {GetType: unknown types} {pcOnly} {
334 registry set HKEY_CLASSES_ROOT\\TclFoobar val1 1 24
335 set result [registry type HKEY_CLASSES_ROOT\\TclFoobar val1]
336 registry delete HKEY_CLASSES_ROOT\\TclFoobar
339 test registry-5.14 {GetType: Unicode} {pcOnly} {
340 registry set HKEY_CLASSES_ROOT\\TclFoobar va\u00c7l1 1 24
341 set result [registry type HKEY_CLASSES_ROOT\\TclFoobar va\u00c7l1]
342 registry delete HKEY_CLASSES_ROOT\\TclFoobar
346 test registry-6.1 {GetValue} {pcOnly english} {
347 registry delete HKEY_CLASSES_ROOT\\TclFoobar
348 list [catch {registry get HKEY_CLASSES_ROOT\\TclFoobar val1} msg] $msg
349 } {1 {unable to open key: The system cannot find the file specified.}}
350 test registry-6.2 {GetValue} {pcOnly english} {
351 registry set HKEY_CLASSES_ROOT\\TclFoobar
352 list [catch {registry get HKEY_CLASSES_ROOT\\TclFoobar val1} msg] $msg
353 } {1 {unable to get value "val1" from key "HKEY_CLASSES_ROOT\TclFoobar": The system cannot find the file specified.}}
354 test registry-6.3 {GetValue} {pcOnly} {
355 registry set HKEY_CLASSES_ROOT\\TclFoobar val1 foobar none
356 set result [registry get HKEY_CLASSES_ROOT\\TclFoobar val1]
357 registry delete HKEY_CLASSES_ROOT\\TclFoobar
360 test registry-6.4 {GetValue} {pcOnly} {
361 registry set HKEY_CLASSES_ROOT\\TclFoobar val1 foobar
362 set result [registry get HKEY_CLASSES_ROOT\\TclFoobar val1]
363 registry delete HKEY_CLASSES_ROOT\\TclFoobar
366 test registry-6.5 {GetValue} {pcOnly} {
367 registry set HKEY_CLASSES_ROOT\\TclFoobar val1 foobar sz
368 set result [registry get HKEY_CLASSES_ROOT\\TclFoobar val1]
369 registry delete HKEY_CLASSES_ROOT\\TclFoobar
372 test registry-6.6 {GetValue} {pcOnly} {
373 registry set HKEY_CLASSES_ROOT\\TclFoobar val1 foobar expand_sz
374 set result [registry get HKEY_CLASSES_ROOT\\TclFoobar val1]
375 registry delete HKEY_CLASSES_ROOT\\TclFoobar
378 test registry-6.7 {GetValue} {pcOnly} {
379 registry set HKEY_CLASSES_ROOT\\TclFoobar val1 1 binary
380 set result [registry get HKEY_CLASSES_ROOT\\TclFoobar val1]
381 registry delete HKEY_CLASSES_ROOT\\TclFoobar
384 test registry-6.8 {GetValue} {pcOnly} {
385 registry set HKEY_CLASSES_ROOT\\TclFoobar val1 0x20 dword
386 set result [registry get HKEY_CLASSES_ROOT\\TclFoobar val1]
387 registry delete HKEY_CLASSES_ROOT\\TclFoobar
390 test registry-6.9 {GetValue} {pcOnly} {
391 registry set HKEY_CLASSES_ROOT\\TclFoobar val1 0x20 dword_big_endian
392 set result [registry get HKEY_CLASSES_ROOT\\TclFoobar val1]
393 registry delete HKEY_CLASSES_ROOT\\TclFoobar
396 test registry-6.10 {GetValue} {pcOnly} {
397 registry set HKEY_CLASSES_ROOT\\TclFoobar val1 1 link
398 set result [registry get HKEY_CLASSES_ROOT\\TclFoobar val1]
399 registry delete HKEY_CLASSES_ROOT\\TclFoobar
402 test registry-6.11 {GetValue} {pcOnly} {
403 registry set HKEY_CLASSES_ROOT\\TclFoobar val1 foobar multi_sz
404 set result [registry get HKEY_CLASSES_ROOT\\TclFoobar val1]
405 registry delete HKEY_CLASSES_ROOT\\TclFoobar
408 test registry-6.12 {GetValue} {pcOnly} {
409 registry set HKEY_CLASSES_ROOT\\TclFoobar val1 {foo\ bar baz} multi_sz
410 set result [registry get HKEY_CLASSES_ROOT\\TclFoobar val1]
411 registry delete HKEY_CLASSES_ROOT\\TclFoobar
414 test registry-6.13 {GetValue} {pcOnly} {
415 registry set HKEY_CLASSES_ROOT\\TclFoobar val1 {} multi_sz
416 set result [registry get HKEY_CLASSES_ROOT\\TclFoobar val1]
417 registry delete HKEY_CLASSES_ROOT\\TclFoobar
420 test registry-6.14 {GetValue: truncation of multivalues with null elements} \
422 registry set HKEY_CLASSES_ROOT\\TclFoobar val1 {a {} b} multi_sz
423 set result [registry get HKEY_CLASSES_ROOT\\TclFoobar val1]
424 registry delete HKEY_CLASSES_ROOT\\TclFoobar
427 test registry-6.15 {GetValue} {pcOnly} {
428 registry set HKEY_CLASSES_ROOT\\TclFoobar val1 1 resource_list
429 set result [registry get HKEY_CLASSES_ROOT\\TclFoobar val1]
430 registry delete HKEY_CLASSES_ROOT\\TclFoobar
433 test registry-6.16 {GetValue: unknown types} {pcOnly} {
434 registry set HKEY_CLASSES_ROOT\\TclFoobar val1 1 24
435 set result [registry get HKEY_CLASSES_ROOT\\TclFoobar val1]
436 registry delete HKEY_CLASSES_ROOT\\TclFoobar
439 test registry-6.17 {GetValue: Unicode value names} {pcOnly} {
440 registry set HKEY_CLASSES_ROOT\\TclFoobar val\u00c71 foobar multi_sz
441 set result [registry get HKEY_CLASSES_ROOT\\TclFoobar val\u00c71]
442 registry delete HKEY_CLASSES_ROOT\\TclFoobar
445 test registry-6.18 {GetValue: values with Unicode strings} {pcOnly} {
446 registry set HKEY_CLASSES_ROOT\\TclFoobar val1 {foo ba\u30b7r baz} multi_sz
447 set result [registry get HKEY_CLASSES_ROOT\\TclFoobar val1]
448 registry delete HKEY_CLASSES_ROOT\\TclFoobar
450 } "foo ba\u30b7r baz"
451 test registry-6.19 {GetValue: values with Unicode strings} {pcOnly english} {
452 registry set HKEY_CLASSES_ROOT\\TclFoobar val1 {foo ba\u00c7r baz} multi_sz
453 set result [registry get HKEY_CLASSES_ROOT\\TclFoobar val1]
454 registry delete HKEY_CLASSES_ROOT\\TclFoobar
456 } "foo ba\u00c7r baz"
457 test registry-6.20 {GetValue: values with Unicode strings with embedded nulls} {pcOnly} {
458 registry set HKEY_CLASSES_ROOT\\TclFoobar val1 {foo ba\u0000r baz} multi_sz
459 set result [registry get HKEY_CLASSES_ROOT\\TclFoobar val1]
460 registry delete HKEY_CLASSES_ROOT\\TclFoobar
464 test registry-7.1 {GetValueNames: bad key} {pcOnly english} {
465 registry delete HKEY_CLASSES_ROOT\\TclFoobar
466 list [catch {registry values HKEY_CLASSES_ROOT\\TclFoobar} msg] $msg
467 } {1 {unable to open key: The system cannot find the file specified.}}
468 test registry-7.2 {GetValueNames} {pcOnly} {
469 registry delete HKEY_CLASSES_ROOT\\TclFoobar
470 registry set HKEY_CLASSES_ROOT\\TclFoobar baz foobar
471 set result [registry values HKEY_CLASSES_ROOT\\TclFoobar]
472 registry delete HKEY_CLASSES_ROOT\\TclFoobar
475 test registry-7.3 {GetValueNames} {pcOnly} {
476 registry delete HKEY_CLASSES_ROOT\\TclFoobar
477 registry set HKEY_CLASSES_ROOT\\TclFoobar baz foobar1
478 registry set HKEY_CLASSES_ROOT\\TclFoobar blat foobar2
479 registry set HKEY_CLASSES_ROOT\\TclFoobar {} foobar3
480 set result [lsort [registry values HKEY_CLASSES_ROOT\\TclFoobar]]
481 registry delete HKEY_CLASSES_ROOT\\TclFoobar
484 test registry-7.4 {GetValueNames: remote key} {pcOnly nonPortable english} {
485 registry set \\\\$hostname\\HKEY_CLASSES_ROOT\\TclFoobar baz blat
486 set result [registry values \\\\$hostname\\HKEY_CLASSES_ROOT\\TclFoobar]
487 registry delete \\\\$hostname\\HKEY_CLASSES_ROOT\\TclFoobar
490 test registry-7.5 {GetValueNames: empty key} {pcOnly} {
491 registry delete HKEY_CLASSES_ROOT\\TclFoobar
492 registry set HKEY_CLASSES_ROOT\\TclFoobar
493 set result [registry values HKEY_CLASSES_ROOT\\TclFoobar]
494 registry delete HKEY_CLASSES_ROOT\\TclFoobar
497 test registry-7.6 {GetValueNames: patterns} {pcOnly} {
498 registry delete HKEY_CLASSES_ROOT\\TclFoobar
499 registry set HKEY_CLASSES_ROOT\\TclFoobar baz foobar1
500 registry set HKEY_CLASSES_ROOT\\TclFoobar blat foobar2
501 registry set HKEY_CLASSES_ROOT\\TclFoobar foo foobar3
502 set result [lsort [registry values HKEY_CLASSES_ROOT\\TclFoobar b*]]
503 registry delete HKEY_CLASSES_ROOT\\TclFoobar
506 test registry-7.7 {GetValueNames: names with spaces} {pcOnly} {
507 registry delete HKEY_CLASSES_ROOT\\TclFoobar
508 registry set HKEY_CLASSES_ROOT\\TclFoobar baz\ bar foobar1
509 registry set HKEY_CLASSES_ROOT\\TclFoobar blat foobar2
510 registry set HKEY_CLASSES_ROOT\\TclFoobar foo foobar3
511 set result [lsort [registry values HKEY_CLASSES_ROOT\\TclFoobar b*]]
512 registry delete HKEY_CLASSES_ROOT\\TclFoobar
516 test registry-8.1 {OpenSubKey} {pcOnly nonPortable english} {
517 # This test will only succeed if the current user does not have registry
518 # access on the specified machine.
519 list [catch {registry keys {\\mom\HKEY_LOCAL_MACHINE}} msg] $msg
520 } {1 {unable to open key: Access is denied.}}
521 test registry-8.2 {OpenSubKey} {pcOnly} {
522 registry delete HKEY_CLASSES_ROOT\\TclFoobar
523 registry set HKEY_CLASSES_ROOT\\TclFoobar
524 set result [registry keys HKEY_CLASSES_ROOT TclFoobar]
525 registry delete HKEY_CLASSES_ROOT\\TclFoobar
528 test registry-8.3 {OpenSubKey} {pcOnly english} {
529 registry delete HKEY_CLASSES_ROOT\\TclFoobar
530 list [catch {registry keys HKEY_CLASSES_ROOT\\TclFoobar} msg] $msg
531 } {1 {unable to open key: The system cannot find the file specified.}}
533 test registry-9.1 {ParseKeyName: bad keys} {pcOnly} {
534 list [catch {registry values \\} msg] $msg
535 } "1 {bad key \"\\\": must start with a valid root}"
536 test registry-9.2 {ParseKeyName: bad keys} {pcOnly} {
537 list [catch {registry values \\foobar} msg] $msg
538 } {1 {bad key "\foobar": must start with a valid root}}
539 test registry-9.3 {ParseKeyName: bad keys} {pcOnly} {
540 list [catch {registry values \\\\} msg] $msg
541 } {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}}
542 test registry-9.4 {ParseKeyName: bad keys} {pcOnly} {
543 list [catch {registry values \\\\\\} msg] $msg
544 } {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}}
545 test registry-9.5 {ParseKeyName: bad keys} {pcOnly english} {
546 list [catch {registry values \\\\\\HKEY_CLASSES_ROOT} msg] $msg
547 } {1 {unable to open key: The network address is invalid.}}
548 test registry-9.6 {ParseKeyName: bad keys} {pcOnly} {
549 list [catch {registry values \\\\gaspode} msg] $msg
550 } {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}}
551 test registry-9.7 {ParseKeyName: bad keys} {pcOnly} {
552 list [catch {registry values foobar} msg] $msg
553 } {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}}
554 test registry-9.8 {ParseKeyName: null keys} {pcOnly} {
555 list [catch {registry delete HKEY_CLASSES_ROOT\\} msg] $msg
556 } {1 {bad key: cannot delete root keys}}
557 test registry-9.9 {ParseKeyName: null keys} {pcOnly english} {
558 list [catch {registry keys HKEY_CLASSES_ROOT\\TclFoobar\\baz} msg] $msg
559 } {1 {unable to open key: The system cannot find the file specified.}}
561 test registry-10.1 {RecursiveDeleteKey} {pcOnly} {
562 registry delete HKEY_CLASSES_ROOT\\TclFoobar
563 registry set HKEY_CLASSES_ROOT\\TclFoobar\\test1
564 registry set HKEY_CLASSES_ROOT\\TclFoobar\\test2\\test3
565 registry delete HKEY_CLASSES_ROOT\\TclFoobar
566 set result [registry keys HKEY_CLASSES_ROOT TclFoobar]
569 test registry-10.2 {RecursiveDeleteKey} {pcOnly} {
570 registry delete HKEY_CLASSES_ROOT\\TclFoobar
571 registry set HKEY_CLASSES_ROOT\\TclFoobar\\test1
572 registry set HKEY_CLASSES_ROOT\\TclFoobar\\test2\\test3
573 set result [registry delete HKEY_CLASSES_ROOT\\TclFoobar\\test2\\test4]
574 registry delete HKEY_CLASSES_ROOT\\TclFoobar
578 test registry-11.1 {SetValue: recursive creation} {pcOnly} {
579 registry delete HKEY_CLASSES_ROOT\\TclFoobar
580 registry set HKEY_CLASSES_ROOT\\TclFoobar\\baz blat foobar
581 set result [registry get HKEY_CLASSES_ROOT\\TclFoobar\\baz blat]
583 test registry-11.2 {SetValue: modification} {pcOnly} {
584 registry delete HKEY_CLASSES_ROOT\\TclFoobar
585 registry set HKEY_CLASSES_ROOT\\TclFoobar\\baz blat foobar
586 registry set HKEY_CLASSES_ROOT\\TclFoobar\\baz blat frob
587 set result [registry get HKEY_CLASSES_ROOT\\TclFoobar\\baz blat]
589 test registry-11.3 {SetValue: failure} {pcOnly nonPortable english} {
590 # This test will only succeed if the current user does not have registry
591 # access on the specified machine.
592 list [catch {registry set {\\mom\HKEY_CLASSES_ROOT\TclFoobar} bar foobar} msg] $msg
593 } {1 {unable to open key: Access is denied.}}
595 test registry-12.1 {BroadcastValue} {pcOnly} {
596 list [catch {registry broadcast} msg] $msg
597 } {1 {wrong # args: should be "registry broadcast keyName ?-timeout millisecs?"}}
598 test registry-12.2 {BroadcastValue} {pcOnly} {
599 list [catch {registry broadcast "" -time} msg] $msg
600 } {1 {wrong # args: should be "registry broadcast keyName ?-timeout millisecs?"}}
601 test registry-12.3 {BroadcastValue} {pcOnly} {
602 list [catch {registry broadcast "" - 500} msg] $msg
603 } {1 {wrong # args: should be "registry broadcast keyName ?-timeout millisecs?"}}
604 test registry-12.4 {BroadcastValue} {pcOnly} {
605 list [catch {registry broadcast {Environment}} msg] $msg
607 test registry-12.5 {BroadcastValue} {pcOnly} {
608 list [catch {registry b {}} msg] $msg
613 ::tcltest::cleanupTests
618 # tcl-indent-level: 4