forked from Objective3/ElementParser
/
CSSSelectorTest.m
92 lines (67 loc) · 2.8 KB
/
CSSSelectorTest.m
1
2
3
4
5
6
7
8
9
10
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
//
// CSSSelectorTest.m
// Thumbprint
//
// Created by Lee Buck on 4/21/09.
// Copyright 2009 Blue Bright Ventures. All rights reserved.
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// Commercial licences without many of the obligations of GPL
// are available for a nomial fee at sales@touchtankapps.com.
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
//
#import "CSSSelectorTest.h"
@implementation CSSSelector (Test)
+(void)assertWithCSSSelectorString:(NSString*)source expected:(NSString*)expected{
CSSSelector* selector = [[CSSSelector alloc] initWithString: source];
NSString* result = [selector description];
assert([result isEqualToString: expected]);
[selector release];
}
+(void)assertWithCSSSelectorString:(NSString*)source{
[self assertWithCSSSelectorString: source expected: source];
}
+(void)testCSSSelector{
//should handle tag
[self assertWithCSSSelectorString: @"foo"];
//should handle class
[self assertWithCSSSelectorString: @".class"];
//should handle multiple classes
[self assertWithCSSSelectorString: @".class.another_class"];
//should handle id
[self assertWithCSSSelectorString: @"#identifier"];
//should handle id and tag
[self assertWithCSSSelectorString: @"foo#identifier"];
//should handle class and tag
[self assertWithCSSSelectorString: @"foo.bar"];
//should handle attr
[self assertWithCSSSelectorString: @"foo[bar]"];
//should handle attr & value w/o quotes
[self assertWithCSSSelectorString: @"foo[bar=23]" expected: @"foo[bar='23']"];
//should handle attr & value w/ single quotes
[self assertWithCSSSelectorString: @"foo[bar='23']"];
//should handle whitespace in brackets & value w/ single quotes
[self assertWithCSSSelectorString: @"foo[ bar = '23' ]" expected: @"foo[bar='23']"];
//should handle attr & value w/ double quotes
[self assertWithCSSSelectorString: @"foo[bar=\"23\"]" expected: @"foo[bar='23']"];
//should handle descendant chains
[self assertWithCSSSelectorString: @"foo bar"];
//should handle successor chains
[self assertWithCSSSelectorString: @"foo + bar"];
//should handle child chains
[self assertWithCSSSelectorString: @"foo > bar"];
//should handle big and ugly
[self assertWithCSSSelectorString: @"foo#ids > bar.huh + img[title]"];
}
+(void)testAll{
[self testCSSSelector];
}
@end