Skip to content

Commit ec2a645

Browse files
committed
[cxx-interop] More test coverage for Collection conformances
This adds a few tests for the default implementation of subscript, slicing, map/reduce.
1 parent 4a29080 commit ec2a645

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

test/Interop/Cxx/stdlib/overlay/custom-collection.swift

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,18 +13,34 @@ CxxCollectionTestSuite.test("SimpleCollectionNoSubscript as Swift.Collection") {
1313
let c = SimpleCollectionNoSubscript()
1414
expectEqual(c.first, 1)
1515
expectEqual(c.last, 5)
16+
17+
// This subscript is a default implementation added in CxxRandomAccessCollection.
18+
expectEqual(c[0], 1)
19+
expectEqual(c[1], 2)
20+
expectEqual(c[4], 5)
1621
}
1722

1823
CxxCollectionTestSuite.test("SimpleCollectionReadOnly as Swift.Collection") {
1924
let c = SimpleCollectionReadOnly()
2025
expectEqual(c.first, 1)
2126
expectEqual(c.last, 5)
27+
28+
let slice = c[1..<3]
29+
expectEqual(slice.first, 2)
30+
expectEqual(slice.last, 3)
2231
}
2332

2433
CxxCollectionTestSuite.test("SimpleArrayWrapper as Swift.Collection") {
2534
let c = SimpleArrayWrapper()
2635
expectEqual(c.first, 10)
2736
expectEqual(c.last, 50)
37+
38+
let reduced = c.reduce(0, +)
39+
expectEqual(reduced, 150)
40+
41+
let mapped = c.map { $0 + 1 }
42+
expectEqual(mapped.first, 11)
43+
expectEqual(mapped.last, 51)
2844
}
2945

3046
runAllTests()

test/Interop/Cxx/stdlib/overlay/custom-convertible-to-collection.swift

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// RUN: %target-run-simple-swift(-I %S/Inputs -Xfrontend -enable-experimental-cxx-interop)
1+
// RUN: %target-run-simple-swift(-I %S/Inputs -Xfrontend -enable-experimental-cxx-interop -Xfrontend -validate-tbd-against-ir=none)
22
//
33
// REQUIRES: executable_test
44
// REQUIRES: OS=macosx || OS=linux-gnu
@@ -15,6 +15,12 @@ CxxSequenceTestSuite.test("SimpleSequence to Swift.Array") {
1515
expectEqual([1, 2, 3, 4] as [Int32], array)
1616
}
1717

18+
CxxSequenceTestSuite.test("SimpleSequenceWithOutOfLineEqualEqual to Swift.Array") {
19+
let seq = SimpleSequenceWithOutOfLineEqualEqual()
20+
let array = Array(seq)
21+
expectEqual([1, 2, 3, 4] as [Int32], array)
22+
}
23+
1824
CxxSequenceTestSuite.test("SimpleSequence to Swift.Set") {
1925
let seq = SimpleSequence()
2026
let set = Set(seq)

0 commit comments

Comments
 (0)