// RUN: %target-build-swift -O %s -module-name=test -Xllvm -sil-disable-pass=FunctionSignatureOpts -o %t.out
// RUN: %target-build-swift -O %s -module-name=test -Xllvm -sil-disable-pass=FunctionSignatureOpts -emit-sil | %FileCheck %s
// RUN: %target-run %t.out
// UNSUPPORTED: nonatomic_rc
// UNSUPPORTED: resilient_stdlib

import StdlibUnittest

// CHECK-LABEL: // SmallEnum.init(rawValue:)
// CHECK-NEXT:  sil {{.*}} @{{.*}}SmallEnum{{.*}}rawValue{{.*}} :
// CHECK-DAG:     global_value @{{.*}}SmallEnum{{.*}}rawValue{{.*}}
// CHECK-DAG:     // function_ref _findStringSwitchCase(cases:string:)
// CHECK:         return

enum SmallEnum : String {
  case c1 = "Swift"
  case c2 = "is"
  case c3 = "a"
  case c4 = "general-purpose"
  case c5 = "programming language"
}

// CHECK-LABEL: // LargeEnum.init(rawValue:)
// CHECK-NEXT:  sil {{.*}} @{{.*}}LargeEnum{{.*}}rawValue{{.*}} :
// CHECK-DAG:     global_value @{{.*}}LargeEnum{{.*}}rawValue{{.*}}
// CHECK-DAG:     // function_ref _findStringSwitchCaseWithCache(cases:string:cache:)
// CHECK:         return

enum LargeEnum : String {
  case c1 = "Swift"
  case c2 = "is"
  case c3 = "a"
  case c4 = "general-purpose"
  case c5 = "programming language"
  case c7 = "built"
  case c8 = "using"
  case c10 = "modern"
  case c11 = "approach"
  case c12 = "to"
  case c13 = "safety,"
  case c14 = "performance,"
  case c15 = "and"
  case c16 = "software"
  case c17 = "design"
  case c18 = "patterns."
  case c19 = ""
  case c20 = "The"
  case c21 = "goal"
  case c22 = "of"
  case c23 = "the"
  case c25 = "project"
  case c28 = "create"
  case c30 = "best"
  case c31 = "available"
  case c33 = "for"
  case c34 = "uses"
  case c35 = "ranging"
  case c36 = "from"
  case c37 = "systems"
  case c40 = "mobile"
  case c42 = "desktop"
  case c43 = "apps,"
  case c44 = "scaling"
  case c45 = "up"
  case c47 = "cloud"
  case c48 = "services."
}

let SmallInputs : [(String, SmallEnum)] = [
  ("Swift", SmallEnum.c1),
  ("is", SmallEnum.c2),
  ("a", SmallEnum.c3),
  ("general-purpose", SmallEnum.c4),
  ("programming language", SmallEnum.c5),
]

let LargeInputs : [(String, LargeEnum)] = [
  ("Swift", LargeEnum.c1),
  ("is", LargeEnum.c2),
  ("a", LargeEnum.c3),
  ("general-purpose", LargeEnum.c4),
  ("programming language", LargeEnum.c5),
  ("built", LargeEnum.c7),
  ("using", LargeEnum.c8),
  ("modern", LargeEnum.c10),
  ("approach", LargeEnum.c11),
  ("to", LargeEnum.c12),
  ("safety,", LargeEnum.c13),
  ("performance,", LargeEnum.c14),
  ("and", LargeEnum.c15),
  ("software", LargeEnum.c16),
  ("design", LargeEnum.c17),
  ("patterns.", LargeEnum.c18),
  ("", LargeEnum.c19),
  ("The", LargeEnum.c20),
  ("goal", LargeEnum.c21),
  ("of", LargeEnum.c22),
  ("the", LargeEnum.c23),
  ("project", LargeEnum.c25),
  ("create", LargeEnum.c28),
  ("best", LargeEnum.c30),
  ("available", LargeEnum.c31),
  ("for", LargeEnum.c33),
  ("uses", LargeEnum.c34),
  ("ranging", LargeEnum.c35),
  ("from", LargeEnum.c36),
  ("systems", LargeEnum.c37),
  ("mobile", LargeEnum.c40),
  ("desktop", LargeEnum.c42),
  ("apps,", LargeEnum.c43),
  ("scaling", LargeEnum.c44),
  ("up", LargeEnum.c45),
  ("cloud", LargeEnum.c47),
  ("services.", LargeEnum.c48)
]

var StringSwitchTestSuite = TestSuite("StringSwitch")

StringSwitchTestSuite.test("small_enum_init") {
  runRaceTest(trials: 10, timeoutInSeconds: 0) {
    for i in SmallInputs {
      expectEqual(SmallEnum(rawValue: i.0), i.1)
    }
  }
}

StringSwitchTestSuite.test("large_enum_init") {
  runRaceTest(trials: 10, timeoutInSeconds: 0) {
    for i in LargeInputs {
      expectEqual(LargeEnum(rawValue: i.0), i.1)
    }
  }
}

runAllTests()

