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