blob: 447a4e94e7d22b51e18ff1b34c39b5866b018882 [file] [log] [blame]
// RUN: %target-resilience-test
// REQUIRES: executable_test
// Use swift-version 4.
// UNSUPPORTED: swift_test_mode_optimize_none_with_implicit_dynamic
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()