PageRenderTime 56ms CodeModel.GetById 9ms RepoModel.GetById 0ms app.codeStats 0ms

/validation-test/Evolution/test_enum_add_cases.swift

https://gitlab.com/dwiktor/swift
Swift | 233 lines | 196 code | 30 blank | 7 comment | 24 complexity | eefb770fd11637dea0f9709c72b528da MD5 | raw file
  1. // RUN: %target-resilience-test
  2. // REQUIRES: executable_test
  3. import StdlibUnittest
  4. import enum_add_cases
  5. var EnumAddCasesTest = TestSuite("EnumAddCases")
  6. func myAddNoPayloadToSingletonCases() -> [AddNoPayloadToSingleton] {
  7. return [.Noses]
  8. }
  9. func evaluateAddNoPayloadToSingletonCases(_ e: [AddNoPayloadToSingleton]) -> [Int] {
  10. return e.map {
  11. switch $0 {
  12. case .Noses:
  13. return 0
  14. default:
  15. return -1
  16. }
  17. }
  18. }
  19. EnumAddCasesTest.test("AddNoPayloadToSingleton") {
  20. expectEqual([0],
  21. evaluateAddNoPayloadToSingletonCases(myAddNoPayloadToSingletonCases()))
  22. if getVersion() == 0 {
  23. expectEqual([0],
  24. evaluateAddNoPayloadToSingletonCases(addNoPayloadToSingletonCases()))
  25. } else {
  26. expectEqual([0, -1, -1],
  27. evaluateAddNoPayloadToSingletonCases(addNoPayloadToSingletonCases()))
  28. }
  29. }
  30. ///////////////////////////////////////////////////////////////////////
  31. func myAddPayloadToSingletonCases() -> [AddPayloadToSingleton] {
  32. return [.Cats]
  33. }
  34. func evaluateAddPayloadToSingletonCases(_ e: [AddPayloadToSingleton]) -> [Int] {
  35. return e.map {
  36. switch $0 {
  37. case .Cats:
  38. return 0
  39. default:
  40. return -1
  41. }
  42. }
  43. }
  44. EnumAddCasesTest.test("AddPayloadToSingleton") {
  45. do {
  46. let s = Starfish()
  47. expectEqual([0],
  48. evaluateAddPayloadToSingletonCases(myAddPayloadToSingletonCases()))
  49. if getVersion() == 0 {
  50. expectEqual([0],
  51. evaluateAddPayloadToSingletonCases(addPayloadToSingletonCases(s)))
  52. } else {
  53. expectEqual([0, -1],
  54. evaluateAddPayloadToSingletonCases(addPayloadToSingletonCases(s)))
  55. }
  56. }
  57. expectEqual(starfishCount, 0)
  58. }
  59. ///////////////////////////////////////////////////////////////////////
  60. func myAddNoPayloadToSinglePayloadCases(_ s: Starfish)
  61. -> [AddNoPayloadToSinglePayload] {
  62. return [.Cats(s), .Noses]
  63. }
  64. func evaluateAddNoPayloadToSinglePayloadCases(_ s: Starfish,
  65. _ e: [AddNoPayloadToSinglePayload])
  66. -> [Int] {
  67. return e.map {
  68. switch $0 {
  69. case .Cats(let ss):
  70. expectTrue(s === ss)
  71. return 0
  72. case .Noses:
  73. return 1
  74. default:
  75. return -1
  76. }
  77. }
  78. }
  79. EnumAddCasesTest.test("AddNoPayloadToSinglePayload") {
  80. do {
  81. let s = Starfish()
  82. expectEqual([0, 1],
  83. evaluateAddNoPayloadToSinglePayloadCases(s, myAddNoPayloadToSinglePayloadCases(s)))
  84. if getVersion() == 0 {
  85. expectEqual([0, 1],
  86. evaluateAddNoPayloadToSinglePayloadCases(s, addNoPayloadToSinglePayloadCases(s)))
  87. } else {
  88. expectEqual([0, 1, -1],
  89. evaluateAddNoPayloadToSinglePayloadCases(s, addNoPayloadToSinglePayloadCases(s)))
  90. }
  91. }
  92. expectEqual(starfishCount, 0)
  93. }
  94. ///////////////////////////////////////////////////////////////////////
  95. func myAddPayloadToSinglePayloadCases(_ s: Starfish)
  96. -> [AddPayloadToSinglePayload] {
  97. return [.Cats, .Paws(s)]
  98. }
  99. func evaluateAddPayloadToSinglePayloadCases(_ s: Starfish,
  100. _ e: [AddPayloadToSinglePayload])
  101. -> [Int] {
  102. return e.map {
  103. switch $0 {
  104. case .Cats:
  105. return 0
  106. case .Paws(let ss):
  107. expectTrue(s === ss)
  108. return 1
  109. default:
  110. return -1
  111. }
  112. }
  113. }
  114. EnumAddCasesTest.test("AddPayloadToSinglePayload") {
  115. do {
  116. let s = Starfish()
  117. expectEqual([0, 1],
  118. evaluateAddPayloadToSinglePayloadCases(s, myAddPayloadToSinglePayloadCases(s)))
  119. if getVersion() == 0 {
  120. expectEqual([0, 1],
  121. evaluateAddPayloadToSinglePayloadCases(s, addPayloadToSinglePayloadCases(s)))
  122. } else {
  123. expectEqual([0, 1, -1],
  124. evaluateAddPayloadToSinglePayloadCases(s, addPayloadToSinglePayloadCases(s)))
  125. }
  126. }
  127. expectEqual(starfishCount, 0)
  128. }
  129. ///////////////////////////////////////////////////////////////////////
  130. func myAddNoPayloadToMultiPayloadCases(_ s: Starfish)
  131. -> [AddNoPayloadToMultiPayload] {
  132. return [.Cats(s), .Puppies(s)]
  133. }
  134. func evaluateAddNoPayloadToMultiPayloadCases(_ s: Starfish,
  135. _ e: [AddNoPayloadToMultiPayload])
  136. -> [Int] {
  137. return e.map {
  138. switch $0 {
  139. case .Cats(let ss):
  140. expectTrue(s === ss)
  141. return 0
  142. case .Puppies(let ss):
  143. expectTrue(s === ss)
  144. return 1
  145. default:
  146. return -1
  147. }
  148. }
  149. }
  150. EnumAddCasesTest.test("AddNoPayloadToMultiPayload") {
  151. do {
  152. let s = Starfish()
  153. expectEqual([0, 1],
  154. evaluateAddNoPayloadToMultiPayloadCases(s, myAddNoPayloadToMultiPayloadCases(s)))
  155. if getVersion() == 0 {
  156. expectEqual([0, 1],
  157. evaluateAddNoPayloadToMultiPayloadCases(s, addNoPayloadToMultiPayloadCases(s)))
  158. } else {
  159. expectEqual([0, 1, -1, -1],
  160. evaluateAddNoPayloadToMultiPayloadCases(s, addNoPayloadToMultiPayloadCases(s)))
  161. }
  162. }
  163. expectEqual(starfishCount, 0)
  164. }
  165. ///////////////////////////////////////////////////////////////////////
  166. func myAddPayloadToMultiPayloadCases(_ s: Starfish)
  167. -> [AddPayloadToMultiPayload] {
  168. return [.Cats(s), .Ponies(s), .Pandas]
  169. }
  170. func evaluateAddPayloadToMultiPayloadCases(_ s: Starfish,
  171. _ e: [AddPayloadToMultiPayload])
  172. -> [Int] {
  173. return e.map {
  174. switch $0 {
  175. case .Cats(let ss):
  176. expectTrue(s === ss)
  177. return 0
  178. case .Ponies(let ss):
  179. expectTrue(s === ss)
  180. return 1
  181. case .Pandas:
  182. return 2
  183. default:
  184. return -1
  185. }
  186. }
  187. }
  188. EnumAddCasesTest.test("AddPayloadToMultiPayload") {
  189. do {
  190. let s = Starfish()
  191. expectEqual([0, 1, 2],
  192. evaluateAddPayloadToMultiPayloadCases(s, myAddPayloadToMultiPayloadCases(s)))
  193. if getVersion() == 0 {
  194. expectEqual([0, 1, 2],
  195. evaluateAddPayloadToMultiPayloadCases(s, addPayloadToMultiPayloadCases(s)))
  196. } else {
  197. expectEqual([0, 1, 2, -1],
  198. evaluateAddPayloadToMultiPayloadCases(s, addPayloadToMultiPayloadCases(s)))
  199. }
  200. }
  201. expectEqual(starfishCount, 0)
  202. }
  203. runAllTests()