in daffodil-tdml-lib/src/main/scala/org/apache/daffodil/tdml/TDMLRunner.scala [1053:1131]
override def runProcessor(
compileResult: TDML.CompileResult,
optDataToParse: Option[InputStream],
optLengthLimitInBits: Option[Long],
optExpectedErrors: Option[Seq[ExpectedErrors]],
optExpectedWarnings: Option[Seq[ExpectedWarnings]],
optExpectedValidationErrors: Option[Seq[ExpectedValidationErrors]],
validationMode: ValidationMode.Type,
roundTrip: RoundTrip,
implString: Option[String]
) = {
Assert.usage(
optLengthLimitInBits.isDefined,
"TDML tests should always have a length limit."
)
val nBits = optLengthLimitInBits.get
val dataToParse = optDataToParse.get
(optExpectedInfoset, optExpectedErrors) match {
case (Some(_), None) => {
compileResult match {
case Left(diags) =>
checkDiagnosticMessages(
diags,
optExpectedErrors,
optExpectedWarnings,
optExpectedValidationErrors,
implString
)
case Right((diags, proc)) => {
processor = proc
runParseExpectSuccess(
dataToParse,
nBits,
optExpectedWarnings,
optExpectedValidationErrors,
validationMode,
roundTrip,
implString,
diags
)
}
}
}
case (None, Some(_)) => {
compileResult match {
case Left(diags) =>
checkDiagnosticMessages(
diags,
optExpectedErrors,
optExpectedWarnings,
optExpectedValidationErrors,
implString
)
case Right((diags, proc)) => {
processor = proc
runParseExpectErrors(
dataToParse,
nBits,
optExpectedErrors,
optExpectedWarnings,
optExpectedValidationErrors,
validationMode,
implString,
diags
)
}
}
}
case _ =>
throw TDMLException(
"Either tdml:infoset or tdml:errors must be present in the test.",
implString
)
}
}