Add HTML Character Data & Text tests
This commit is contained in:
@@ -317,6 +317,9 @@
|
||||
62D91C281DE218A500BEFADE /* HTMLRange.m in Sources */ = {isa = PBXBuildFile; fileRef = 62D91C221DE218A500BEFADE /* HTMLRange.m */; };
|
||||
62D91C291DE218A500BEFADE /* HTMLRange.m in Sources */ = {isa = PBXBuildFile; fileRef = 62D91C221DE218A500BEFADE /* HTMLRange.m */; };
|
||||
62D91C2A1DE218A500BEFADE /* HTMLRange.m in Sources */ = {isa = PBXBuildFile; fileRef = 62D91C221DE218A500BEFADE /* HTMLRange.m */; };
|
||||
62E0BA971E25456700E4D193 /* HTMLCharacterDataTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 62E0BA961E25456700E4D193 /* HTMLCharacterDataTests.m */; };
|
||||
62E0BA981E25456700E4D193 /* HTMLCharacterDataTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 62E0BA961E25456700E4D193 /* HTMLCharacterDataTests.m */; };
|
||||
62E0BA991E25456700E4D193 /* HTMLCharacterDataTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 62E0BA961E25456700E4D193 /* HTMLCharacterDataTests.m */; };
|
||||
62EC0A851E158BD80007786B /* HTMLRangeTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 62EC0A841E158BD80007786B /* HTMLRangeTests.m */; };
|
||||
62EC0A861E158BD80007786B /* HTMLRangeTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 62EC0A841E158BD80007786B /* HTMLRangeTests.m */; };
|
||||
62EC0A871E158BD80007786B /* HTMLRangeTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 62EC0A841E158BD80007786B /* HTMLRangeTests.m */; };
|
||||
@@ -718,6 +721,7 @@
|
||||
62D8345819FB1AC4009205A9 /* HTML5LibTokenizerTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HTML5LibTokenizerTest.m; sourceTree = "<group>"; };
|
||||
62D91C211DE218A500BEFADE /* HTMLRange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLRange.h; sourceTree = "<group>"; };
|
||||
62D91C221DE218A500BEFADE /* HTMLRange.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HTMLRange.m; sourceTree = "<group>"; };
|
||||
62E0BA961E25456700E4D193 /* HTMLCharacterDataTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HTMLCharacterDataTests.m; sourceTree = "<group>"; };
|
||||
62E7CAAE19CDFFB500465A83 /* HTMLTokenizerCharacters.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = HTMLTokenizerCharacters.h; path = include/HTMLTokenizerCharacters.h; sourceTree = "<group>"; };
|
||||
62EC0A841E158BD80007786B /* HTMLRangeTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HTMLRangeTests.m; sourceTree = "<group>"; };
|
||||
62EC7AE51AEEAC6F0015D3BE /* HTMLMutationAlgorithmsTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HTMLMutationAlgorithmsTests.m; sourceTree = "<group>"; };
|
||||
@@ -881,6 +885,7 @@
|
||||
624FC3791AE591D80015DDF9 /* HTMLNodesTests.m */,
|
||||
62EC7AE51AEEAC6F0015D3BE /* HTMLMutationAlgorithmsTests.m */,
|
||||
62EC0A841E158BD80007786B /* HTMLRangeTests.m */,
|
||||
62E0BA961E25456700E4D193 /* HTMLCharacterDataTests.m */,
|
||||
);
|
||||
name = DOM;
|
||||
sourceTree = "<group>";
|
||||
@@ -1742,6 +1747,7 @@
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
62EC0A851E158BD80007786B /* HTMLRangeTests.m in Sources */,
|
||||
62E0BA971E25456700E4D193 /* HTMLCharacterDataTests.m in Sources */,
|
||||
6216ACFD1C28DCC80074CAB4 /* CSSExtensionSelectorsParsingTests.m in Sources */,
|
||||
62132E5A1C01F83200084175 /* CSSSelectorTest.m in Sources */,
|
||||
6239755B1AC362CA007E26F1 /* HTMLKitTreeConstructionTests.m in Sources */,
|
||||
@@ -1883,6 +1889,7 @@
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
62EC0A871E158BD80007786B /* HTMLRangeTests.m in Sources */,
|
||||
62E0BA991E25456700E4D193 /* HTMLCharacterDataTests.m in Sources */,
|
||||
62857D3B1D39A345008DC254 /* CSSSelectorTest.m in Sources */,
|
||||
62857D421D39A345008DC254 /* CSSCombinatorSelectorTests.m in Sources */,
|
||||
62857D3C1D39A345008DC254 /* CSSSelectorParserTests.m in Sources */,
|
||||
@@ -1969,6 +1976,7 @@
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
62EC0A861E158BD80007786B /* HTMLRangeTests.m in Sources */,
|
||||
62E0BA981E25456700E4D193 /* HTMLCharacterDataTests.m in Sources */,
|
||||
6216ACFE1C28DCC80074CAB4 /* CSSExtensionSelectorsParsingTests.m in Sources */,
|
||||
62ECBFCA1C0B6E2E00AF847B /* HTML5LibTokenizerTest.m in Sources */,
|
||||
62ECBFCB1C0B6E2E00AF847B /* HTMLKitTokenizerTests.m in Sources */,
|
||||
|
||||
@@ -0,0 +1,100 @@
|
||||
//
|
||||
// HTMLCharacterDataTests.m
|
||||
// HTMLKit
|
||||
//
|
||||
// Created by Iska on 10/01/17.
|
||||
// Copyright © 2017 BrainCookie. All rights reserved.
|
||||
//
|
||||
|
||||
#import <XCTest/XCTest.h>
|
||||
#import "HTMLElement.h"
|
||||
#import "HTMLCharacterData.h"
|
||||
#import "HTMLText.h"
|
||||
|
||||
@interface HTMLCharacterDataTests : XCTestCase
|
||||
|
||||
@end
|
||||
|
||||
@implementation HTMLCharacterDataTests
|
||||
|
||||
- (void)testSetData
|
||||
{
|
||||
HTMLText *text = [[HTMLText alloc] initWithData:@"This is a text"];
|
||||
|
||||
[text setData:@"New text"];
|
||||
XCTAssertEqualObjects(text.data, @"New text");
|
||||
}
|
||||
|
||||
- (void)testAppendData
|
||||
{
|
||||
HTMLText *text = [[HTMLText alloc] initWithData:@"This is a text"];
|
||||
|
||||
[text appendData:@"New text"];
|
||||
XCTAssertEqualObjects(text.data, @"This is a textNew text");
|
||||
}
|
||||
|
||||
- (void)testReplaceData
|
||||
{
|
||||
HTMLText *text = [[HTMLText alloc] initWithData:@"This is a text"];
|
||||
|
||||
[text replaceDataInRange:NSMakeRange(0, 5) withData:@"New text "];
|
||||
XCTAssertEqualObjects(text.data, @"New text is a text");
|
||||
|
||||
[text replaceDataInRange:NSMakeRange(4, 4) withData:@"data"];
|
||||
XCTAssertEqualObjects(text.data, @"New data is a text");
|
||||
}
|
||||
|
||||
- (void)testDeleteData
|
||||
{
|
||||
HTMLText *text = [[HTMLText alloc] initWithData:@"This is a text"];
|
||||
|
||||
[text deleteDataInRange:NSMakeRange(5, 3)];
|
||||
XCTAssertEqualObjects(text.data, @"This a text");
|
||||
|
||||
[text deleteDataInRange:NSMakeRange(0, text.data.length)];
|
||||
XCTAssertEqualObjects(text.data, @"");
|
||||
}
|
||||
|
||||
- (void)testInsertData
|
||||
{
|
||||
HTMLText *text = [[HTMLText alloc] initWithData:@"This is a text"];
|
||||
|
||||
[text insertData:@"New " atOffset:10];
|
||||
XCTAssertEqualObjects(text.data, @"This is a New text");
|
||||
|
||||
[text insertData:@"Prefix " atOffset:0];
|
||||
XCTAssertEqualObjects(text.data, @"Prefix This is a New text");
|
||||
}
|
||||
|
||||
- (void)testSplitText_Invalid
|
||||
{
|
||||
HTMLText *text = [[HTMLText alloc] initWithData:@"text"];
|
||||
XCTAssertThrows([text splitTextAtOffset:5]);
|
||||
}
|
||||
|
||||
- (void)testSplitText
|
||||
{
|
||||
HTMLElement *div = [[HTMLElement alloc] initWithTagName:@"div"];
|
||||
HTMLText *text = [[HTMLText alloc] initWithData:@"This is a text"];
|
||||
[div appendNode:text];
|
||||
|
||||
HTMLText *newText = [text splitTextAtOffset:7];
|
||||
XCTAssertEqualObjects(newText.data, @" a text");
|
||||
|
||||
XCTAssertEqual(div.childNodesCount, 2);
|
||||
XCTAssertEqualObjects(div.firstChild.textContent, @"This is");
|
||||
XCTAssertEqualObjects(div.lastChild.textContent, @" a text");
|
||||
|
||||
[div appendNode:[[HTMLElement alloc] initWithTagName:@"p"]];
|
||||
|
||||
newText = [newText splitTextAtOffset:0];
|
||||
XCTAssertEqualObjects(newText.data, @" a text");
|
||||
|
||||
XCTAssertEqual(div.childNodesCount, 4);
|
||||
XCTAssertEqualObjects([div childNodeAtIndex:0].textContent, @"This is");
|
||||
XCTAssertEqualObjects([div childNodeAtIndex:1].textContent, @"");
|
||||
XCTAssertEqualObjects([div childNodeAtIndex:2].textContent, @" a text");
|
||||
XCTAssertEqual([div childNodeAtIndex:3].nodeType, HTMLNodeElement);
|
||||
}
|
||||
|
||||
@end
|
||||
Reference in New Issue
Block a user