os/persistentdata/persistentstorage/sqlite3api/TEST/TCL/tcldistribution/tests/registry.test
changeset 0 bde4ae8d615e
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/os/persistentdata/persistentstorage/sqlite3api/TEST/TCL/tcldistribution/tests/registry.test	Fri Jun 15 03:10:57 2012 +0200
     1.3 @@ -0,0 +1,620 @@
     1.4 +# registry.test --
     1.5 +#
     1.6 +# This file contains a collection of tests for the registry command.
     1.7 +# Sourcing this file into Tcl runs the tests and generates output for
     1.8 +# errors.  No output means no errors were found.
     1.9 +#
    1.10 +# In order for these tests to run, the registry package must be on the
    1.11 +# auto_path or the registry package must have been loaded already.
    1.12 +#
    1.13 +# Copyright (c) 1997 by Sun Microsystems, Inc.  All rights reserved.
    1.14 +# Copyright (c) 1998-1999 by Scriptics Corporation.
    1.15 +#
    1.16 +# RCS: @(#) $Id: registry.test,v 1.12.2.3 2007/03/17 22:41:05 kennykb Exp $
    1.17 +
    1.18 +if {[lsearch [namespace children] ::tcltest] == -1} {
    1.19 +    package require tcltest 2
    1.20 +    namespace import -force ::tcltest::*
    1.21 +}
    1.22 +
    1.23 +if {$tcl_platform(platform) == "windows"} {
    1.24 +    if [catch {
    1.25 +	set lib [lindex [glob -directory [file join [pwd] [file dirname \
    1.26 +		[info nameofexecutable]]] tclreg*.dll] 0]
    1.27 +	load $lib registry
    1.28 +    }] {
    1.29 +	puts "Unable to find the registry package. Skipping registry tests."
    1.30 +	return
    1.31 +    }
    1.32 +}
    1.33 +
    1.34 +# determine the current locale
    1.35 +testConstraint english [expr {[llength [info commands testlocale]]
    1.36 +	&& [string equal [testlocale all ""] "English_United States.1252"]
    1.37 +}]
    1.38 +
    1.39 +set hostname [info hostname]
    1.40 +
    1.41 +test registry-1.1 {argument parsing for registry command} {pcOnly} {
    1.42 +    list [catch {registry} msg] $msg
    1.43 +} {1 {wrong # args: should be "registry option ?arg arg ...?"}}
    1.44 +test registry-1.2 {argument parsing for registry command} {pcOnly} {
    1.45 +    list [catch {registry foo} msg] $msg
    1.46 +} {1 {bad option "foo": must be broadcast, delete, get, keys, set, type, or values}}
    1.47 +
    1.48 +test registry-1.3 {argument parsing for registry command} {pcOnly} {
    1.49 +    list [catch {registry d} msg] $msg
    1.50 +} {1 {wrong # args: should be "registry delete keyName ?valueName?"}}
    1.51 +test registry-1.4 {argument parsing for registry command} {pcOnly} {
    1.52 +    list [catch {registry delete} msg] $msg
    1.53 +} {1 {wrong # args: should be "registry delete keyName ?valueName?"}}
    1.54 +test registry-1.5 {argument parsing for registry command} {pcOnly} {
    1.55 +    list [catch {registry delete foo bar baz} msg] $msg
    1.56 +} {1 {wrong # args: should be "registry delete keyName ?valueName?"}}
    1.57 +
    1.58 +test registry-1.6 {argument parsing for registry command} {pcOnly} {
    1.59 +    list [catch {registry g} msg] $msg
    1.60 +} {1 {wrong # args: should be "registry get keyName valueName"}}
    1.61 +test registry-1.7 {argument parsing for registry command} {pcOnly} {
    1.62 +    list [catch {registry get} msg] $msg
    1.63 +} {1 {wrong # args: should be "registry get keyName valueName"}}
    1.64 +test registry-1.8 {argument parsing for registry command} {pcOnly} {
    1.65 +    list [catch {registry get foo} msg] $msg
    1.66 +} {1 {wrong # args: should be "registry get keyName valueName"}}
    1.67 +test registry-1.9 {argument parsing for registry command} {pcOnly} {
    1.68 +    list [catch {registry get foo bar baz} msg] $msg
    1.69 +} {1 {wrong # args: should be "registry get keyName valueName"}}
    1.70 +
    1.71 +test registry-1.10 {argument parsing for registry command} {pcOnly} {
    1.72 +    list [catch {registry k} msg] $msg
    1.73 +} {1 {wrong # args: should be "registry keys keyName ?pattern?"}}
    1.74 +test registry-1.11 {argument parsing for registry command} {pcOnly} {
    1.75 +    list [catch {registry keys} msg] $msg
    1.76 +} {1 {wrong # args: should be "registry keys keyName ?pattern?"}}
    1.77 +test registry-1.12 {argument parsing for registry command} {pcOnly} {
    1.78 +    list [catch {registry keys foo bar baz} msg] $msg
    1.79 +} {1 {wrong # args: should be "registry keys keyName ?pattern?"}}
    1.80 +
    1.81 +test registry-1.13 {argument parsing for registry command} {pcOnly} {
    1.82 +    list [catch {registry s} msg] $msg
    1.83 +} {1 {wrong # args: should be "registry set keyName ?valueName data ?type??"}}
    1.84 +test registry-1.14 {argument parsing for registry command} {pcOnly} {
    1.85 +    list [catch {registry set} msg] $msg
    1.86 +} {1 {wrong # args: should be "registry set keyName ?valueName data ?type??"}}
    1.87 +test registry-1.15 {argument parsing for registry command} {pcOnly} {
    1.88 +    list [catch {registry set foo bar} msg] $msg
    1.89 +} {1 {wrong # args: should be "registry set keyName ?valueName data ?type??"}}
    1.90 +test registry-1.16 {argument parsing for registry command} {pcOnly} {
    1.91 +    list [catch {registry set foo bar baz blat gorp} msg] $msg
    1.92 +} {1 {wrong # args: should be "registry set keyName ?valueName data ?type??"}}
    1.93 +
    1.94 +test registry-1.17 {argument parsing for registry command} {pcOnly} {
    1.95 +    list [catch {registry t} msg] $msg
    1.96 +} {1 {wrong # args: should be "registry type keyName valueName"}}
    1.97 +test registry-1.18 {argument parsing for registry command} {pcOnly} {
    1.98 +    list [catch {registry type} msg] $msg
    1.99 +} {1 {wrong # args: should be "registry type keyName valueName"}}
   1.100 +test registry-1.19 {argument parsing for registry command} {pcOnly} {
   1.101 +    list [catch {registry type foo} msg] $msg
   1.102 +} {1 {wrong # args: should be "registry type keyName valueName"}}
   1.103 +test registry-1.20 {argument parsing for registry command} {pcOnly} {
   1.104 +    list [catch {registry type foo bar baz} msg] $msg
   1.105 +} {1 {wrong # args: should be "registry type keyName valueName"}}
   1.106 +
   1.107 +test registry-1.21 {argument parsing for registry command} {pcOnly} {
   1.108 +    list [catch {registry v} msg] $msg
   1.109 +} {1 {wrong # args: should be "registry values keyName ?pattern?"}}
   1.110 +test registry-1.22 {argument parsing for registry command} {pcOnly} {
   1.111 +    list [catch {registry values} msg] $msg
   1.112 +} {1 {wrong # args: should be "registry values keyName ?pattern?"}}
   1.113 +test registry-1.23 {argument parsing for registry command} {pcOnly} {
   1.114 +    list [catch {registry values foo bar baz} msg] $msg
   1.115 +} {1 {wrong # args: should be "registry values keyName ?pattern?"}}
   1.116 +
   1.117 +test registry-2.1 {DeleteKey: bad key} {pcOnly} {
   1.118 +    list [catch {registry delete foo} msg] $msg
   1.119 +} {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}}
   1.120 +test registry-2.2 {DeleteKey: bad key} {pcOnly} {
   1.121 +    list [catch {registry delete HKEY_CLASSES_ROOT} msg] $msg
   1.122 +} {1 {bad key: cannot delete root keys}}
   1.123 +test registry-2.3 {DeleteKey: bad key} {pcOnly} {
   1.124 +    list [catch {registry delete HKEY_CLASSES_ROOT\\} msg] $msg
   1.125 +} {1 {bad key: cannot delete root keys}}
   1.126 +test registry-2.4 {DeleteKey: subkey at root level} {pcOnly} {
   1.127 +    registry set HKEY_CLASSES_ROOT\\TclFoobar
   1.128 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.129 +    registry keys HKEY_CLASSES_ROOT TclFoobar
   1.130 +} {}
   1.131 +test registry-2.5 {DeleteKey: subkey below root level} {pcOnly} {
   1.132 +    registry set HKEY_CLASSES_ROOT\\TclFoobar\\test
   1.133 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar\\test
   1.134 +    set result [registry keys HKEY_CLASSES_ROOT TclFoobar\\test]
   1.135 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.136 +    set result
   1.137 +} {}
   1.138 +test registry-2.6 {DeleteKey: recursive delete} {pcOnly} {
   1.139 +    registry set HKEY_CLASSES_ROOT\\TclFoobar\\test1
   1.140 +    registry set HKEY_CLASSES_ROOT\\TclFoobar\\test2\\test3
   1.141 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.142 +    set result [registry keys HKEY_CLASSES_ROOT TclFoobar]
   1.143 +    set result
   1.144 +} {}
   1.145 +test registry-2.7 {DeleteKey: trailing backslashes} {pcOnly english} {
   1.146 +    registry set HKEY_CLASSES_ROOT\\TclFoobar\\baz
   1.147 +    list [catch {registry delete HKEY_CLASSES_ROOT\\TclFoobar\\} msg] $msg
   1.148 +} {1 {unable to delete key: The configuration registry key is invalid.}}
   1.149 +test registry-2.8 {DeleteKey: failure} {pcOnly} {
   1.150 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.151 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.152 +} {}
   1.153 +test registry-2.9 {DeleteKey: unicode} {pcOnly} {
   1.154 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.155 +    registry set HKEY_CLASSES_ROOT\\TclFoobar\\test\u00c7bar\\a
   1.156 +    registry set HKEY_CLASSES_ROOT\\TclFoobar\\test\u00c7bar\\b
   1.157 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar\\test\u00c7bar
   1.158 +    set result [registry keys HKEY_CLASSES_ROOT\\TclFoobar]
   1.159 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.160 +    set result
   1.161 +} {}
   1.162 +
   1.163 +test registry-3.1 {DeleteValue} {pcOnly} {
   1.164 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.165 +    registry set HKEY_CLASSES_ROOT\\TclFoobar\\baz test1 blort
   1.166 +    registry set HKEY_CLASSES_ROOT\\TclFoobar\\baz test2 blat
   1.167 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar\\baz test1
   1.168 +    set result [registry values HKEY_CLASSES_ROOT\\TclFoobar\\baz]
   1.169 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.170 +    set result
   1.171 +} test2
   1.172 +test registry-3.2 {DeleteValue: bad key} {pcOnly english} {
   1.173 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.174 +    list [catch {registry delete HKEY_CLASSES_ROOT\\TclFoobar test} msg] $msg
   1.175 +} {1 {unable to open key: The system cannot find the file specified.}}
   1.176 +test registry-3.3 {DeleteValue: bad value} {pcOnly english} {
   1.177 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.178 +    registry set HKEY_CLASSES_ROOT\\TclFoobar\\baz test2 blort
   1.179 +    set result [list [catch {registry delete HKEY_CLASSES_ROOT\\TclFoobar test1} msg] $msg]
   1.180 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.181 +    set result
   1.182 +} {1 {unable to delete value "test1" from key "HKEY_CLASSES_ROOT\TclFoobar": The system cannot find the file specified.}}
   1.183 +test registry-3.4 {DeleteValue: Unicode} {pcOnly} {
   1.184 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.185 +    registry set HKEY_CLASSES_ROOT\\TclFoobar\\\u00c7baz \u00c7test1 blort
   1.186 +    registry set HKEY_CLASSES_ROOT\\TclFoobar\\\u00c7baz test2 blat
   1.187 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar\\\u00c7baz \u00c7test1
   1.188 +    set result [registry values HKEY_CLASSES_ROOT\\TclFoobar\\\u00c7baz]
   1.189 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.190 +    set result
   1.191 +} test2
   1.192 +
   1.193 +test registry-4.1 {GetKeyNames: bad key} {pcOnly english} {
   1.194 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.195 +    list [catch {registry keys HKEY_CLASSES_ROOT\\TclFoobar} msg] $msg
   1.196 +} {1 {unable to open key: The system cannot find the file specified.}}
   1.197 +test registry-4.2 {GetKeyNames} {pcOnly} {
   1.198 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.199 +    registry set HKEY_CLASSES_ROOT\\TclFoobar\\baz
   1.200 +    set result [registry keys HKEY_CLASSES_ROOT\\TclFoobar]
   1.201 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.202 +    set result
   1.203 +} {baz}
   1.204 +test registry-4.3 {GetKeyNames: remote key} {pcOnly nonPortable english} {
   1.205 +    registry set \\\\$hostname\\HKEY_CLASSES_ROOT\\TclFoobar\\baz
   1.206 +    set result [registry keys \\\\gaspode\\HKEY_CLASSES_ROOT\\TclFoobar]
   1.207 +    registry delete \\\\$hostname\\HKEY_CLASSES_ROOT\\TclFoobar
   1.208 +    set result
   1.209 +} {baz}
   1.210 +test registry-4.4 {GetKeyNames: empty key} {pcOnly} {
   1.211 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.212 +    registry set HKEY_CLASSES_ROOT\\TclFoobar
   1.213 +    set result [registry keys HKEY_CLASSES_ROOT\\TclFoobar]
   1.214 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.215 +    set result
   1.216 +} {}
   1.217 +test registry-4.5 {GetKeyNames: patterns} {pcOnly} {
   1.218 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.219 +    registry set HKEY_CLASSES_ROOT\\TclFoobar\\baz
   1.220 +    registry set HKEY_CLASSES_ROOT\\TclFoobar\\blat
   1.221 +    registry set HKEY_CLASSES_ROOT\\TclFoobar\\foo
   1.222 +    set result [lsort [registry keys HKEY_CLASSES_ROOT\\TclFoobar b*]]
   1.223 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.224 +    set result
   1.225 +} {baz blat}
   1.226 +test registry-4.6 {GetKeyNames: names with spaces} {pcOnly} {
   1.227 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.228 +    registry set HKEY_CLASSES_ROOT\\TclFoobar\\baz\ bar
   1.229 +    registry set HKEY_CLASSES_ROOT\\TclFoobar\\blat
   1.230 +    registry set HKEY_CLASSES_ROOT\\TclFoobar\\foo
   1.231 +    set result [lsort [registry keys HKEY_CLASSES_ROOT\\TclFoobar b*]]
   1.232 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.233 +    set result
   1.234 +} {{baz bar} blat}
   1.235 +test registry-4.7 {GetKeyNames: Unicode} {pcOnly english} {
   1.236 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.237 +    registry set HKEY_CLASSES_ROOT\\TclFoobar\\baz\u00c7bar
   1.238 +    registry set HKEY_CLASSES_ROOT\\TclFoobar\\blat
   1.239 +    registry set HKEY_CLASSES_ROOT\\TclFoobar\\foo
   1.240 +    set result [lsort [registry keys HKEY_CLASSES_ROOT\\TclFoobar b*]]
   1.241 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.242 +    set result
   1.243 +} "baz\u00c7bar blat"
   1.244 +test registry-4.8 {GetKeyNames: Unicode} {pcOnly} {
   1.245 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.246 +    registry set HKEY_CLASSES_ROOT\\TclFoobar\\baz\u30b7bar
   1.247 +    registry set HKEY_CLASSES_ROOT\\TclFoobar\\blat
   1.248 +    registry set HKEY_CLASSES_ROOT\\TclFoobar\\foo
   1.249 +    set result [lsort [registry keys HKEY_CLASSES_ROOT\\TclFoobar b*]]
   1.250 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.251 +    set result
   1.252 +} "baz\u30b7bar blat"
   1.253 +test registry-4.9 {GetKeyNames: very long key [Bug 1682211]} \
   1.254 +    -constraints {pcOnly} \
   1.255 +    -setup {
   1.256 +	registry set HKEY_CLASSES_ROOT\\TclFoobar\\a
   1.257 +	registry set HKEY_CLASSES_ROOT\\TclFoobar\\b[string repeat x 254]
   1.258 +	registry set HKEY_CLASSES_ROOT\\TclFoobar\\c
   1.259 +    } \
   1.260 +    -body {
   1.261 +	lsort [registry keys HKEY_CLASSES_ROOT\\TclFoobar]
   1.262 +    } \
   1.263 +    -cleanup {
   1.264 +	registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.265 +    } \
   1.266 +    -result [list a b[string repeat x 254] c]
   1.267 +
   1.268 +test registry-5.1 {GetType} {pcOnly english} {
   1.269 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.270 +    list [catch {registry type HKEY_CLASSES_ROOT\\TclFoobar val1} msg] $msg
   1.271 +} {1 {unable to open key: The system cannot find the file specified.}}
   1.272 +test registry-5.2 {GetType} {pcOnly english} {
   1.273 +    registry set HKEY_CLASSES_ROOT\\TclFoobar
   1.274 +    list [catch {registry type HKEY_CLASSES_ROOT\\TclFoobar val1} msg] $msg
   1.275 +} {1 {unable to get type of value "val1" from key "HKEY_CLASSES_ROOT\TclFoobar": The system cannot find the file specified.}}
   1.276 +test registry-5.3 {GetType} {pcOnly} {
   1.277 +    registry set HKEY_CLASSES_ROOT\\TclFoobar val1 foobar none
   1.278 +    set result [registry type HKEY_CLASSES_ROOT\\TclFoobar val1]
   1.279 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.280 +    set result
   1.281 +} none
   1.282 +test registry-5.4 {GetType} {pcOnly} {
   1.283 +    registry set HKEY_CLASSES_ROOT\\TclFoobar val1 foobar
   1.284 +    set result [registry type HKEY_CLASSES_ROOT\\TclFoobar val1]
   1.285 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.286 +    set result
   1.287 +} sz
   1.288 +test registry-5.5 {GetType} {pcOnly} {
   1.289 +    registry set HKEY_CLASSES_ROOT\\TclFoobar val1 foobar sz
   1.290 +    set result [registry type HKEY_CLASSES_ROOT\\TclFoobar val1]
   1.291 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.292 +    set result
   1.293 +} sz
   1.294 +test registry-5.6 {GetType} {pcOnly} {
   1.295 +    registry set HKEY_CLASSES_ROOT\\TclFoobar val1 foobar expand_sz
   1.296 +    set result [registry type HKEY_CLASSES_ROOT\\TclFoobar val1]
   1.297 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.298 +    set result
   1.299 +} expand_sz
   1.300 +test registry-5.7 {GetType} {pcOnly} {
   1.301 +    registry set HKEY_CLASSES_ROOT\\TclFoobar val1 1 binary
   1.302 +    set result [registry type HKEY_CLASSES_ROOT\\TclFoobar val1]
   1.303 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.304 +    set result
   1.305 +} binary
   1.306 +test registry-5.8 {GetType} {pcOnly} {
   1.307 +    registry set HKEY_CLASSES_ROOT\\TclFoobar val1 1 dword
   1.308 +    set result [registry type HKEY_CLASSES_ROOT\\TclFoobar val1]
   1.309 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.310 +    set result
   1.311 +} dword
   1.312 +test registry-5.9 {GetType} {pcOnly} {
   1.313 +    registry set HKEY_CLASSES_ROOT\\TclFoobar val1 1 dword_big_endian
   1.314 +    set result [registry type HKEY_CLASSES_ROOT\\TclFoobar val1]
   1.315 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.316 +    set result
   1.317 +} dword_big_endian
   1.318 +test registry-5.10 {GetType} {pcOnly} {
   1.319 +    registry set HKEY_CLASSES_ROOT\\TclFoobar val1 1 link
   1.320 +    set result [registry type HKEY_CLASSES_ROOT\\TclFoobar val1]
   1.321 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.322 +    set result
   1.323 +} link
   1.324 +test registry-5.11 {GetType} {pcOnly} {
   1.325 +    registry set HKEY_CLASSES_ROOT\\TclFoobar val1 foobar multi_sz
   1.326 +    set result [registry type HKEY_CLASSES_ROOT\\TclFoobar val1]
   1.327 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.328 +    set result
   1.329 +} multi_sz
   1.330 +test registry-5.12 {GetType} {pcOnly} {
   1.331 +    registry set HKEY_CLASSES_ROOT\\TclFoobar val1 1 resource_list
   1.332 +    set result [registry type HKEY_CLASSES_ROOT\\TclFoobar val1]
   1.333 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.334 +    set result
   1.335 +} resource_list
   1.336 +test registry-5.13 {GetType: unknown types} {pcOnly} {
   1.337 +    registry set HKEY_CLASSES_ROOT\\TclFoobar val1 1 24
   1.338 +    set result [registry type HKEY_CLASSES_ROOT\\TclFoobar val1]
   1.339 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.340 +    set result
   1.341 +} 24
   1.342 +test registry-5.14 {GetType: Unicode} {pcOnly} {
   1.343 +    registry set HKEY_CLASSES_ROOT\\TclFoobar va\u00c7l1 1 24
   1.344 +    set result [registry type HKEY_CLASSES_ROOT\\TclFoobar va\u00c7l1]
   1.345 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.346 +    set result
   1.347 +} 24
   1.348 +
   1.349 +test registry-6.1 {GetValue} {pcOnly english} {
   1.350 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.351 +    list [catch {registry get HKEY_CLASSES_ROOT\\TclFoobar val1} msg] $msg
   1.352 +} {1 {unable to open key: The system cannot find the file specified.}}
   1.353 +test registry-6.2 {GetValue} {pcOnly english} {
   1.354 +    registry set HKEY_CLASSES_ROOT\\TclFoobar
   1.355 +    list [catch {registry get HKEY_CLASSES_ROOT\\TclFoobar val1} msg] $msg
   1.356 +} {1 {unable to get value "val1" from key "HKEY_CLASSES_ROOT\TclFoobar": The system cannot find the file specified.}}
   1.357 +test registry-6.3 {GetValue} {pcOnly} {
   1.358 +    registry set HKEY_CLASSES_ROOT\\TclFoobar val1 foobar none
   1.359 +    set result [registry get HKEY_CLASSES_ROOT\\TclFoobar val1]
   1.360 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.361 +    set result
   1.362 +} foobar
   1.363 +test registry-6.4 {GetValue} {pcOnly} {
   1.364 +    registry set HKEY_CLASSES_ROOT\\TclFoobar val1 foobar
   1.365 +    set result [registry get HKEY_CLASSES_ROOT\\TclFoobar val1]
   1.366 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.367 +    set result
   1.368 +} foobar
   1.369 +test registry-6.5 {GetValue} {pcOnly} {
   1.370 +    registry set HKEY_CLASSES_ROOT\\TclFoobar val1 foobar sz
   1.371 +    set result [registry get HKEY_CLASSES_ROOT\\TclFoobar val1]
   1.372 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.373 +    set result
   1.374 +} foobar
   1.375 +test registry-6.6 {GetValue} {pcOnly} {
   1.376 +    registry set HKEY_CLASSES_ROOT\\TclFoobar val1 foobar expand_sz
   1.377 +    set result [registry get HKEY_CLASSES_ROOT\\TclFoobar val1]
   1.378 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.379 +    set result
   1.380 +} foobar
   1.381 +test registry-6.7 {GetValue} {pcOnly} {
   1.382 +    registry set HKEY_CLASSES_ROOT\\TclFoobar val1 1 binary
   1.383 +    set result [registry get HKEY_CLASSES_ROOT\\TclFoobar val1]
   1.384 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.385 +    set result
   1.386 +} 1
   1.387 +test registry-6.8 {GetValue} {pcOnly} {
   1.388 +    registry set HKEY_CLASSES_ROOT\\TclFoobar val1 0x20 dword
   1.389 +    set result [registry get HKEY_CLASSES_ROOT\\TclFoobar val1]
   1.390 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.391 +    set result
   1.392 +} 32
   1.393 +test registry-6.9 {GetValue} {pcOnly} {
   1.394 +    registry set HKEY_CLASSES_ROOT\\TclFoobar val1 0x20 dword_big_endian
   1.395 +    set result [registry get HKEY_CLASSES_ROOT\\TclFoobar val1]
   1.396 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.397 +    set result
   1.398 +} 32
   1.399 +test registry-6.10 {GetValue} {pcOnly} {
   1.400 +    registry set HKEY_CLASSES_ROOT\\TclFoobar val1 1 link
   1.401 +    set result [registry get HKEY_CLASSES_ROOT\\TclFoobar val1]
   1.402 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.403 +    set result
   1.404 +} 1
   1.405 +test registry-6.11 {GetValue} {pcOnly} {
   1.406 +    registry set HKEY_CLASSES_ROOT\\TclFoobar val1 foobar multi_sz
   1.407 +    set result [registry get HKEY_CLASSES_ROOT\\TclFoobar val1]
   1.408 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.409 +    set result
   1.410 +} foobar
   1.411 +test registry-6.12 {GetValue} {pcOnly} {
   1.412 +    registry set HKEY_CLASSES_ROOT\\TclFoobar val1 {foo\ bar baz} multi_sz
   1.413 +    set result [registry get HKEY_CLASSES_ROOT\\TclFoobar val1]
   1.414 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.415 +    set result
   1.416 +} {{foo bar} baz}
   1.417 +test registry-6.13 {GetValue} {pcOnly} {
   1.418 +    registry set HKEY_CLASSES_ROOT\\TclFoobar val1 {} multi_sz
   1.419 +    set result [registry get HKEY_CLASSES_ROOT\\TclFoobar val1]
   1.420 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.421 +    set result
   1.422 +} {}
   1.423 +test registry-6.14 {GetValue: truncation of multivalues with null elements} \
   1.424 +	{pcOnly} {
   1.425 +    registry set HKEY_CLASSES_ROOT\\TclFoobar val1 {a {} b} multi_sz
   1.426 +    set result [registry get HKEY_CLASSES_ROOT\\TclFoobar val1]
   1.427 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.428 +    set result
   1.429 +} a
   1.430 +test registry-6.15 {GetValue} {pcOnly} {
   1.431 +    registry set HKEY_CLASSES_ROOT\\TclFoobar val1 1 resource_list
   1.432 +    set result [registry get HKEY_CLASSES_ROOT\\TclFoobar val1]
   1.433 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.434 +    set result
   1.435 +} 1
   1.436 +test registry-6.16 {GetValue: unknown types} {pcOnly} {
   1.437 +    registry set HKEY_CLASSES_ROOT\\TclFoobar val1 1 24
   1.438 +    set result [registry get HKEY_CLASSES_ROOT\\TclFoobar val1]
   1.439 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.440 +    set result
   1.441 +} 1
   1.442 +test registry-6.17 {GetValue: Unicode value names} {pcOnly} {
   1.443 +    registry set HKEY_CLASSES_ROOT\\TclFoobar val\u00c71 foobar multi_sz
   1.444 +    set result [registry get HKEY_CLASSES_ROOT\\TclFoobar val\u00c71]
   1.445 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.446 +    set result
   1.447 +} foobar
   1.448 +test registry-6.18 {GetValue: values with Unicode strings} {pcOnly} {
   1.449 +    registry set HKEY_CLASSES_ROOT\\TclFoobar val1 {foo ba\u30b7r baz} multi_sz
   1.450 +    set result [registry get HKEY_CLASSES_ROOT\\TclFoobar val1]
   1.451 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.452 +    set result
   1.453 +} "foo ba\u30b7r baz"
   1.454 +test registry-6.19 {GetValue: values with Unicode strings} {pcOnly english} {
   1.455 +    registry set HKEY_CLASSES_ROOT\\TclFoobar val1 {foo ba\u00c7r baz} multi_sz
   1.456 +    set result [registry get HKEY_CLASSES_ROOT\\TclFoobar val1]
   1.457 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.458 +    set result
   1.459 +} "foo ba\u00c7r baz"
   1.460 +test registry-6.20 {GetValue: values with Unicode strings with embedded nulls} {pcOnly} {
   1.461 +    registry set HKEY_CLASSES_ROOT\\TclFoobar val1 {foo ba\u0000r baz} multi_sz
   1.462 +    set result [registry get HKEY_CLASSES_ROOT\\TclFoobar val1]
   1.463 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.464 +    set result
   1.465 +} "foo ba r baz"
   1.466 +
   1.467 +test registry-7.1 {GetValueNames: bad key} {pcOnly english} {
   1.468 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.469 +    list [catch {registry values HKEY_CLASSES_ROOT\\TclFoobar} msg] $msg
   1.470 +} {1 {unable to open key: The system cannot find the file specified.}}
   1.471 +test registry-7.2 {GetValueNames} {pcOnly} {
   1.472 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.473 +    registry set HKEY_CLASSES_ROOT\\TclFoobar baz foobar
   1.474 +    set result [registry values HKEY_CLASSES_ROOT\\TclFoobar]
   1.475 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.476 +    set result
   1.477 +} baz
   1.478 +test registry-7.3 {GetValueNames} {pcOnly} {
   1.479 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.480 +    registry set HKEY_CLASSES_ROOT\\TclFoobar baz foobar1
   1.481 +    registry set HKEY_CLASSES_ROOT\\TclFoobar blat foobar2
   1.482 +    registry set HKEY_CLASSES_ROOT\\TclFoobar {} foobar3
   1.483 +    set result [lsort [registry values HKEY_CLASSES_ROOT\\TclFoobar]]
   1.484 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.485 +    set result
   1.486 +} {{} baz blat}
   1.487 +test registry-7.4 {GetValueNames: remote key} {pcOnly nonPortable english} {
   1.488 +    registry set \\\\$hostname\\HKEY_CLASSES_ROOT\\TclFoobar baz blat
   1.489 +    set result [registry values \\\\$hostname\\HKEY_CLASSES_ROOT\\TclFoobar]
   1.490 +    registry delete \\\\$hostname\\HKEY_CLASSES_ROOT\\TclFoobar
   1.491 +    set result
   1.492 +} baz
   1.493 +test registry-7.5 {GetValueNames: empty key} {pcOnly} {
   1.494 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.495 +    registry set HKEY_CLASSES_ROOT\\TclFoobar
   1.496 +    set result [registry values HKEY_CLASSES_ROOT\\TclFoobar]
   1.497 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.498 +    set result
   1.499 +} {}
   1.500 +test registry-7.6 {GetValueNames: patterns} {pcOnly} {
   1.501 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.502 +    registry set HKEY_CLASSES_ROOT\\TclFoobar baz foobar1
   1.503 +    registry set HKEY_CLASSES_ROOT\\TclFoobar blat foobar2
   1.504 +    registry set HKEY_CLASSES_ROOT\\TclFoobar foo foobar3
   1.505 +    set result [lsort [registry values HKEY_CLASSES_ROOT\\TclFoobar b*]]
   1.506 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.507 +    set result
   1.508 +} {baz blat}
   1.509 +test registry-7.7 {GetValueNames: names with spaces} {pcOnly} {
   1.510 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.511 +    registry set HKEY_CLASSES_ROOT\\TclFoobar baz\ bar foobar1
   1.512 +    registry set HKEY_CLASSES_ROOT\\TclFoobar blat foobar2
   1.513 +    registry set HKEY_CLASSES_ROOT\\TclFoobar foo foobar3
   1.514 +    set result [lsort [registry values HKEY_CLASSES_ROOT\\TclFoobar b*]]
   1.515 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.516 +    set result
   1.517 +} {{baz bar} blat}
   1.518 +
   1.519 +test registry-8.1 {OpenSubKey} {pcOnly nonPortable english} {
   1.520 +    # This test will only succeed if the current user does not have registry
   1.521 +    # access on the specified machine.
   1.522 +    list [catch {registry keys {\\mom\HKEY_LOCAL_MACHINE}} msg] $msg
   1.523 +} {1 {unable to open key: Access is denied.}}
   1.524 +test registry-8.2 {OpenSubKey} {pcOnly} {
   1.525 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.526 +    registry set HKEY_CLASSES_ROOT\\TclFoobar
   1.527 +    set result [registry keys HKEY_CLASSES_ROOT TclFoobar]
   1.528 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.529 +    set result
   1.530 +} TclFoobar
   1.531 +test registry-8.3 {OpenSubKey} {pcOnly english} {
   1.532 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.533 +    list [catch {registry keys HKEY_CLASSES_ROOT\\TclFoobar} msg] $msg
   1.534 +} {1 {unable to open key: The system cannot find the file specified.}}
   1.535 +
   1.536 +test registry-9.1 {ParseKeyName: bad keys} {pcOnly} {
   1.537 +    list [catch {registry values \\} msg] $msg
   1.538 +} "1 {bad key \"\\\": must start with a valid root}"
   1.539 +test registry-9.2 {ParseKeyName: bad keys} {pcOnly} {
   1.540 +    list [catch {registry values \\foobar} msg] $msg
   1.541 +} {1 {bad key "\foobar": must start with a valid root}}
   1.542 +test registry-9.3 {ParseKeyName: bad keys} {pcOnly} {
   1.543 +    list [catch {registry values \\\\} msg] $msg
   1.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}}
   1.545 +test registry-9.4 {ParseKeyName: bad keys} {pcOnly} {
   1.546 +    list [catch {registry values \\\\\\} msg] $msg
   1.547 +} {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}}
   1.548 +test registry-9.5 {ParseKeyName: bad keys} {pcOnly english} {
   1.549 +    list [catch {registry values \\\\\\HKEY_CLASSES_ROOT} msg] $msg
   1.550 +} {1 {unable to open key: The network address is invalid.}}
   1.551 +test registry-9.6 {ParseKeyName: bad keys} {pcOnly} {
   1.552 +    list [catch {registry values \\\\gaspode} msg] $msg
   1.553 +} {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}}
   1.554 +test registry-9.7 {ParseKeyName: bad keys} {pcOnly} {
   1.555 +    list [catch {registry values foobar} msg] $msg
   1.556 +} {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}}
   1.557 +test registry-9.8 {ParseKeyName: null keys} {pcOnly} {
   1.558 +    list [catch {registry delete HKEY_CLASSES_ROOT\\} msg] $msg
   1.559 +} {1 {bad key: cannot delete root keys}}
   1.560 +test registry-9.9 {ParseKeyName: null keys} {pcOnly english} {
   1.561 +    list [catch {registry keys HKEY_CLASSES_ROOT\\TclFoobar\\baz} msg] $msg
   1.562 +} {1 {unable to open key: The system cannot find the file specified.}}
   1.563 +
   1.564 +test registry-10.1 {RecursiveDeleteKey} {pcOnly} {
   1.565 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.566 +    registry set HKEY_CLASSES_ROOT\\TclFoobar\\test1
   1.567 +    registry set HKEY_CLASSES_ROOT\\TclFoobar\\test2\\test3
   1.568 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.569 +    set result [registry keys HKEY_CLASSES_ROOT TclFoobar]
   1.570 +    set result
   1.571 +} {}
   1.572 +test registry-10.2 {RecursiveDeleteKey} {pcOnly} {
   1.573 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.574 +    registry set HKEY_CLASSES_ROOT\\TclFoobar\\test1
   1.575 +    registry set HKEY_CLASSES_ROOT\\TclFoobar\\test2\\test3
   1.576 +    set result [registry delete HKEY_CLASSES_ROOT\\TclFoobar\\test2\\test4]
   1.577 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.578 +    set result
   1.579 +} {}
   1.580 +
   1.581 +test registry-11.1 {SetValue: recursive creation} {pcOnly} {
   1.582 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.583 +    registry set HKEY_CLASSES_ROOT\\TclFoobar\\baz blat foobar
   1.584 +    set result [registry get HKEY_CLASSES_ROOT\\TclFoobar\\baz blat]
   1.585 +} foobar
   1.586 +test registry-11.2 {SetValue: modification} {pcOnly} {
   1.587 +    registry delete HKEY_CLASSES_ROOT\\TclFoobar
   1.588 +    registry set HKEY_CLASSES_ROOT\\TclFoobar\\baz blat foobar
   1.589 +    registry set HKEY_CLASSES_ROOT\\TclFoobar\\baz blat frob
   1.590 +    set result [registry get HKEY_CLASSES_ROOT\\TclFoobar\\baz blat]
   1.591 +} frob
   1.592 +test registry-11.3 {SetValue: failure} {pcOnly nonPortable english} {
   1.593 +    # This test will only succeed if the current user does not have registry
   1.594 +    # access on the specified machine.
   1.595 +    list [catch {registry set {\\mom\HKEY_CLASSES_ROOT\TclFoobar} bar foobar} msg] $msg
   1.596 +} {1 {unable to open key: Access is denied.}}
   1.597 +
   1.598 +test registry-12.1 {BroadcastValue} {pcOnly} {
   1.599 +    list [catch {registry broadcast} msg] $msg
   1.600 +} {1 {wrong # args: should be "registry broadcast keyName ?-timeout millisecs?"}}
   1.601 +test registry-12.2 {BroadcastValue} {pcOnly} {
   1.602 +    list [catch {registry broadcast "" -time} msg] $msg
   1.603 +} {1 {wrong # args: should be "registry broadcast keyName ?-timeout millisecs?"}}
   1.604 +test registry-12.3 {BroadcastValue} {pcOnly} {
   1.605 +    list [catch {registry broadcast "" - 500} msg] $msg
   1.606 +} {1 {wrong # args: should be "registry broadcast keyName ?-timeout millisecs?"}}
   1.607 +test registry-12.4 {BroadcastValue} {pcOnly} {
   1.608 +    list [catch {registry broadcast {Environment}} msg] $msg
   1.609 +} {0 {1 0}}
   1.610 +test registry-12.5 {BroadcastValue} {pcOnly} {
   1.611 +    list [catch {registry b {}} msg] $msg
   1.612 +} {0 {1 0}}
   1.613 +
   1.614 +# cleanup
   1.615 +unset hostname
   1.616 +::tcltest::cleanupTests
   1.617 +return
   1.618 +
   1.619 +# Local Variables:
   1.620 +# mode: tcl
   1.621 +# tcl-indent-level: 4
   1.622 +# fill-column: 78
   1.623 +# End: