// 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 SetTraps = TestSuite("SetTraps") SetTraps.test("RemoveInvalidIndex1") .skip(.custom( { _isFastAssertConfiguration() }, reason: "this trap is not guaranteed to happen in -Ounchecked")) .code { var s = Set() let index = s.startIndex expectCrashLater() s.remove(at: index) } SetTraps.test("RemoveInvalidIndex2") .skip(.custom( { _isFastAssertConfiguration() }, reason: "this trap is not guaranteed to happen in -Ounchecked")) .code { var s = Set() let index = s.endIndex expectCrashLater() s.remove(at: index) } SetTraps.test("RemoveInvalidIndex3") .skip(.custom( { _isFastAssertConfiguration() }, reason: "this trap is not guaranteed to happen in -Ounchecked")) .code { var s: Set = [ 10, 20, 30 ] let index = s.endIndex expectCrashLater() s.remove(at: index) } SetTraps.test("RemoveInvalidIndex4") .skip(.custom( { _isFastAssertConfiguration() }, reason: "this trap is not guaranteed to happen in -Ounchecked")) .code { var s: Set = [ 10 ] let index = s.index(of: 10)! s.remove(at: index) expectFalse(s.contains(10)) expectCrashLater() s.remove(at: index) } SetTraps.test("RemoveFirstFromEmpty") .skip(.custom( { _isFastAssertConfiguration() }, reason: "this trap is not guaranteed to happen in -Ounchecked")) .crashOutputMatches(_isDebugAssertConfiguration() ? "can't removeFirst from an empty Set" : "") .code { var s = Set() expectCrashLater() s.removeFirst() } runAllTests()