11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
* Public License, either version 2 or 3, which can be found in the file
* LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this
* file.
*/
#include "config.h"
#import "TestsAppDelegate.h"
static OFString *const module = @"OFWindowsRegistryKey";
@implementation TestsAppDelegate (OFWindowsRegistryKeyTests)
- (void)windowsRegistryKeyTests
{
void *pool = objc_autoreleasePoolPush();
OFData *data = [OFData dataWithItems: "abcdef" count: 6];
OFWindowsRegistryKey *softwareKey, *objFWKey;
DWORD type;
TEST(@"+[OFWindowsRegistryKey classesRootKey]",
[OFWindowsRegistryKey classesRootKey])
TEST(@"+[OFWindowsRegistryKey currentConfigKey]",
[OFWindowsRegistryKey currentConfigKey])
TEST(@"+[OFWindowsRegistryKey currentUserKey]",
[OFWindowsRegistryKey currentUserKey])
TEST(@"+[OFWindowsRegistryKey localMachineKey]",
[OFWindowsRegistryKey localMachineKey])
TEST(@"+[OFWindowsRegistryKey usersKey]",
[OFWindowsRegistryKey usersKey])
TEST(@"-[openSubkeyAtPath:accessRights:options:] #1",
(softwareKey = [[OFWindowsRegistryKey currentUserKey]
openSubkeyAtPath: @"Software"
accessRights: KEY_ALL_ACCESS
options: 0]))
EXPECT_EXCEPTION(@"-[openSubkeyAtPath:accessRights:options:] #2",
OFOpenWindowsRegistryKeyFailedException,
[[OFWindowsRegistryKey currentUserKey]
openSubkeyAtPath: @"nonexistent"
accessRights: KEY_ALL_ACCESS
options: 0])
TEST(@"-[createSubkeyAtPath:accessRights:securityAttributes:options:"
@"disposition:]",
(objFWKey = [softwareKey createSubkeyAtPath: @"ObjFW"
accessRights: KEY_ALL_ACCESS
securityAttributes: NULL
options: 0
disposition: NULL]))
TEST(@"-[setData:forValueNamed:type:]",
R([objFWKey setData: data forValueNamed: @"data" type: REG_BINARY]))
TEST(@"-[dataForValueNamed:subkeyPath:flags:type:]",
[[objFWKey dataForValueNamed: @"data" type: &type] isEqual: data] &&
type == REG_BINARY)
TEST(@"-[setString:forValueNamed:type:]",
R([objFWKey setString: @"foobar" forValueNamed: @"string"]) &&
R([objFWKey setString: @"%PATH%;foo"
forValueNamed: @"expand"
type: REG_EXPAND_SZ]))
TEST(@"-[stringForValue:subkeyPath:]",
[[objFWKey stringForValueNamed: @"string"] isEqual: @"foobar"] &&
[[objFWKey stringForValueNamed: @"expand" type: &type]
isEqual: @"%PATH%;foo"] &&
type == REG_EXPAND_SZ)
TEST(@"-[deleteValueNamed:]", R([objFWKey deleteValueNamed: @"data"]))
TEST(@"-[deleteSubkeyAtPath:]",
R([softwareKey deleteSubkeyAtPath: @"ObjFW"]))
objc_autoreleasePoolPop(pool);
}
@end
|
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
|
>
>
>
>
|
>
>
>
>
>
|
>
|
>
>
>
>
>
|
>
>
>
>
>
>
>
>
>
>
>
|
>
>
>
>
>
>
>
>
<
<
|
<
<
|
<
<
|
<
<
<
<
|
<
<
|
<
|
|
<
<
<
<
<
|
>
>
|
<
<
<
<
<
<
<
<
<
|
<
<
<
|
<
|
<
<
<
<
<
<
|
|
<
|
|
<
<
<
<
|
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
* Public License, either version 2 or 3, which can be found in the file
* LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this
* file.
*/
#include "config.h"
#import "ObjFW.h"
#import "ObjFWTest.h"
@interface OFWindowsRegistryKeyTests: OTTestCase
{
OFWindowsRegistryKey *_softwareKey, *_objFWKey;
}
@end
@implementation OFWindowsRegistryKeyTests
- (void)setUp
{
[super setUp];
_softwareKey = [[[OFWindowsRegistryKey currentUserKey]
openSubkeyAtPath: @"Software"
accessRights: KEY_ALL_ACCESS
options: 0] retain];
_objFWKey = [[_softwareKey createSubkeyAtPath: @"ObjFW"
accessRights: KEY_ALL_ACCESS
securityAttributes: NULL
options: 0
disposition: NULL] retain];
}
- (void)tearDown
{
[_softwareKey deleteSubkeyAtPath: @"ObjFW"];
[super tearDown];
}
- (void)dealloc
{
[_softwareKey release];
[_objFWKey release];
[super dealloc];
}
- (void)testClassesRootKey
{
OTAssertEqual([[OFWindowsRegistryKey classesRootKey] class],
[OFWindowsRegistryKey class]);
}
- (void)testCurrentConfigKey
{
OTAssertEqual([[OFWindowsRegistryKey currentConfigKey] class],
[OFWindowsRegistryKey class]);
}
- (void)testCurrentUserKey
{
OTAssertEqual([[OFWindowsRegistryKey currentUserKey] class],
[OFWindowsRegistryKey class]);
}
- (void)testLocalMachineKey
{
OTAssertEqual([[OFWindowsRegistryKey localMachineKey] class],
[OFWindowsRegistryKey class]);
}
- (void)testOpenSubkeyAtPathAccessRightsOptionsThrowsForNonExistentKey
{
OTAssertThrowsSpecific([[OFWindowsRegistryKey currentUserKey]
openSubkeyAtPath: @"nonexistent"
accessRights: KEY_ALL_ACCESS
options: 0], OFOpenWindowsRegistryKeyFailedException);
}
- (void)testSetAndGetData
{
OFData *data = [OFData dataWithItems: "abcdef" count: 6];
DWORD type;
[_objFWKey setData: data forValueNamed: @"data" type: REG_BINARY];
OTAssertEqualObjects([_objFWKey dataForValueNamed: @"data" type: &type],
data);
OTAssertEqual(type, REG_BINARY);
}
- (void)testSetAndGetString
{
DWORD type;
[_objFWKey setString: @"foobar" forValueNamed: @"string"];
OTAssertEqualObjects([_objFWKey stringForValueNamed: @"string"],
@"foobar");
[_objFWKey setString: @"%PATH%;foo"
forValueNamed: @"expand"
type: REG_EXPAND_SZ];
OTAssertEqualObjects([_objFWKey stringForValueNamed: @"expand"
type: &type],
@"%PATH%;foo");
OTAssertEqual(type, REG_EXPAND_SZ);
}
- (void)testDeleteValue
{
[_objFWKey setString: @"foobar" forValueNamed: @"deleteme"];
OTAssertEqualObjects([_objFWKey stringForValueNamed: @"deleteme"],
@"foobar");
[_objFWKey deleteValueNamed: @"deleteme"];
OTAssertNil([_objFWKey stringForValueNamed: @"deleteme"]);
}
@end
|