@@ -1558,19 +1558,19 @@ - (void)testUpdateFirstRectForRange {
1558
1558
[inputView firstRectForRange:range]));
1559
1559
}
1560
1560
1561
- - (void)testFirstRectForRangeReturnsCorrectRectOnASingleLineLeftToRight {
1561
+ - (void)testFirstRectForRangeReturnsNoneZeroRectWhenScribbleIsEnabled {
1562
1562
FlutterTextInputView* inputView = [[FlutterTextInputView alloc] initWithOwner:textInputPlugin];
1563
1563
[inputView setTextInputState:@{@"text" : @"COMPOSING"}];
1564
1564
1565
+ FlutterTextInputView* mockInputView = OCMPartialMock(inputView);
1566
+ OCMStub([mockInputView isScribbleAvailable]).andReturn(YES);
1567
+
1565
1568
[inputView setSelectionRects:@[
1566
1569
[FlutterTextSelectionRect selectionRectWithRect:CGRectMake(0, 0, 100, 100) position:0U],
1567
1570
[FlutterTextSelectionRect selectionRectWithRect:CGRectMake(100, 0, 100, 100) position:1U],
1568
1571
[FlutterTextSelectionRect selectionRectWithRect:CGRectMake(200, 0, 100, 100) position:2U],
1569
1572
[FlutterTextSelectionRect selectionRectWithRect:CGRectMake(300, 0, 100, 100) position:3U],
1570
1573
]];
1571
- FlutterTextRange* singleRectRange = [FlutterTextRange rangeWithNSRange:NSMakeRange(1, 1)];
1572
- XCTAssertTrue(CGRectEqualToRect(CGRectMake(100, 0, 100, 100),
1573
- [inputView firstRectForRange:singleRectRange]));
1574
1574
1575
1575
FlutterTextRange* multiRectRange = [FlutterTextRange rangeWithNSRange:NSMakeRange(1, 3)];
1576
1576
@@ -1581,6 +1581,34 @@ - (void)testFirstRectForRangeReturnsCorrectRectOnASingleLineLeftToRight {
1581
1581
XCTAssertTrue(CGRectEqualToRect(CGRectMake(100, 0, 100, 100),
1582
1582
[inputView firstRectForRange:multiRectRange]));
1583
1583
}
1584
+ }
1585
+
1586
+ - (void)testFirstRectForRangeReturnsCorrectRectOnASingleLineLeftToRight {
1587
+ FlutterTextInputView* inputView = [[FlutterTextInputView alloc] initWithOwner:textInputPlugin];
1588
+ [inputView setTextInputState:@{@"text" : @"COMPOSING"}];
1589
+
1590
+ [inputView setSelectionRects:@[
1591
+ [FlutterTextSelectionRect selectionRectWithRect:CGRectMake(0, 0, 100, 100) position:0U],
1592
+ [FlutterTextSelectionRect selectionRectWithRect:CGRectMake(100, 0, 100, 100) position:1U],
1593
+ [FlutterTextSelectionRect selectionRectWithRect:CGRectMake(200, 0, 100, 100) position:2U],
1594
+ [FlutterTextSelectionRect selectionRectWithRect:CGRectMake(300, 0, 100, 100) position:3U],
1595
+ ]];
1596
+ FlutterTextRange* singleRectRange = [FlutterTextRange rangeWithNSRange:NSMakeRange(1, 1)];
1597
+ if (@available(iOS 17, *)) {
1598
+ XCTAssertTrue(CGRectEqualToRect(CGRectMake(100, 0, 100, 100),
1599
+ [inputView firstRectForRange:singleRectRange]));
1600
+ } else {
1601
+ XCTAssertTrue(CGRectEqualToRect(CGRectZero, [inputView firstRectForRange:singleRectRange]));
1602
+ }
1603
+
1604
+ FlutterTextRange* multiRectRange = [FlutterTextRange rangeWithNSRange:NSMakeRange(1, 3)];
1605
+
1606
+ if (@available(iOS 17, *)) {
1607
+ XCTAssertTrue(CGRectEqualToRect(CGRectMake(100, 0, 300, 100),
1608
+ [inputView firstRectForRange:multiRectRange]));
1609
+ } else {
1610
+ XCTAssertTrue(CGRectEqualToRect(CGRectZero, [inputView firstRectForRange:multiRectRange]));
1611
+ }
1584
1612
1585
1613
[inputView setTextInputState:@{@"text" : @"COM"}];
1586
1614
FlutterTextRange* rangeOutsideBounds = [FlutterTextRange rangeWithNSRange:NSMakeRange(3, 1)];
@@ -1598,16 +1626,19 @@ - (void)testFirstRectForRangeReturnsCorrectRectOnASingleLineRightToLeft {
1598
1626
[FlutterTextSelectionRect selectionRectWithRect:CGRectMake(0, 0, 100, 100) position:3U],
1599
1627
]];
1600
1628
FlutterTextRange* singleRectRange = [FlutterTextRange rangeWithNSRange:NSMakeRange(1, 1)];
1601
- XCTAssertTrue(CGRectEqualToRect(CGRectMake(200, 0, 100, 100),
1602
- [inputView firstRectForRange:singleRectRange]));
1629
+ if (@available(iOS 17, *)) {
1630
+ XCTAssertTrue(CGRectEqualToRect(CGRectMake(200, 0, 100, 100),
1631
+ [inputView firstRectForRange:singleRectRange]));
1632
+ } else {
1633
+ XCTAssertTrue(CGRectEqualToRect(CGRectZero, [inputView firstRectForRange:singleRectRange]));
1634
+ }
1603
1635
1604
1636
FlutterTextRange* multiRectRange = [FlutterTextRange rangeWithNSRange:NSMakeRange(1, 3)];
1605
1637
if (@available(iOS 17, *)) {
1606
1638
XCTAssertTrue(CGRectEqualToRect(CGRectMake(0, 0, 300, 100),
1607
1639
[inputView firstRectForRange:multiRectRange]));
1608
1640
} else {
1609
- XCTAssertTrue(CGRectEqualToRect(CGRectMake(200, 0, 100, 100),
1610
- [inputView firstRectForRange:multiRectRange]));
1641
+ XCTAssertTrue(CGRectEqualToRect(CGRectZero, [inputView firstRectForRange:multiRectRange]));
1611
1642
}
1612
1643
1613
1644
[inputView setTextInputState:@{@"text" : @"COM"}];
@@ -1630,17 +1661,20 @@ - (void)testFirstRectForRangeReturnsCorrectRectOnMultipleLinesLeftToRight {
1630
1661
[FlutterTextSelectionRect selectionRectWithRect:CGRectMake(300, 100, 100, 100) position:7U],
1631
1662
]];
1632
1663
FlutterTextRange* singleRectRange = [FlutterTextRange rangeWithNSRange:NSMakeRange(1, 1)];
1633
- XCTAssertTrue(CGRectEqualToRect(CGRectMake(100, 0, 100, 100),
1634
- [inputView firstRectForRange:singleRectRange]));
1664
+ if (@available(iOS 17, *)) {
1665
+ XCTAssertTrue(CGRectEqualToRect(CGRectMake(100, 0, 100, 100),
1666
+ [inputView firstRectForRange:singleRectRange]));
1667
+ } else {
1668
+ XCTAssertTrue(CGRectEqualToRect(CGRectZero, [inputView firstRectForRange:singleRectRange]));
1669
+ }
1635
1670
1636
1671
FlutterTextRange* multiRectRange = [FlutterTextRange rangeWithNSRange:NSMakeRange(1, 4)];
1637
1672
1638
1673
if (@available(iOS 17, *)) {
1639
1674
XCTAssertTrue(CGRectEqualToRect(CGRectMake(100, 0, 300, 100),
1640
1675
[inputView firstRectForRange:multiRectRange]));
1641
1676
} else {
1642
- XCTAssertTrue(CGRectEqualToRect(CGRectMake(100, 0, 100, 100),
1643
- [inputView firstRectForRange:multiRectRange]));
1677
+ XCTAssertTrue(CGRectEqualToRect(CGRectZero, [inputView firstRectForRange:multiRectRange]));
1644
1678
}
1645
1679
}
1646
1680
@@ -1659,16 +1693,19 @@ - (void)testFirstRectForRangeReturnsCorrectRectOnMultipleLinesRightToLeft {
1659
1693
[FlutterTextSelectionRect selectionRectWithRect:CGRectMake(0, 100, 100, 100) position:7U],
1660
1694
]];
1661
1695
FlutterTextRange* singleRectRange = [FlutterTextRange rangeWithNSRange:NSMakeRange(1, 1)];
1662
- XCTAssertTrue(CGRectEqualToRect(CGRectMake(200, 0, 100, 100),
1663
- [inputView firstRectForRange:singleRectRange]));
1696
+ if (@available(iOS 17, *)) {
1697
+ XCTAssertTrue(CGRectEqualToRect(CGRectMake(200, 0, 100, 100),
1698
+ [inputView firstRectForRange:singleRectRange]));
1699
+ } else {
1700
+ XCTAssertTrue(CGRectEqualToRect(CGRectZero, [inputView firstRectForRange:singleRectRange]));
1701
+ }
1664
1702
1665
1703
FlutterTextRange* multiRectRange = [FlutterTextRange rangeWithNSRange:NSMakeRange(1, 4)];
1666
1704
if (@available(iOS 17, *)) {
1667
1705
XCTAssertTrue(CGRectEqualToRect(CGRectMake(0, 0, 300, 100),
1668
1706
[inputView firstRectForRange:multiRectRange]));
1669
1707
} else {
1670
- XCTAssertTrue(CGRectEqualToRect(CGRectMake(200, 0, 100, 100),
1671
- [inputView firstRectForRange:multiRectRange]));
1708
+ XCTAssertTrue(CGRectEqualToRect(CGRectZero, [inputView firstRectForRange:multiRectRange]));
1672
1709
}
1673
1710
}
1674
1711
@@ -1691,8 +1728,7 @@ - (void)testFirstRectForRangeReturnsCorrectRectOnSingleLineWithVaryingMinYAndMax
1691
1728
XCTAssertTrue(CGRectEqualToRect(CGRectMake(100, -10, 300, 120),
1692
1729
[inputView firstRectForRange:multiRectRange]));
1693
1730
} else {
1694
- XCTAssertTrue(CGRectEqualToRect(CGRectMake(100, 10, 100, 80),
1695
- [inputView firstRectForRange:multiRectRange]));
1731
+ XCTAssertTrue(CGRectEqualToRect(CGRectZero, [inputView firstRectForRange:multiRectRange]));
1696
1732
}
1697
1733
}
1698
1734
@@ -1715,8 +1751,7 @@ - (void)testFirstRectForRangeReturnsCorrectRectOnSingleLineWithVaryingMinYAndMax
1715
1751
XCTAssertTrue(CGRectEqualToRect(CGRectMake(0, -10, 300, 120),
1716
1752
[inputView firstRectForRange:multiRectRange]));
1717
1753
} else {
1718
- XCTAssertTrue(CGRectEqualToRect(CGRectMake(200, -10, 100, 120),
1719
- [inputView firstRectForRange:multiRectRange]));
1754
+ XCTAssertTrue(CGRectEqualToRect(CGRectZero, [inputView firstRectForRange:multiRectRange]));
1720
1755
}
1721
1756
}
1722
1757
@@ -1739,8 +1774,7 @@ - (void)testFirstRectForRangeReturnsCorrectRectWithOverlappingRectsExceedingThre
1739
1774
XCTAssertTrue(CGRectEqualToRect(CGRectMake(100, 0, 300, 100),
1740
1775
[inputView firstRectForRange:multiRectRange]));
1741
1776
} else {
1742
- XCTAssertTrue(CGRectEqualToRect(CGRectMake(100, 0, 100, 100),
1743
- [inputView firstRectForRange:multiRectRange]));
1777
+ XCTAssertTrue(CGRectEqualToRect(CGRectZero, [inputView firstRectForRange:multiRectRange]));
1744
1778
}
1745
1779
}
1746
1780
@@ -1763,8 +1797,7 @@ - (void)testFirstRectForRangeReturnsCorrectRectWithOverlappingRectsExceedingThre
1763
1797
XCTAssertTrue(CGRectEqualToRect(CGRectMake(0, 0, 300, 100),
1764
1798
[inputView firstRectForRange:multiRectRange]));
1765
1799
} else {
1766
- XCTAssertTrue(CGRectEqualToRect(CGRectMake(200, 0, 100, 100),
1767
- [inputView firstRectForRange:multiRectRange]));
1800
+ XCTAssertTrue(CGRectEqualToRect(CGRectZero, [inputView firstRectForRange:multiRectRange]));
1768
1801
}
1769
1802
}
1770
1803
@@ -1787,8 +1820,7 @@ - (void)testFirstRectForRangeReturnsCorrectRectWithOverlappingRectsWithinThresho
1787
1820
XCTAssertTrue(CGRectEqualToRect(CGRectMake(100, 0, 400, 140),
1788
1821
[inputView firstRectForRange:multiRectRange]));
1789
1822
} else {
1790
- XCTAssertTrue(CGRectEqualToRect(CGRectMake(100, 0, 100, 100),
1791
- [inputView firstRectForRange:multiRectRange]));
1823
+ XCTAssertTrue(CGRectEqualToRect(CGRectZero, [inputView firstRectForRange:multiRectRange]));
1792
1824
}
1793
1825
}
1794
1826
@@ -1811,8 +1843,7 @@ - (void)testFirstRectForRangeReturnsCorrectRectWithOverlappingRectsWithinThresho
1811
1843
XCTAssertTrue(CGRectEqualToRect(CGRectMake(0, 0, 400, 140),
1812
1844
[inputView firstRectForRange:multiRectRange]));
1813
1845
} else {
1814
- XCTAssertTrue(CGRectEqualToRect(CGRectMake(300, 0, 100, 100),
1815
- [inputView firstRectForRange:multiRectRange]));
1846
+ XCTAssertTrue(CGRectEqualToRect(CGRectZero, [inputView firstRectForRange:multiRectRange]));
1816
1847
}
1817
1848
}
1818
1849
0 commit comments