Skip to content

Commit 26ade95

Browse files
austinzhengmoiseev
authored andcommitted
[stdlib] Fix UnsafeBufferPointer range subscript getter tests (#3233)
All four of the Unsafe*BufferPointer range subscript getter tests (one for each range) were using the same test name string. This caused only one of the four tests to actually be registered to the test suite. This change fixes that issue, and adds a couple more tests for better coverage.
1 parent 0183dce commit 26ade95

File tree

1 file changed

+23
-5
lines changed

1 file changed

+23
-5
lines changed

validation-test/stdlib/UnsafeBufferPointer.swift.gyb

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ struct SubscriptGetTest {
1515
/// The values that should be expected by slicing the UBP, or `nil` if the
1616
/// test is expected to crash.
1717
let expectedValues: [Int]?
18+
/// Same as `expectedValues`, but for closed ranges. `nil` if no difference.
19+
let expectedClosedValues: [Int]?
1820
let loc: SourceLoc
1921

2022
static var elementCount = (end - start)
@@ -35,10 +37,12 @@ struct SubscriptGetTest {
3537

3638
init(
3739
rangeSelection: RangeSelection, expectedValues: [Int]? = nil,
40+
expectedClosedValues: [Int]? = nil,
3841
file: String = #file, line: UInt = #line
3942
) {
4043
self.rangeSelection = rangeSelection
4144
self.expectedValues = expectedValues
45+
self.expectedClosedValues = expectedClosedValues ?? expectedValues
4246
self.loc = SourceLoc(file, line, comment: "test data")
4347
}
4448
}
@@ -48,8 +52,12 @@ let subscriptGetTests : [SubscriptGetTest] = [
4852
SubscriptGetTest(rangeSelection: .emptyRange, expectedValues: []),
4953

5054
// Valid, edges.
51-
SubscriptGetTest(rangeSelection: .leftEdge, expectedValues: [0]),
52-
SubscriptGetTest(rangeSelection: .rightEdge, expectedValues: [19]),
55+
SubscriptGetTest(rangeSelection: .leftEdge,
56+
expectedValues: [],
57+
expectedClosedValues: [0]),
58+
SubscriptGetTest(rangeSelection: .rightEdge,
59+
expectedValues: [],
60+
expectedClosedValues: [19]),
5361

5462
// Valid, internal.
5563
SubscriptGetTest(rangeSelection: .leftHalf,
@@ -60,6 +68,12 @@ let subscriptGetTests : [SubscriptGetTest] = [
6068
expectedValues: [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]),
6169
SubscriptGetTest(rangeSelection: .full,
6270
expectedValues: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]),
71+
SubscriptGetTest(rangeSelection: .offsets(2, 4),
72+
expectedValues: [2, 3],
73+
expectedClosedValues: [2, 3, 4]),
74+
SubscriptGetTest(rangeSelection: .offsets(16, 19),
75+
expectedValues: [16, 17, 18],
76+
expectedClosedValues: [16, 17, 18, 19]),
6377

6478
// Invalid, bottom out of bounds.
6579
SubscriptGetTest(rangeSelection: .offsets(-1, -1)),
@@ -181,13 +195,17 @@ ${SelfName}TestSuite.test("badNilCount")
181195
}
182196

183197
% for RangeName in ['range', 'countableRange', 'closedRange', 'countableClosedRange']:
184-
${SelfName}TestSuite.test("subscript/get").forEach(in: subscriptGetTests) {
198+
${SelfName}TestSuite.test("subscript/${RangeName}/get").forEach(in: subscriptGetTests) {
185199
(test) in
186200

201+
let expectedValues: [Int]?
187202
% if 'closed' in RangeName.lower():
188203
if test.rangeSelection.isEmpty {
189204
return
190205
}
206+
expectedValues = test.expectedClosedValues
207+
% else:
208+
expectedValues = test.expectedValues
191209
% end
192210

193211
let elementCount = SubscriptGetTest.elementCount
@@ -198,10 +216,10 @@ ${SelfName}TestSuite.test("subscript/get").forEach(in: subscriptGetTests) {
198216

199217
let range = test.rangeSelection.${RangeName}(in: buffer)
200218

201-
if test.expectedValues == nil { expectCrashLater() }
219+
if expectedValues == nil { expectCrashLater() }
202220
let slice = buffer[range]
203221
expectEqual(
204-
test.expectedValues!,
222+
expectedValues!,
205223
slice.map { $0.value },
206224
stackTrace: SourceLocStack().with(test.loc)
207225
)

0 commit comments

Comments
 (0)