Skip to content

Commit 5c82701

Browse files
committed
Add evolution test case for resiliently reordering enum cases
1 parent ce7608a commit 5c82701

File tree

2 files changed

+87
-0
lines changed

2 files changed

+87
-0
lines changed
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
public enum GenericResilientEnum<T> {
2+
#if BEFORE
3+
case FirstCase
4+
case SecondCase
5+
case ThirdCase(SomeObject)
6+
case ForthCase(T)
7+
#else
8+
case SecondCase
9+
case ForthCase(T)
10+
case FirstCase
11+
case ThirdCase(SomeObject)
12+
#endif
13+
}
14+
15+
public class SomeObject {
16+
public func someNumber() -> Int{
17+
return 7
18+
}
19+
}
20+
public func createGenericResilientEnum1() -> GenericResilientEnum<Int> {
21+
return GenericResilientEnum.FirstCase
22+
}
23+
24+
public func createGenericResilientEnum2() -> GenericResilientEnum<Int> {
25+
return GenericResilientEnum.SecondCase
26+
}
27+
public func createGenericResilientEnum3() -> GenericResilientEnum<Int> {
28+
return GenericResilientEnum.ThirdCase(SomeObject())
29+
}
30+
public func createGenericResilientEnum4<T>(_ t: T) -> GenericResilientEnum<T> {
31+
return GenericResilientEnum.ForthCase(t)
32+
}
33+
34+
public func getCase<T>(_ e: GenericResilientEnum<T>) -> Int {
35+
var whichCase = 0
36+
switch e {
37+
case .FirstCase:
38+
whichCase = 1
39+
case .SecondCase:
40+
whichCase = 2
41+
case .ThirdCase(_):
42+
whichCase = 3
43+
case .ForthCase(_):
44+
whichCase = 4
45+
}
46+
return whichCase
47+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
// RUN: %target-resilience-test
2+
// REQUIRES: executable_test
3+
4+
import enum_reorder_cases
5+
import StdlibUnittest
6+
7+
var EnumReorderCases = TestSuite("EnumReorderCases")
8+
9+
func testGenericResilience<T: Equatable>(
10+
_ e: GenericResilientEnum<T>, expectedCase: Int, expectedValue: T
11+
) {
12+
var whichCase = 0
13+
switch e {
14+
case .FirstCase:
15+
whichCase = 1
16+
case .SecondCase:
17+
whichCase = 2
18+
case .ThirdCase(let o):
19+
whichCase = 3
20+
expectEqual(o.someNumber(), 7)
21+
case .ForthCase(let t):
22+
whichCase = 4
23+
expectEqual(t, expectedValue)
24+
}
25+
expectEqual(whichCase, expectedCase)
26+
}
27+
28+
EnumReorderCases.test("test1") {
29+
let e1 = GenericResilientEnum<Float>.FirstCase
30+
testGenericResilience(e1, expectedCase: 1, expectedValue: 0)
31+
expectEqual(getCase(e1), 1)
32+
let e2 = createGenericResilientEnum2()
33+
testGenericResilience(e2, expectedCase: 2, expectedValue: 0)
34+
let e3 = createGenericResilientEnum3()
35+
testGenericResilience(e3, expectedCase: 3, expectedValue: 0)
36+
let e4 = createGenericResilientEnum4(8)
37+
testGenericResilience(e4, expectedCase: 4, expectedValue: 8)
38+
}
39+
40+
runAllTests()

0 commit comments

Comments
 (0)