Add HTML Character Data & Text tests

This commit is contained in:
iska
2017-01-10 17:55:39 +01:00
parent 1e5517f403
commit bc94f91c6e
2 changed files with 108 additions and 0 deletions
+8
View File
@@ -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 */,
+100
View File
@@ -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