diff --git a/Tests/HTMLRangeTests.m b/Tests/HTMLRangeTests.m index 978e098..12834a2 100644 --- a/Tests/HTMLRangeTests.m +++ b/Tests/HTMLRangeTests.m @@ -887,7 +887,7 @@ XCTAssertEqual(range.endContainer, _firstText); XCTAssertEqual(range.endOffset, 10); - //

Title

Hello

New TextSecond text
<--Second comment-->
+ //

Title

Hello

New text New TextSecond text
<--Second comment-->
// |______| [_firstText replaceDataInRange:NSMakeRange(0, 5) withData:@"New"]; @@ -967,4 +967,119 @@ XCTAssertEqual(range.endContainer, _firstText); XCTAssertEqual(range.endOffset, 8); } + +- (void)testThatCharacterDataMutationsUpdateRangeCorrectly_DifferentBoundaries +{ + HTMLRange *range = [[HTMLRange alloc] initWithDowcument:_document]; + + //

Title

Hello

First textSecond text
<--Second comment-->
+ // |___________________________| + [range setStartNode:_firstText startOffset:5]; + [range setEndNode:_secondText endOffset:3]; + + //

Title

Hello

First text New TextSecond text
<--Second comment-->
+ // |____________________________________| + [_firstText appendData:@" New Text"]; + + XCTAssertEqual(range.startContainer, _firstText); + XCTAssertEqual(range.startOffset, 5); + XCTAssertEqual(range.endContainer, _secondText); + XCTAssertEqual(range.endOffset, 3); + + //

Title

Hello

New text New TextSecond text
<--Second comment-->
+ // |______________________________________| + [_firstText replaceDataInRange:NSMakeRange(0, 5) withData:@"New"]; + + XCTAssertEqual(range.startContainer, _firstText); + XCTAssertEqual(range.startOffset, 0); + XCTAssertEqual(range.endContainer, _secondText); + XCTAssertEqual(range.endOffset, 3); + + //

Title

Hello

New TextSecond text
<--Second comment-->
+ // |_____________________________| + [_firstText setData:@"New Text"]; + + XCTAssertEqual(range.startContainer, _firstText); + XCTAssertEqual(range.startOffset, 0); + XCTAssertEqual(range.endContainer, _secondText); + XCTAssertEqual(range.endOffset, 3); + + + //

Title

Hello

NewTextSecond text
<--Second comment-->
+ // |____________________________| + [_firstText deleteDataInRange:NSMakeRange(3, 1)]; + + XCTAssertEqual(range.startContainer, _firstText); + XCTAssertEqual(range.startOffset, 0); + XCTAssertEqual(range.endContainer, _secondText); + XCTAssertEqual(range.endOffset, 3); + + //

Title

Hello

NewNewTextSecond text
<--Second comment-->
+ // |_______________________________| + [_firstText insertData:@"New" atOffset:3]; + + XCTAssertEqual(range.startContainer, _firstText); + XCTAssertEqual(range.startOffset, 0); + XCTAssertEqual(range.endContainer, _secondText); + XCTAssertEqual(range.endOffset, 3); + + //

Title

Hello

NewNewTextSecond text
<--Second comment-->
+ // |____________________________| + [range setStartNode:_firstText startOffset:3]; + + //

Title

Hello

PrefixNewNewTextSecond text
<--Second comment-->
+ // |____________________________| + [_firstText insertData:@"Prefix" atOffset:0]; + + XCTAssertEqual(range.startContainer, _firstText); + XCTAssertEqual(range.startOffset, 9); + XCTAssertEqual(range.endContainer, _secondText); + XCTAssertEqual(range.endOffset, 3); + + //

Title

Hello

PrefixNewTextSecond text
<--Second comment-->
+ // |____________________________| + [_firstText deleteDataInRange:NSMakeRange(6, 3)]; + + XCTAssertEqual(range.startContainer, _firstText); + XCTAssertEqual(range.startOffset, 6); + XCTAssertEqual(range.endContainer, _secondText); + XCTAssertEqual(range.endOffset, 3); + + //

Title

Hello

PreABCDTextSecond text
<--Second comment-->
+ // |_____________________________| + [_firstText replaceDataInRange:NSMakeRange(3, 6) withData:@"ABCD"]; + + XCTAssertEqual(range.startContainer, _firstText); + XCTAssertEqual(range.startOffset, 3); + XCTAssertEqual(range.endContainer, _secondText); + XCTAssertEqual(range.endOffset, 3); + + //

Title

Hello

Pre TextSecond text
<--Second comment-->
+ // |__________________________| + [_firstText replaceDataInRange:NSMakeRange(3, 4) withData:@" "]; + + XCTAssertEqual(range.startContainer, _firstText); + XCTAssertEqual(range.startOffset, 3); + XCTAssertEqual(range.endContainer, _secondText); + XCTAssertEqual(range.endOffset, 3); + + //

Title

Hello

Pre TextPrefixSecond text
<--Second comment-->
+ // |________________________________| + [_secondText insertData:@"Prefix" atOffset:0]; + + XCTAssertEqual(range.startContainer, _firstText); + XCTAssertEqual(range.startOffset, 3); + XCTAssertEqual(range.endContainer, _secondText); + XCTAssertEqual(range.endOffset, 9); + + //

Title

Hello

Pre TextPrefixSecond text
<--Second comment-->
+ // |___________________| + [_firstComment setData:@"X"]; + + XCTAssertEqual(range.startContainer, _firstText); + XCTAssertEqual(range.startOffset, 3); + XCTAssertEqual(range.endContainer, _secondText); + XCTAssertEqual(range.endOffset, 9); +} + @end