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