os/persistentdata/persistentstorage/sqlite3api/TEST/TCL/tcldistribution/tests/registry.test
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
     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 
    15 if {[lsearch [namespace children] ::tcltest] == -1} {
    16     package require tcltest 2
    17     namespace import -force ::tcltest::*
    18 }
    19 
    20 if {$tcl_platform(platform) == "windows"} {
    21     if [catch {
    22 	set lib [lindex [glob -directory [file join [pwd] [file dirname \
    23 		[info nameofexecutable]]] tclreg*.dll] 0]
    24 	load $lib registry
    25     }] {
    26 	puts "Unable to find the registry package. Skipping registry tests."
    27 	return
    28     }
    29 }
    30 
    31 # determine the current locale
    32 testConstraint english [expr {[llength [info commands testlocale]]
    33 	&& [string equal [testlocale all ""] "English_United States.1252"]
    34 }]
    35 
    36 set hostname [info hostname]
    37 
    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}}
    44 
    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?"}}
    54 
    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"}}
    67 
    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?"}}
    77 
    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??"}}
    90 
    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"}}
   103 
   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?"}}
   113 
   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
   127 } {}
   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
   133     set result
   134 } {}
   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]
   140     set result
   141 } {}
   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
   149 } {}
   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
   157     set result
   158 } {}
   159 
   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
   167     set result
   168 } test2
   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
   178     set result
   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
   187     set result
   188 } test2
   189 
   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
   199     set result
   200 } {baz}
   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
   205     set result
   206 } {baz}
   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
   212     set result
   213 } {}
   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
   221     set result
   222 } {baz blat}
   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
   230     set result
   231 } {{baz bar} blat}
   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
   239     set result
   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
   248     set result
   249 } "baz\u30b7bar blat"
   250 test registry-4.9 {GetKeyNames: very long key [Bug 1682211]} \
   251     -constraints {pcOnly} \
   252     -setup {
   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
   256     } \
   257     -body {
   258 	lsort [registry keys HKEY_CLASSES_ROOT\\TclFoobar]
   259     } \
   260     -cleanup {
   261 	registry delete HKEY_CLASSES_ROOT\\TclFoobar
   262     } \
   263     -result [list a b[string repeat x 254] c]
   264 
   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
   277     set result
   278 } none
   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
   283     set result
   284 } sz
   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
   289     set result
   290 } sz
   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
   295     set result
   296 } expand_sz
   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
   301     set result
   302 } binary
   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
   307     set result
   308 } dword
   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
   313     set result
   314 } dword_big_endian
   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
   319     set result
   320 } link
   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
   325     set result
   326 } multi_sz
   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
   331     set result
   332 } resource_list
   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
   337     set result
   338 } 24
   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
   343     set result
   344 } 24
   345 
   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
   358     set result
   359 } foobar
   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
   364     set result
   365 } foobar
   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
   370     set result
   371 } foobar
   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
   376     set result
   377 } foobar
   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
   382     set result
   383 } 1
   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
   388     set result
   389 } 32
   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
   394     set result
   395 } 32
   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
   400     set result
   401 } 1
   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
   406     set result
   407 } foobar
   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
   412     set result
   413 } {{foo bar} baz}
   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
   418     set result
   419 } {}
   420 test registry-6.14 {GetValue: truncation of multivalues with null elements} \
   421 	{pcOnly} {
   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
   425     set result
   426 } a
   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
   431     set result
   432 } 1
   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
   437     set result
   438 } 1
   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
   443     set result
   444 } foobar
   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
   449     set result
   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
   455     set result
   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
   461     set result
   462 } "foo ba r baz"
   463 
   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
   473     set result
   474 } baz
   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
   482     set result
   483 } {{} baz blat}
   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
   488     set result
   489 } baz
   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
   495     set result
   496 } {}
   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
   504     set result
   505 } {baz blat}
   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
   513     set result
   514 } {{baz bar} blat}
   515 
   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
   526     set result
   527 } 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.}}
   532 
   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.}}
   560 
   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]
   567     set result
   568 } {}
   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
   575     set result
   576 } {}
   577 
   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]
   582 } foobar
   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]
   588 } frob
   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.}}
   594 
   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
   606 } {0 {1 0}}
   607 test registry-12.5 {BroadcastValue} {pcOnly} {
   608     list [catch {registry b {}} msg] $msg
   609 } {0 {1 0}}
   610 
   611 # cleanup
   612 unset hostname
   613 ::tcltest::cleanupTests
   614 return
   615 
   616 # Local Variables:
   617 # mode: tcl
   618 # tcl-indent-level: 4
   619 # fill-column: 78
   620 # End: