tracks/scala/testgen/src/main/scala/testgen/TestSuiteBuilder.scala in trackler-2.2.1.3 vs tracks/scala/testgen/src/main/scala/testgen/TestSuiteBuilder.scala in trackler-2.2.1.4
- old
+ new
@@ -8,10 +8,11 @@
object TestSuiteBuilder {
type TestSuiteTemplate = Template1[TestSuiteData, Txt]
type ToTestCaseData = String => LabeledTestItem => TestCaseData
+ type ToOptionTestCaseData = String => LabeledTestItem => Option[TestCaseData]
private val DefaultTemplate: TestSuiteTemplate =
txt.funSuiteTemplate.asInstanceOf[Template1[TestSuiteData, Txt]]
def build(file: File, toTestCaseData: ToTestCaseData, imports: Seq[String] = Seq())(
@@ -27,10 +28,28 @@
TestSuiteData(tsName, version, imports, testCases)
template.render(testSuiteData).toString
}
+ def buildFromOption(file: File, toTestCaseData: ToOptionTestCaseData, imports: Seq[String] = Seq())(
+ implicit template: TestSuiteTemplate = DefaultTemplate): String =
+ {
+ val exercise @ Exercise(name, version, cases, comments) =
+ CanonicalDataParser.parse(file)
+ val tsName = testSuiteName(name)
+ val testCasesAllPending = cases.map(toTestCaseData(sutName(name))).flatten
+ val testCases =
+ testCasesAllPending updated(0, testCasesAllPending.head.copy(pending = false))
+ val testSuiteData =
+ TestSuiteData(tsName, version, imports, testCases)
+
+ template.render(testSuiteData).toString
+ }
+
def withLabeledTest(f: String => LabeledTest => TestCaseData): ToTestCaseData =
+ sut => item => f(sut)(item.asInstanceOf[LabeledTest])
+
+ def withLabeledTestOpt(f: String => LabeledTest => Option[TestCaseData]): ToOptionTestCaseData =
sut => item => f(sut)(item.asInstanceOf[LabeledTest])
def fromLabeledTest(argNames: String*): ToTestCaseData =
withLabeledTest { sut => labeledTest =>
val sutFunction = labeledTest.property