//
// CSSCombinatorSelectorTests.m
// HTMLKit
//
// Created by Iska on 23/10/15.
// Copyright © 2015 BrainCookie. All rights reserved.
//
#import
#import "CSSSelectors.h"
#import "HTMLParser.h"
#import "HTMLDOM.h"
@interface CSSCombinatorSelectorTests : XCTestCase
{
HTMLDocument *_document;
}
@end
@implementation CSSCombinatorSelectorTests
- (void)setUp
{
[super setUp];
/*
|
|
| A paragraphA span
|
|
|
| |
| Span in table
| |
|
|
|
|
|
|
|
|
|
*/
_document = [[[HTMLParser alloc] initWithString:@""
""
"A paragraphA span"
"
"
""
"| "
"Span in table"
" |
"
"
"
"
"
""
"
"
""
""
""
""] document];
}
-(void)testChildOfElementCombinator
{
NSArray *elements = [_document elementsMatchingSelector:childOfElementSelector(typeSelector(@"body"))];
NSArray *expected = @[@"p1", @"inner-div1", @"inner-div2"];
XCTAssertEqualObjects([elements valueForKeyPath:@"attributes.id"], expected);
elements = [_document elementsMatchingSelector:childOfElementSelector(typeSelector(@"p"))];
expected = @[@"span1", @"table"];
XCTAssertEqualObjects([elements valueForKeyPath:@"attributes.id"], expected);
}
-(void)testDescendantOfElementCombinator
{
NSArray *elements = [_document elementsMatchingSelector:descendantOfElementSelector(typeSelector(@"p"))];
NSArray *expected = @[@"span1", @"table", @"tbody", @"tr1", @"td", @"span2", @"tr2", @"tr3"];
XCTAssertEqualObjects([elements valueForKeyPath:@"attributes.id"], expected);
elements = [_document elementsMatchingSelector:descendantOfElementSelector(typeSelector(@"table"))];
expected = @[@"tbody", @"tr1", @"td", @"span2", @"tr2", @"tr3"];
XCTAssertEqualObjects([elements valueForKeyPath:@"attributes.id"], expected);
}
-(void)testAdjacentSiblingCombinator
{
NSArray *elements = [_document elementsMatchingSelector:adjacentSiblingSelector(typeSelector(@"tr"))];
NSArray *expected = @[@"tr2", @"tr3"];
XCTAssertEqualObjects([elements valueForKeyPath:@"attributes.id"], expected);
elements = [_document elementsMatchingSelector:adjacentSiblingSelector(typeSelector(@"p"))];
expected = @[@"inner-div1"];
XCTAssertEqualObjects([elements valueForKeyPath:@"attributes.id"], expected);
}
-(void)testGeneralSiblingCombinator
{
NSArray *elements = [_document elementsMatchingSelector:generalSiblingSelector(typeSelector(@"tr"))];
NSArray *expected = @[@"tr2", @"tr3"];
XCTAssertEqualObjects([elements valueForKeyPath:@"attributes.id"], expected);
elements = [_document elementsMatchingSelector:generalSiblingSelector(typeSelector(@"p"))];
expected = @[@"inner-div1", @"inner-div2"];
XCTAssertEqualObjects([elements valueForKeyPath:@"attributes.id"], expected);
}
@end