mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
418 lines
11 KiB
Swift
418 lines
11 KiB
Swift
// RUN: %target-resilience-test
|
|
// REQUIRES: executable_test
|
|
|
|
import StdlibUnittest
|
|
import enum_add_cases
|
|
|
|
|
|
var EnumAddCasesTest = TestSuite("EnumAddCases")
|
|
|
|
func myAddNoPayloadToSingletonCases() -> [AddNoPayloadToSingleton] {
|
|
return [.Noses]
|
|
}
|
|
|
|
func evaluateAddNoPayloadToSingletonCases(_ e: [AddNoPayloadToSingleton]) -> [Int] {
|
|
return e.map {
|
|
switch $0 {
|
|
case .Noses:
|
|
return 0
|
|
default:
|
|
return -1
|
|
}
|
|
}
|
|
}
|
|
|
|
EnumAddCasesTest.test("AddNoPayloadToSingleton") {
|
|
expectEqual([0],
|
|
evaluateAddNoPayloadToSingletonCases(myAddNoPayloadToSingletonCases()))
|
|
if getVersion() == 0 {
|
|
expectEqual([0],
|
|
evaluateAddNoPayloadToSingletonCases(addNoPayloadToSingletonCases()))
|
|
} else {
|
|
expectEqual([0, -1, -1],
|
|
evaluateAddNoPayloadToSingletonCases(addNoPayloadToSingletonCases()))
|
|
}
|
|
}
|
|
|
|
func evaluateAddNoPayloadToSingletonCasesUC(_ e: [AddNoPayloadToSingleton]) -> [Int] {
|
|
return e.map {
|
|
switch $0 {
|
|
case .Noses:
|
|
return 0
|
|
@unknown case _:
|
|
return -1
|
|
}
|
|
}
|
|
}
|
|
|
|
EnumAddCasesTest.test("AddNoPayloadToSingleton/UnknownCase") {
|
|
expectEqual([0],
|
|
evaluateAddNoPayloadToSingletonCasesUC(myAddNoPayloadToSingletonCases()))
|
|
if getVersion() == 0 {
|
|
expectEqual([0],
|
|
evaluateAddNoPayloadToSingletonCasesUC(addNoPayloadToSingletonCases()))
|
|
} else {
|
|
expectEqual([0, -1, -1],
|
|
evaluateAddNoPayloadToSingletonCasesUC(addNoPayloadToSingletonCases()))
|
|
}
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////////////////
|
|
|
|
func myAddPayloadToSingletonCases() -> [AddPayloadToSingleton] {
|
|
return [.Cats]
|
|
}
|
|
|
|
func evaluateAddPayloadToSingletonCases(_ e: [AddPayloadToSingleton]) -> [Int] {
|
|
return e.map {
|
|
switch $0 {
|
|
case .Cats:
|
|
return 0
|
|
default:
|
|
return -1
|
|
}
|
|
}
|
|
}
|
|
|
|
EnumAddCasesTest.test("AddPayloadToSingleton") {
|
|
do {
|
|
let s = Starfish()
|
|
|
|
expectEqual([0],
|
|
evaluateAddPayloadToSingletonCases(myAddPayloadToSingletonCases()))
|
|
if getVersion() == 0 {
|
|
expectEqual([0],
|
|
evaluateAddPayloadToSingletonCases(addPayloadToSingletonCases(s)))
|
|
} else {
|
|
expectEqual([0, -1],
|
|
evaluateAddPayloadToSingletonCases(addPayloadToSingletonCases(s)))
|
|
}
|
|
}
|
|
|
|
expectEqual(starfishCount, 0)
|
|
}
|
|
|
|
func evaluateAddPayloadToSingletonCasesUC(_ e: [AddPayloadToSingleton]) -> [Int] {
|
|
return e.map {
|
|
switch $0 {
|
|
case .Cats:
|
|
return 0
|
|
@unknown case _:
|
|
return -1
|
|
}
|
|
}
|
|
}
|
|
|
|
EnumAddCasesTest.test("AddPayloadToSingleton/UnknownCase") {
|
|
do {
|
|
let s = Starfish()
|
|
|
|
expectEqual([0],
|
|
evaluateAddPayloadToSingletonCasesUC(myAddPayloadToSingletonCases()))
|
|
if getVersion() == 0 {
|
|
expectEqual([0],
|
|
evaluateAddPayloadToSingletonCasesUC(addPayloadToSingletonCases(s)))
|
|
} else {
|
|
expectEqual([0, -1],
|
|
evaluateAddPayloadToSingletonCasesUC(addPayloadToSingletonCases(s)))
|
|
}
|
|
}
|
|
|
|
expectEqual(starfishCount, 0)
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////////////////
|
|
|
|
func myAddNoPayloadToSinglePayloadCases(_ s: Starfish)
|
|
-> [AddNoPayloadToSinglePayload] {
|
|
return [.Cats(s), .Noses]
|
|
}
|
|
|
|
func evaluateAddNoPayloadToSinglePayloadCases(_ s: Starfish,
|
|
_ e: [AddNoPayloadToSinglePayload])
|
|
-> [Int] {
|
|
return e.map {
|
|
switch $0 {
|
|
case .Cats(let ss):
|
|
expectTrue(s === ss)
|
|
return 0
|
|
case .Noses:
|
|
return 1
|
|
default:
|
|
return -1
|
|
}
|
|
}
|
|
}
|
|
|
|
EnumAddCasesTest.test("AddNoPayloadToSinglePayload") {
|
|
do {
|
|
let s = Starfish()
|
|
expectEqual([0, 1],
|
|
evaluateAddNoPayloadToSinglePayloadCases(s, myAddNoPayloadToSinglePayloadCases(s)))
|
|
if getVersion() == 0 {
|
|
expectEqual([0, 1],
|
|
evaluateAddNoPayloadToSinglePayloadCases(s, addNoPayloadToSinglePayloadCases(s)))
|
|
} else {
|
|
expectEqual([0, 1, -1],
|
|
evaluateAddNoPayloadToSinglePayloadCases(s, addNoPayloadToSinglePayloadCases(s)))
|
|
}
|
|
}
|
|
expectEqual(starfishCount, 0)
|
|
}
|
|
|
|
func evaluateAddNoPayloadToSinglePayloadCasesUC(_ s: Starfish,
|
|
_ e: [AddNoPayloadToSinglePayload])
|
|
-> [Int] {
|
|
return e.map {
|
|
switch $0 {
|
|
case .Cats(let ss):
|
|
expectTrue(s === ss)
|
|
return 0
|
|
case .Noses:
|
|
return 1
|
|
default:
|
|
return -1
|
|
}
|
|
}
|
|
}
|
|
|
|
EnumAddCasesTest.test("AddNoPayloadToSinglePayload/UnknownCase") {
|
|
do {
|
|
let s = Starfish()
|
|
expectEqual([0, 1],
|
|
evaluateAddNoPayloadToSinglePayloadCasesUC(s, myAddNoPayloadToSinglePayloadCases(s)))
|
|
if getVersion() == 0 {
|
|
expectEqual([0, 1],
|
|
evaluateAddNoPayloadToSinglePayloadCasesUC(s, addNoPayloadToSinglePayloadCases(s)))
|
|
} else {
|
|
expectEqual([0, 1, -1],
|
|
evaluateAddNoPayloadToSinglePayloadCasesUC(s, addNoPayloadToSinglePayloadCases(s)))
|
|
}
|
|
}
|
|
expectEqual(starfishCount, 0)
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////////////////
|
|
|
|
func myAddPayloadToSinglePayloadCases(_ s: Starfish)
|
|
-> [AddPayloadToSinglePayload] {
|
|
return [.Cats, .Paws(s)]
|
|
}
|
|
|
|
func evaluateAddPayloadToSinglePayloadCases(_ s: Starfish,
|
|
_ e: [AddPayloadToSinglePayload])
|
|
-> [Int] {
|
|
return e.map {
|
|
switch $0 {
|
|
case .Cats:
|
|
return 0
|
|
case .Paws(let ss):
|
|
expectTrue(s === ss)
|
|
return 1
|
|
default:
|
|
return -1
|
|
}
|
|
}
|
|
}
|
|
|
|
EnumAddCasesTest.test("AddPayloadToSinglePayload") {
|
|
do {
|
|
let s = Starfish()
|
|
expectEqual([0, 1],
|
|
evaluateAddPayloadToSinglePayloadCases(s, myAddPayloadToSinglePayloadCases(s)))
|
|
if getVersion() == 0 {
|
|
expectEqual([0, 1],
|
|
evaluateAddPayloadToSinglePayloadCases(s, addPayloadToSinglePayloadCases(s)))
|
|
} else {
|
|
expectEqual([0, 1, -1],
|
|
evaluateAddPayloadToSinglePayloadCases(s, addPayloadToSinglePayloadCases(s)))
|
|
}
|
|
}
|
|
expectEqual(starfishCount, 0)
|
|
}
|
|
|
|
func evaluateAddPayloadToSinglePayloadCasesUC(_ s: Starfish,
|
|
_ e: [AddPayloadToSinglePayload])
|
|
-> [Int] {
|
|
return e.map {
|
|
switch $0 {
|
|
case .Cats:
|
|
return 0
|
|
case .Paws(let ss):
|
|
expectTrue(s === ss)
|
|
return 1
|
|
@unknown case _:
|
|
return -1
|
|
}
|
|
}
|
|
}
|
|
|
|
EnumAddCasesTest.test("AddPayloadToSinglePayload/UnknownCase") {
|
|
do {
|
|
let s = Starfish()
|
|
expectEqual([0, 1],
|
|
evaluateAddPayloadToSinglePayloadCasesUC(s, myAddPayloadToSinglePayloadCases(s)))
|
|
if getVersion() == 0 {
|
|
expectEqual([0, 1],
|
|
evaluateAddPayloadToSinglePayloadCasesUC(s, addPayloadToSinglePayloadCases(s)))
|
|
} else {
|
|
expectEqual([0, 1, -1],
|
|
evaluateAddPayloadToSinglePayloadCasesUC(s, addPayloadToSinglePayloadCases(s)))
|
|
}
|
|
}
|
|
expectEqual(starfishCount, 0)
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////////////////
|
|
|
|
func myAddNoPayloadToMultiPayloadCases(_ s: Starfish)
|
|
-> [AddNoPayloadToMultiPayload] {
|
|
return [.Cats(s), .Puppies(s)]
|
|
}
|
|
|
|
func evaluateAddNoPayloadToMultiPayloadCases(_ s: Starfish,
|
|
_ e: [AddNoPayloadToMultiPayload])
|
|
-> [Int] {
|
|
return e.map {
|
|
switch $0 {
|
|
case .Cats(let ss):
|
|
expectTrue(s === ss)
|
|
return 0
|
|
case .Puppies(let ss):
|
|
expectTrue(s === ss)
|
|
return 1
|
|
default:
|
|
return -1
|
|
}
|
|
}
|
|
}
|
|
|
|
EnumAddCasesTest.test("AddNoPayloadToMultiPayload") {
|
|
do {
|
|
let s = Starfish()
|
|
expectEqual([0, 1],
|
|
evaluateAddNoPayloadToMultiPayloadCases(s, myAddNoPayloadToMultiPayloadCases(s)))
|
|
if getVersion() == 0 {
|
|
expectEqual([0, 1],
|
|
evaluateAddNoPayloadToMultiPayloadCases(s, addNoPayloadToMultiPayloadCases(s)))
|
|
} else {
|
|
expectEqual([0, 1, -1, -1],
|
|
evaluateAddNoPayloadToMultiPayloadCases(s, addNoPayloadToMultiPayloadCases(s)))
|
|
}
|
|
}
|
|
expectEqual(starfishCount, 0)
|
|
}
|
|
|
|
func evaluateAddNoPayloadToMultiPayloadCasesUC(_ s: Starfish,
|
|
_ e: [AddNoPayloadToMultiPayload])
|
|
-> [Int] {
|
|
return e.map {
|
|
switch $0 {
|
|
case .Cats(let ss):
|
|
expectTrue(s === ss)
|
|
return 0
|
|
case .Puppies(let ss):
|
|
expectTrue(s === ss)
|
|
return 1
|
|
@unknown case _:
|
|
return -1
|
|
}
|
|
}
|
|
}
|
|
|
|
EnumAddCasesTest.test("AddNoPayloadToMultiPayload/UnknownCase") {
|
|
do {
|
|
let s = Starfish()
|
|
expectEqual([0, 1],
|
|
evaluateAddNoPayloadToMultiPayloadCasesUC(s, myAddNoPayloadToMultiPayloadCases(s)))
|
|
if getVersion() == 0 {
|
|
expectEqual([0, 1],
|
|
evaluateAddNoPayloadToMultiPayloadCasesUC(s, addNoPayloadToMultiPayloadCases(s)))
|
|
} else {
|
|
expectEqual([0, 1, -1, -1],
|
|
evaluateAddNoPayloadToMultiPayloadCasesUC(s, addNoPayloadToMultiPayloadCases(s)))
|
|
}
|
|
}
|
|
expectEqual(starfishCount, 0)
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////////////////
|
|
|
|
func myAddPayloadToMultiPayloadCases(_ s: Starfish)
|
|
-> [AddPayloadToMultiPayload] {
|
|
return [.Cats(s), .Ponies(s), .Pandas]
|
|
}
|
|
|
|
func evaluateAddPayloadToMultiPayloadCases(_ s: Starfish,
|
|
_ e: [AddPayloadToMultiPayload])
|
|
-> [Int] {
|
|
return e.map {
|
|
switch $0 {
|
|
case .Cats(let ss):
|
|
expectTrue(s === ss)
|
|
return 0
|
|
case .Ponies(let ss):
|
|
expectTrue(s === ss)
|
|
return 1
|
|
case .Pandas:
|
|
return 2
|
|
default:
|
|
return -1
|
|
}
|
|
}
|
|
}
|
|
|
|
EnumAddCasesTest.test("AddPayloadToMultiPayload") {
|
|
do {
|
|
let s = Starfish()
|
|
expectEqual([0, 1, 2],
|
|
evaluateAddPayloadToMultiPayloadCases(s, myAddPayloadToMultiPayloadCases(s)))
|
|
if getVersion() == 0 {
|
|
expectEqual([0, 1, 2],
|
|
evaluateAddPayloadToMultiPayloadCases(s, addPayloadToMultiPayloadCases(s)))
|
|
} else {
|
|
expectEqual([0, 1, 2, -1],
|
|
evaluateAddPayloadToMultiPayloadCases(s, addPayloadToMultiPayloadCases(s)))
|
|
}
|
|
}
|
|
expectEqual(starfishCount, 0)
|
|
}
|
|
|
|
func evaluateAddPayloadToMultiPayloadCasesUC(_ s: Starfish,
|
|
_ e: [AddPayloadToMultiPayload])
|
|
-> [Int] {
|
|
return e.map {
|
|
switch $0 {
|
|
case .Cats(let ss):
|
|
expectTrue(s === ss)
|
|
return 0
|
|
case .Ponies(let ss):
|
|
expectTrue(s === ss)
|
|
return 1
|
|
case .Pandas:
|
|
return 2
|
|
@unknown case _:
|
|
return -1
|
|
}
|
|
}
|
|
}
|
|
|
|
EnumAddCasesTest.test("AddPayloadToMultiPayload/UnknownCase") {
|
|
do {
|
|
let s = Starfish()
|
|
expectEqual([0, 1, 2],
|
|
evaluateAddPayloadToMultiPayloadCasesUC(s, myAddPayloadToMultiPayloadCases(s)))
|
|
if getVersion() == 0 {
|
|
expectEqual([0, 1, 2],
|
|
evaluateAddPayloadToMultiPayloadCasesUC(s, addPayloadToMultiPayloadCases(s)))
|
|
} else {
|
|
expectEqual([0, 1, 2, -1],
|
|
evaluateAddPayloadToMultiPayloadCasesUC(s, addPayloadToMultiPayloadCases(s)))
|
|
}
|
|
}
|
|
expectEqual(starfishCount, 0)
|
|
}
|
|
|
|
runAllTests()
|
|
|