@@ -508,6 +508,14 @@ class TestAttributedStringConstrainingBehavior: XCTestCase {
508
508
result. characters. append ( contentsOf: " ABC " )
509
509
verify ( string: result, matches: [ ( " Hello, world " , 1 , 2 ) , ( " ABC " , 1 , nil ) ] , for: \. testInt, \. testCharacterDependent)
510
510
511
+ result = str
512
+ result. characters. insert ( " A " , at: result. startIndex)
513
+ verify ( string: result, matches: [ ( " A " , 1 , nil ) , ( " Hello, world " , 1 , 2 ) ] , for: \. testInt, \. testCharacterDependent)
514
+
515
+ result = str
516
+ result. characters. insert ( " A " , at: result. index ( afterCharacter: result. startIndex) )
517
+ verify ( string: result, matches: [ ( " HAello, world " , 1 , nil ) ] , for: \. testInt, \. testCharacterDependent)
518
+
511
519
result = str
512
520
result. characters. removeSubrange ( result. index ( afterCharacter: result. startIndex) ..< result. index ( beforeCharacter: result. endIndex) )
513
521
verify ( string: result, matches: [ ( " Hd " , 1 , nil ) ] , for: \. testInt, \. testCharacterDependent)
@@ -566,5 +574,13 @@ class TestAttributedStringConstrainingBehavior: XCTestCase {
566
574
result [ result. startIndex ..< result. index ( afterCharacter: result. startIndex) ] = replacement [ replacement. startIndex ..< replacement. index ( afterCharacter: str. startIndex) ]
567
575
verify ( string: result, matches: [ ( " H " , nil , nil , " Hello " ) , ( " ello, world " , 1 , nil , nil ) ] , for: \. testInt, \. testCharacterDependent, \. testString)
568
576
}
569
-
577
+
578
+ func testInvalidationCharacterInsertionBetweenRuns( ) {
579
+ var str = AttributedString ( " Hello " , attributes: . init( ) . testInt ( 1 ) . testCharacterDependent ( 2 ) )
580
+ str += AttributedString ( " World " , attributes: . init( ) . testInt ( 1 ) . testCharacterDependent ( 3 ) )
581
+
582
+ // Inserting text between two runs should not invalidate text dependent attributes in either of the surrounding runs
583
+ str. characters. insert ( " | " , at: str. index ( str. startIndex, offsetByCharacters: 5 ) )
584
+ verify ( string: str, matches: [ ( " Hello " , 1 , 2 ) , ( " | " , 1 , nil ) , ( " World " , 1 , 3 ) ] , for: \. testInt, \. testCharacterDependent)
585
+ }
570
586
}
0 commit comments