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
|
static OFString *url_str = @"ht%3atp://us%3Aer:p%40w@ho%3Ast:1234/"
@"pa%3Fth?que%23ry#frag%23ment";
@implementation TestsAppDelegate (OFURLTests)
- (void)URLTests
{
void *pool = objc_autoreleasePoolPush();
OFURL *u1, *u2, *u3, *u4, *u5;
OFMutableURL *mu;
TEST(@"+[URLWithString:]",
R(u1 = [OFURL URLWithString: url_str]) &&
R(u2 = [OFURL URLWithString: @"http://foo:80"]) &&
R(u3 = [OFURL URLWithString: @"http://bar/"]) &&
R(u4 = [OFURL URLWithString: @"file:///etc/passwd"]) &&
R(u5 = [OFURL URLWithString: @"http://foo/bar/qux/foo%2fbar"]))
EXPECT_EXCEPTION(@"+[URLWithString:] fails with invalid characters #1",
OFInvalidFormatException,
[OFURL URLWithString: @"ht,tp://foo"])
EXPECT_EXCEPTION(@"+[URLWithString:] fails with invalid characters #2",
OFInvalidFormatException,
[OFURL URLWithString: @"http://f`oo"])
EXPECT_EXCEPTION(@"+[URLWithString:] fails with invalid characters #3",
OFInvalidFormatException,
[OFURL URLWithString: @"http://foo/`"])
EXPECT_EXCEPTION(@"+[URLWithString:] fails with invalid characters #4",
OFInvalidFormatException,
[OFURL URLWithString: @"http://foo/foo?`"])
EXPECT_EXCEPTION(@"+[URLWithString:] fails with invalid characters #5",
OFInvalidFormatException,
[OFURL URLWithString: @"http://foo/foo?foo#`"])
TEST(@"+[URLWithString:relativeToURL:]",
[[[OFURL URLWithString: @"/foo"
relativeToURL: u1] string] isEqual:
@"ht%3atp://us%3Aer:p%40w@ho%3Ast:1234/foo"] &&
[[[OFURL URLWithString: @"foo/bar?q"
relativeToURL: [OFURL URLWithString: @"http://h/qux/quux"]]
|
|
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
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
|
static OFString *url_str = @"ht%3atp://us%3Aer:p%40w@ho%3Ast:1234/"
@"pa%3Fth?que%23ry#frag%23ment";
@implementation TestsAppDelegate (OFURLTests)
- (void)URLTests
{
void *pool = objc_autoreleasePoolPush();
OFURL *u1, *u2, *u3, *u4, *u5, *u6, *u7;
OFMutableURL *mu;
TEST(@"+[URLWithString:]",
R(u1 = [OFURL URLWithString: url_str]) &&
R(u2 = [OFURL URLWithString: @"http://foo:80"]) &&
R(u3 = [OFURL URLWithString: @"http://bar/"]) &&
R(u4 = [OFURL URLWithString: @"file:///etc/passwd"]) &&
R(u5 = [OFURL URLWithString: @"http://foo/bar/qux/foo%2fbar"]) &&
R(u6 = [OFURL URLWithString: @"https://[12:34::56:abcd]/"]) &&
R(u7 = [OFURL URLWithString: @"https://[12:34::56:abcd]:234/"]))
EXPECT_EXCEPTION(@"+[URLWithString:] fails with invalid characters #1",
OFInvalidFormatException,
[OFURL URLWithString: @"ht,tp://foo"])
EXPECT_EXCEPTION(@"+[URLWithString:] fails with invalid characters #2",
OFInvalidFormatException,
[OFURL URLWithString: @"http://f`oo"])
EXPECT_EXCEPTION(@"+[URLWithString:] fails with invalid characters #3",
OFInvalidFormatException,
[OFURL URLWithString: @"http://foo/`"])
EXPECT_EXCEPTION(@"+[URLWithString:] fails with invalid characters #4",
OFInvalidFormatException,
[OFURL URLWithString: @"http://foo/foo?`"])
EXPECT_EXCEPTION(@"+[URLWithString:] fails with invalid characters #5",
OFInvalidFormatException,
[OFURL URLWithString: @"http://foo/foo?foo#`"])
EXPECT_EXCEPTION(@"+[URLWithString:] fails with invalid characters #6",
OFInvalidFormatException,
[OFURL URLWithString: @"https://[g]/"])
EXPECT_EXCEPTION(@"+[URLWithString:] fails with invalid characters #7",
OFInvalidFormatException,
[OFURL URLWithString: @"https://[f]:/"])
EXPECT_EXCEPTION(@"+[URLWithString:] fails with invalid characters #8",
OFInvalidFormatException,
[OFURL URLWithString: @"https://[f]:f/"])
TEST(@"+[URLWithString:relativeToURL:]",
[[[OFURL URLWithString: @"/foo"
relativeToURL: u1] string] isEqual:
@"ht%3atp://us%3Aer:p%40w@ho%3Ast:1234/foo"] &&
[[[OFURL URLWithString: @"foo/bar?q"
relativeToURL: [OFURL URLWithString: @"http://h/qux/quux"]]
|
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
|
TEST(@"-[scheme]",
[u1.scheme isEqual: @"ht:tp"] && [u4.scheme isEqual: @"file"])
TEST(@"-[user]", [u1.user isEqual: @"us:er"] && u4.user == nil)
TEST(@"-[password]",
[u1.password isEqual: @"p@w"] && u4.password == nil)
TEST(@"-[host]", [u1.host isEqual: @"ho:st"] && [u4 port] == nil)
TEST(@"-[port]", [u1.port isEqual: [OFNumber numberWithUInt16: 1234]])
TEST(@"-[path]",
[u1.path isEqual: @"/pa?th"] && [u4.path isEqual: @"/etc/passwd"])
TEST(@"-[pathComponents]",
[u1.pathComponents isEqual:
[OFArray arrayWithObjects: @"/", @"pa?th", nil]] &&
[u4.pathComponents isEqual:
[OFArray arrayWithObjects: @"/", @"etc", @"passwd", nil]] &&
|
|
>
>
|
>
>
|
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
|
TEST(@"-[scheme]",
[u1.scheme isEqual: @"ht:tp"] && [u4.scheme isEqual: @"file"])
TEST(@"-[user]", [u1.user isEqual: @"us:er"] && u4.user == nil)
TEST(@"-[password]",
[u1.password isEqual: @"p@w"] && u4.password == nil)
TEST(@"-[host]", [u1.host isEqual: @"ho:st"] &&
[u6.host isEqual: @"[12:34::56:abcd]"] &&
[u7.host isEqual: @"[12:34::56:abcd]"])
TEST(@"-[port]", [u1.port isEqual: [OFNumber numberWithUInt16: 1234]] &&
[u4 port] == nil &&
[u7.port isEqual: [OFNumber numberWithUInt16: 234]])
TEST(@"-[path]",
[u1.path isEqual: @"/pa?th"] && [u4.path isEqual: @"/etc/passwd"])
TEST(@"-[pathComponents]",
[u1.pathComponents isEqual:
[OFArray arrayWithObjects: @"/", @"pa?th", nil]] &&
[u4.pathComponents isEqual:
[OFArray arrayWithObjects: @"/", @"etc", @"passwd", nil]] &&
|