@@ -38,14 +38,17 @@ let StringBreadcrumbsTests = TestSuite("StringBreadcrumbsTests")
38
38
39
39
func validateBreadcrumbs( _ str: String ) {
40
40
var utf16CodeUnits = Array ( str. utf16)
41
- var utf16Indices = Array ( str. utf16. indices)
42
41
var outputBuffer = Array < UInt16 > ( repeating: 0 , count: utf16CodeUnits. count)
43
42
44
- for i in 0 ..< ( utf16CodeUnits. count- 1 ) {
45
- for j in ( i+ 1 ) ..< utf16CodeUnits. count {
43
+ // Include the endIndex, so we can test end conversions
44
+ var utf16Indices = Array ( str. utf16. indices) + [ str. utf16. endIndex]
45
+
46
+ for i in 0 ... utf16CodeUnits. count {
47
+ for j in i... utf16CodeUnits. count {
46
48
let range = Range ( uncheckedBounds: ( i, j) )
47
49
48
50
let indexRange = str. _toUTF16Indices ( range)
51
+
49
52
// Range<String.Index> <=> Range<Int>
50
53
expectEqual ( utf16Indices [ i] , indexRange. lowerBound)
51
54
expectEqual ( utf16Indices [ j] , indexRange. upperBound)
@@ -69,6 +72,13 @@ func validateBreadcrumbs(_ str: String) {
69
72
}
70
73
}
71
74
75
+ StringBreadcrumbsTests . test ( " uniform strings " ) {
76
+ validateBreadcrumbs ( smallASCII)
77
+ validateBreadcrumbs ( largeASCII)
78
+ validateBreadcrumbs ( smallUnicode)
79
+ validateBreadcrumbs ( largeUnicode)
80
+ }
81
+
72
82
StringBreadcrumbsTests . test ( " largeString " ) {
73
83
validateBreadcrumbs ( largeString)
74
84
}
0 commit comments