mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
119 lines
2.7 KiB
Swift
119 lines
2.7 KiB
Swift
// RUN: rm -rf %t
|
|
// RUN: mkdir -p %t
|
|
// RUN: %target-build-swift %s -o %t/a.out_Debug
|
|
// RUN: %target-build-swift %s -o %t/a.out_Release -O
|
|
//
|
|
// RUN: %target-run %t/a.out_Debug
|
|
// RUN: %target-run %t/a.out_Release
|
|
// REQUIRES: executable_test
|
|
|
|
import StdlibUnittest
|
|
|
|
// Also import modules which are used by StdlibUnittest internally. This
|
|
// workaround is needed to link all required libraries in case we compile
|
|
// StdlibUnittest with -sil-serialize-all.
|
|
import SwiftPrivate
|
|
#if _runtime(_ObjC)
|
|
import ObjectiveC
|
|
#endif
|
|
|
|
var StringTraps = TestSuite("StringTraps")
|
|
|
|
StringTraps.test("startIndex/predecessor")
|
|
.skip(.custom(
|
|
{ _isFastAssertConfiguration() },
|
|
reason: "this trap is not guaranteed to happen in -Ounchecked"))
|
|
.code {
|
|
var s = "abc"
|
|
var i = s.startIndex
|
|
i = i.successor()
|
|
i = i.predecessor()
|
|
expectCrashLater()
|
|
i = i.predecessor()
|
|
}
|
|
|
|
StringTraps.test("endIndex/successor")
|
|
.skip(.custom(
|
|
{ _isFastAssertConfiguration() },
|
|
reason: "this trap is not guaranteed to happen in -Ounchecked"))
|
|
.code {
|
|
var s = "abc"
|
|
var i = s.startIndex
|
|
i = i.successor()
|
|
i = i.successor()
|
|
i = i.successor()
|
|
expectCrashLater()
|
|
i = i.successor()
|
|
}
|
|
|
|
StringTraps.test("subscript(_:)/endIndex")
|
|
.skip(.custom(
|
|
{ _isFastAssertConfiguration() },
|
|
reason: "this trap is not guaranteed to happen in -Ounchecked"))
|
|
.code {
|
|
var s = "abc"
|
|
var i = s.startIndex
|
|
i = i.successor()
|
|
i = i.successor()
|
|
i = i.successor()
|
|
expectCrashLater()
|
|
s[i]
|
|
}
|
|
|
|
StringTraps.test("UTF8ViewEndIndexSuccessor")
|
|
.skip(.custom(
|
|
{ _isFastAssertConfiguration() },
|
|
reason: "this trap is not guaranteed to happen in -Ounchecked"))
|
|
.code {
|
|
var s = "abc"
|
|
var i = s.utf8.startIndex
|
|
i = i.successor()
|
|
i = i.successor()
|
|
i = i.successor()
|
|
expectCrashLater()
|
|
i = i.successor()
|
|
}
|
|
|
|
StringTraps.test("UTF8ViewSubscript/endIndex")
|
|
.skip(.custom(
|
|
{ _isFastAssertConfiguration() },
|
|
reason: "this trap is not guaranteed to happen in -Ounchecked"))
|
|
.code {
|
|
var s = "abc"
|
|
var i = s.utf8.startIndex
|
|
i = i.successor()
|
|
i = i.successor()
|
|
i = i.successor()
|
|
expectCrashLater()
|
|
s.utf8[i]
|
|
}
|
|
|
|
StringTraps.test("UTF16ViewSubscript/DecrementedStartIndex")
|
|
.skip(.custom(
|
|
{ _isFastAssertConfiguration() },
|
|
reason: "this trap is not guaranteed to happen in -Ounchecked"))
|
|
.code {
|
|
var s = "abc"
|
|
var i = s.utf16.startIndex
|
|
i = i.predecessor()
|
|
expectCrashLater()
|
|
s.utf16[i]
|
|
}
|
|
|
|
StringTraps.test("UTF16ViewSubscript/endIndex")
|
|
.skip(.custom(
|
|
{ _isFastAssertConfiguration() },
|
|
reason: "this trap is not guaranteed to happen in -Ounchecked"))
|
|
.code {
|
|
var s = "abc"
|
|
var i = s.utf16.startIndex
|
|
i = i.successor()
|
|
i = i.successor()
|
|
i = i.successor()
|
|
expectCrashLater()
|
|
s.utf16[i]
|
|
}
|
|
|
|
runAllTests()
|
|
|