os/persistentdata/persistentstorage/sqlite3api/TEST/TCL/tcldistribution/tests/registry.test
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: