// // 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