You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@daffodil.apache.org by ji...@apache.org on 2021/11/11 22:33:55 UTC

[daffodil] branch main updated: Rename runtime2 test files, round-trip tests, improve coverage

This is an automated email from the ASF dual-hosted git repository.

jinterrante pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/daffodil.git


The following commit(s) were added to refs/heads/main by this push:
     new 39c604f  Rename runtime2 test files, round-trip tests, improve coverage
39c604f is described below

commit 39c604f4176b20f9ff7a9a683d6eee0f09d659b0
Author: John Interrante <in...@research.ge.com>
AuthorDate: Fri Nov 5 15:42:07 2021 -0400

    Rename runtime2 test files, round-trip tests, improve coverage
    
    Rename all runtime2 test files to have names like test.dat for test
    data files and test.dat.xml for test infoset files.  Simplify runtime2
    TDML test cases by enabling round-tripping, merging pairs of parser
    test cases and unparser test cases, and removing unneeded attributes
    (description, root).  Fix problem found in Runtime2TDMLDFDLProcessor
    after enabling round-tripping.  Implement runtime2 parse validation
    errors so that TDML test cases can handle validation errors separately
    from parse errors.  Add tests and simplify code to improve coverage.
    
    SDE.scala - Add ValidationError(String, Any*) constructor to allow
    Runtime2DataProcessor to create validation errors since it doesn't
    have a PStateOrUnparseState runtime context.  Remove unused
    ValidationError "this" constructor to prevent code coverage warning.
    Move schemaContext substitution logic to where it's really needed and
    simplify it by removing Maybe[] from a parameter type.
    
    ProcessorStateBases.scala - Remove Maybe() from a ValidationError
    constructor call.
    
    Makefile - Replace PARSE_DAT=parse.dat and UNPARSE_XML=unparse.xml
    with TEST_DAT=test.dat and TEST_DAT_XML=test.dat.xml.
    
    Runtime2DataProcessor.scala - Modify parse method and ParseResult to
    return a ValidationResult inside ParseResult with validation errors
    read from standard output or standard error after parsing infile with
    C executable.  Remove if statements and simplify parse validation
    error code to prevent code coverage warnings.  Make parse error and
    unparse error messages consistent and clearer.  Add
    ParseResult.infosetAsXML try-catch to handle scala.xml.loadFile
    errors.
    
    *_parse.dat - Remove the "_parse" and rename to *.dat.
    
    *_unparse.xml - Remove the "_unparse" and rename to *.dat.xml.
    
    *.tdml - Enable round-tripping for all test cases by setting
    defaultRoundTrip="onePass".  Remove all unparserTestCases made
    superfluous by round-tripping.  Change names of all test files.
    Remove unneeded description and root attributes.
    
    ex_nums.dfdl.xsd - Simplify representation property bindings.
    
    ex_nums.error.dat, ex_nums.runtime1.error.dat.xml - Add new data and
    infoset files for new ex_nums_runtime1_error test case.
    
    ex_nums.tdml - Update names of test files.  Add new
    ex_nums_runtime1_error test case to test same ex_nums.error.dat data
    file with both runtime1 and runtime2.  Change original
    ex_nums_runtime2_error test case from unparseTestCase to
    parseTestCase, make it parse same ex_nums.error.dat data file, and
    change its errors from tdml:errors to tdml:validationErrors.
    
    nested.dfdl.xsd - Simplify representation property bindings and simple
    types.
    
    Test*.scala - Add parse and unparse expected error tests to improve
    code coverage.  Drop "_parse" from names of test cases and remove
    "_unparse" test cases.  Call new ex_nums_runtime1_error test case.
    
    Runtime2TDMLDFDLProcessor.scala - Fix bug found after enabling
    round-tripping where errors were still being held by
    Runtime2TDMLDFDLProcessor betweeen test cases.  Don't store any errors
    in Runtime2TDMLDFDLProcessor since Runtime2TDMLParseResult and
    Runtime2TDMLUnparseResult already carry any errors back to TDMLRunner.
    
    Rat.scala - Update names of runtime2 test data files.
    
    DAFFODIL-2583
---
 .../main/scala/org/apache/daffodil/dsom/SDE.scala  |  36 ++--
 .../daffodil/processors/ProcessorStateBases.scala  |   2 +-
 .../org/apache/daffodil/runtime2/c/Makefile        |  22 +-
 .../daffodil/runtime2/Runtime2DataProcessor.scala  |  43 ++--
 .../runtime2/{ex_nums_parse.dat => ex_nums.dat}    | Bin
 .../org/apache/daffodil/runtime2/ex_nums.dfdl.xsd  |  16 +-
 .../{ex_nums_parse.dat => ex_nums.error.dat}       | Bin 196 -> 197 bytes
 ...parse_runtime1.xml => ex_nums.runtime1.dat.xml} |   0
 ...e_errors.xml => ex_nums.runtime1.error.dat.xml} |   0
 ...parse_runtime2.xml => ex_nums.runtime2.dat.xml} |   0
 ...e_errors.xml => ex_nums.runtime2.error.dat.xml} |   8 +-
 .../org/apache/daffodil/runtime2/ex_nums.tdml      |  99 ++++++---
 .../org/apache/daffodil/runtime2/nested.dfdl.xsd   |  28 ++-
 .../{nested_struct_parse.dat => nested.struct.dat} | Bin
 ...ed_struct_unparse.xml => nested.struct.dat.xml} |   0
 .../org/apache/daffodil/runtime2/nested.tdml       |  49 +----
 ...sted_union_parse_4.dat => nested.union.bar.dat} | Bin
 ...nion_unparse_4.xml => nested.union.bar.dat.xml} |   0
 ...sted_union_parse_2.dat => nested.union.foo.dat} | Bin
 ...nion_unparse_2.xml => nested.union.foo.dat.xml} |   0
 .../daffodil/runtime2/TestCodeGenerator.scala      |  36 +++-
 .../tdml/processor/Runtime2TDMLDFDLProcessor.scala |  24 +--
 ...arse_0.dat => ISRM_green_to_orange_60000.0.dat} | Bin
 ..._0.xml => ISRM_green_to_orange_60000.0.dat.xml} |   0
 ...arse_1.dat => ISRM_green_to_orange_60000.1.dat} | Bin
 ..._1.xml => ISRM_green_to_orange_60000.1.dat.xml} |   0
 .../runtime2/ISRM_green_to_orange_60000.tdml       |  46 +---
 ...02_parse.dat => ISRM_orange_to_green_60002.dat} | Bin
 ...arse.xml => ISRM_orange_to_green_60002.dat.xml} |   0
 .../runtime2/ISRM_orange_to_green_60002.tdml       |  25 +--
 ...004_parse.dat => MPU_green_to_orange_60004.dat} | Bin
 ...parse.xml => MPU_green_to_orange_60004.dat.xml} |   0
 .../runtime2/MPU_green_to_orange_60004.tdml        |  25 +--
 ...parse_0.dat => MPU_orange_to_green_60006.0.dat} | Bin
 ...e_0.xml => MPU_orange_to_green_60006.0.dat.xml} |   0
 ...parse_1.dat => MPU_orange_to_green_60006.1.dat} | Bin
 ...e_1.xml => MPU_orange_to_green_60006.1.dat.xml} |   0
 .../runtime2/MPU_orange_to_green_60006.tdml        |  46 +---
 ..._xdcc_bw_parse_11.dat => egress_xdcc_bw.11.dat} | Bin
 ...bw_unparse_11.xml => egress_xdcc_bw.11.dat.xml} |   0
 ..._xdcc_bw_parse_12.dat => egress_xdcc_bw.12.dat} | Bin
 ...bw_unparse_12.xml => egress_xdcc_bw.12.dat.xml} |   0
 ..._xdcc_bw_parse_13.dat => egress_xdcc_bw.13.dat} | Bin
 ...bw_unparse_13.xml => egress_xdcc_bw.13.dat.xml} |   0
 ..._xdcc_bw_parse_14.dat => egress_xdcc_bw.14.dat} | Bin
 ...bw_unparse_14.xml => egress_xdcc_bw.14.dat.xml} |   0
 ..._xdcc_bw_parse_15.dat => egress_xdcc_bw.15.dat} | Bin
 ...bw_unparse_15.xml => egress_xdcc_bw.15.dat.xml} |   0
 ..._xdcc_bw_parse_16.dat => egress_xdcc_bw.16.dat} | Bin
 ...bw_unparse_16.xml => egress_xdcc_bw.16.dat.xml} |   0
 ..._xdcc_bw_parse_17.dat => egress_xdcc_bw.17.dat} | Bin
 ...bw_unparse_17.xml => egress_xdcc_bw.17.dat.xml} |   0
 ..._xdcc_bw_parse_18.dat => egress_xdcc_bw.18.dat} | Bin
 ...bw_unparse_18.xml => egress_xdcc_bw.18.dat.xml} |   0
 ..._xdcc_bw_parse_19.dat => egress_xdcc_bw.19.dat} | Bin
 ...bw_unparse_19.xml => egress_xdcc_bw.19.dat.xml} |   0
 ..._xdcc_bw_parse_20.dat => egress_xdcc_bw.20.dat} | Bin
 ...bw_unparse_20.xml => egress_xdcc_bw.20.dat.xml} |   0
 .../apache/daffodil/runtime2/egress_xdcc_bw.tdml   | 234 +++------------------
 ...cc_bw_parse_111.dat => ingress_xdcc_bw.111.dat} | Bin
 ...unparse_111.xml => ingress_xdcc_bw.111.dat.xml} |   0
 ...cc_bw_parse_112.dat => ingress_xdcc_bw.112.dat} | Bin
 ...unparse_112.xml => ingress_xdcc_bw.112.dat.xml} |   0
 ...cc_bw_parse_113.dat => ingress_xdcc_bw.113.dat} | Bin
 ...unparse_113.xml => ingress_xdcc_bw.113.dat.xml} |   0
 ...cc_bw_parse_114.dat => ingress_xdcc_bw.114.dat} | Bin
 ...unparse_114.xml => ingress_xdcc_bw.114.dat.xml} |   0
 ...cc_bw_parse_115.dat => ingress_xdcc_bw.115.dat} | Bin
 ...unparse_115.xml => ingress_xdcc_bw.115.dat.xml} |   0
 ...cc_bw_parse_116.dat => ingress_xdcc_bw.116.dat} | Bin
 ...unparse_116.xml => ingress_xdcc_bw.116.dat.xml} |   0
 .../apache/daffodil/runtime2/ingress_xdcc_bw.tdml  | 142 ++-----------
 .../apache/daffodil/runtime2/orion-command.tdml    | 161 --------------
 ...{aptina_settings_parse.dat => orion.aptina.dat} | Bin
 ...a_settings_unparse.xml => orion.aptina.dat.xml} |   0
 .../{camera_state_parse.dat => orion.camera.dat}   | Bin
 ...mera_state_unparse.xml => orion.camera.dat.xml} |   0
 .../{command_parse.dat => orion.command.dat}       | Bin
 .../{command_unparse.xml => orion.command.dat.xml} |   0
 .../{orion-command.dfdl.xsd => orion.dfdl.xsd}     |   0
 .../{limits_parse.dat => orion.limits.dat}         | Bin
 .../{limits_unparse.xml => orion.limits.dat.xml}   |   0
 .../{MPU_orange_to_green_60006.tdml => orion.tdml} |  57 +++--
 .../{video_settings_parse.dat => orion.video.dat}  | Bin
 ...eo_settings_unparse.xml => orion.video.dat.xml} |   0
 .../daffodil/runtime2/TestEgressXdccBw.scala       |  30 +--
 .../org/apache/daffodil/runtime2/TestExNums.scala  |   9 +-
 .../daffodil/runtime2/TestIngressXdccBw.scala      |  18 +-
 .../runtime2/TestIsrmGreenToOrange60000.scala      |   6 +-
 .../runtime2/TestIsrmOrangeToGreen60002.scala      |   3 +-
 .../runtime2/TestMpuGreenToOrange60004.scala       |   3 +-
 .../runtime2/TestMpuOrangeToGreen60006.scala       |   6 +-
 .../org/apache/daffodil/runtime2/TestNested.scala  |   9 +-
 ...MpuGreenToOrange60004.scala => TestOrion.scala} |  19 +-
 .../daffodil/runtime2/TestOrionCommand.scala       |  44 ----
 project/Rat.scala                                  |  65 +++---
 96 files changed, 386 insertions(+), 925 deletions(-)

diff --git a/daffodil-runtime1/src/main/scala/org/apache/daffodil/dsom/SDE.scala b/daffodil-runtime1/src/main/scala/org/apache/daffodil/dsom/SDE.scala
index 1a6965a..ac0be30 100644
--- a/daffodil-runtime1/src/main/scala/org/apache/daffodil/dsom/SDE.scala
+++ b/daffodil-runtime1/src/main/scala/org/apache/daffodil/dsom/SDE.scala
@@ -93,28 +93,28 @@ class SchemaDefinitionWarning(schemaContext: Option[SchemaFileLocation],
   def modeName = "Schema Definition"
 }
 
-class ValidationError(schemaContext: Maybe[SchemaFileLocation],
-  runtimeContext: ParseOrUnparseState,
-  maybeCause: Maybe[Throwable],
-  maybeFormatString: Maybe[String],
-  args: Any*)
+class ValidationError(maybeSchemaContext: Maybe[SchemaFileLocation],
+                      maybeRuntimeContext: Maybe[ParseOrUnparseState],
+                      maybeCause: Maybe[Throwable],
+                      maybeFormatString: Maybe[String],
+                      args: Any*)
   extends SchemaDefinitionDiagnosticBase(
-    (if (schemaContext.isDefined) schemaContext else {
-      val mERD = runtimeContext.maybeERD
-      if (mERD.isDefined) Maybe(mERD.get.schemaFileLocation)
-      else Nope
-    }),
-    Maybe(runtimeContext), None, maybeCause, maybeFormatString, args: _*) {
-
-  def this(runtimeContext: ParseOrUnparseState, formatString: String, args: Any*) =
-    this(Nope, runtimeContext, Nope, Maybe(formatString), args: _*)
+    maybeSchemaContext, maybeRuntimeContext, None, maybeCause, maybeFormatString, args: _*) {
 
-  def this(scheamContext: Maybe[SchemaFileLocation],
-    runtimeContext: ParseOrUnparseState, formatString: String, args: Any*) =
-    this(Nope, runtimeContext, Nope, Maybe(formatString), args: _*)
+  def this(schemaContext: SchemaFileLocation,
+           runtimeContext: ParseOrUnparseState, formatString: String, args: Any*) =
+    this(Maybe(schemaContext), Maybe(runtimeContext), Nope, Maybe(formatString), args: _*)
 
   def this(runtimeContext: ParseOrUnparseState, cause: Throwable) =
-    this(Nope, runtimeContext, Maybe(cause), Nope)
+    this(
+      if (runtimeContext.maybeERD.isDefined)
+        Maybe(runtimeContext.maybeERD.get.schemaFileLocation)
+      else
+        Nope,
+      Maybe(runtimeContext), Maybe(cause), Nope)
+
+  def this(formatString: String, args: Any*) =
+    this(Nope, Nope, Nope, Maybe(formatString), args: _*)
 
   override def isError = true
   
diff --git a/daffodil-runtime1/src/main/scala/org/apache/daffodil/processors/ProcessorStateBases.scala b/daffodil-runtime1/src/main/scala/org/apache/daffodil/processors/ProcessorStateBases.scala
index 9e5cd3b..f11c164 100644
--- a/daffodil-runtime1/src/main/scala/org/apache/daffodil/processors/ProcessorStateBases.scala
+++ b/daffodil-runtime1/src/main/scala/org/apache/daffodil/processors/ProcessorStateBases.scala
@@ -401,7 +401,7 @@ abstract class ParseOrUnparseState protected (
 
   final def validationError(msg: String, args: Any*): Unit = {
     val ctxt = getContext()
-    val vde = new ValidationError(Maybe(ctxt.schemaFileLocation), this, msg, args: _*)
+    val vde = new ValidationError(ctxt.schemaFileLocation, this, msg, args: _*)
     _validationStatus = false
     diagnostics = vde :: diagnostics
   }
diff --git a/daffodil-runtime2/src/main/resources/org/apache/daffodil/runtime2/c/Makefile b/daffodil-runtime2/src/main/resources/org/apache/daffodil/runtime2/c/Makefile
index 14c442d..2a5fd6a 100644
--- a/daffodil-runtime2/src/main/resources/org/apache/daffodil/runtime2/c/Makefile
+++ b/daffodil-runtime2/src/main/resources/org/apache/daffodil/runtime2/c/Makefile
@@ -35,14 +35,14 @@ LIBS = -lmxml
 $(PROGRAM): $(HEADERS) $(SOURCES)
 	$(CC) $(CFLAGS) $(INCLUDES) $(SOURCES) $(LIBS) -o $(PROGRAM)
 
-# Step 2: Copy your test files here and rename them to parse.dat and
-# unparse.xml or else edit PARSE_DAT and UNPARSE_XML below.
+# Step 2: Copy your test files here and rename them to test.dat and
+# test.dat.xml or else edit TEST_DAT and TEST_DAT_XML below.
 
-# $ cp ../ex_nums_parse.dat parse.dat
-# $ cp ../ex_nums_unparse_runtime2.xml unparse.xml
+# $ cp ../ex_nums.dat test.dat
+# $ cp ../ex_nums.dat.xml.runtime2 test.dat.xml
 
-PARSE_DAT = parse.dat
-UNPARSE_XML = unparse.xml
+TEST_DAT = test.dat
+TEST_DAT_XML = test.dat.xml
 
 # Step 3: Run the executable on the test files and check that the new
 # scratch files match the original test files.
@@ -52,18 +52,18 @@ UNPARSE_XML = unparse.xml
 check: parse-check unparse-check
 
 parse-check: $(PROGRAM)
-	$(PROGRAM) -o tmp_$(UNPARSE_XML) parse $(PARSE_DAT)
-	xmldiff $(UNPARSE_XML) tmp_$(UNPARSE_XML)
+	$(PROGRAM) -o $(TEST_DAT_XML).tmp parse $(TEST_DAT)
+	xmldiff $(TEST_DAT_XML) $(TEST_DAT_XML).tmp
 
 unparse-check: $(PROGRAM)
-	$(PROGRAM) -o tmp_$(PARSE_DAT) unparse $(UNPARSE_XML)
-	diff $(PARSE_DAT) tmp_$(PARSE_DAT)
+	$(PROGRAM) -o $(TEST_DAT).tmp unparse $(TEST_DAT_XML)
+	diff $(TEST_DAT) $(TEST_DAT).tmp
 
 # Step 4: Remove the executable and scratch files (optional).
 
 # $ make clean
 
 clean:
-	rm -f $(PROGRAM) tmp_$(PARSE_DAT) tmp_$(UNPARSE_XML)
+	rm -f $(PROGRAM) $(TEST_DAT).tmp $(TEST_DAT_XML).tmp
 
 .PHONY: check parse-check unparse-check clean
diff --git a/daffodil-runtime2/src/main/scala/org/apache/daffodil/runtime2/Runtime2DataProcessor.scala b/daffodil-runtime2/src/main/scala/org/apache/daffodil/runtime2/Runtime2DataProcessor.scala
index 8af6f64..a805308 100644
--- a/daffodil-runtime2/src/main/scala/org/apache/daffodil/runtime2/Runtime2DataProcessor.scala
+++ b/daffodil-runtime2/src/main/scala/org/apache/daffodil/runtime2/Runtime2DataProcessor.scala
@@ -25,6 +25,8 @@ import org.apache.daffodil.api.DaffodilTunables
 import org.apache.daffodil.api.DataLocation
 import org.apache.daffodil.api.ValidationMode
 import org.apache.daffodil.api.ValidationResult
+import org.apache.daffodil.api.ValidationWarning
+import org.apache.daffodil.dsom.ValidationError
 import org.apache.daffodil.exceptions.Assert
 import org.apache.daffodil.externalvars.Binding
 import org.apache.daffodil.processors.Failure
@@ -89,13 +91,14 @@ class Runtime2DataProcessor(executableFile: os.Path) extends DFDL.DataProcessorB
       os.write(infile, input)
       val result = os.proc(executableFile, "-o", outfile, "parse", infile).call(cwd = tempDir, stderr = os.Pipe)
       if (result.out.text.isEmpty && result.err.text.isEmpty) {
-        val parseResult = new ParseResult(outfile, Success, infile)
+        val parseResult = new ParseResult(infile, outfile, Success)
         parseResult
       } else {
-        val msg = s"Unexpected daffodil output on stdout: ${result.out.text} on stderr: ${result.err.text}"
-        val parseError = new ParseError(Nope, Nope, Nope, Maybe(msg))
-        val parseResult = new ParseResult(outfile, Failure(parseError), infile)
-        parseResult.addDiagnostic(parseError)
+        val msg = s"stdout: ${result.out.text} stderr: ${result.err.text}"
+        val warning = new ValidationWarning { override def getMessage: String = msg }
+        val validationResult = ValidationResult(Seq(warning), Seq.empty)
+        val parseResult = new ParseResult(infile, outfile, Success, Option(validationResult))
+        parseResult.addDiagnostic(new ValidationError(msg))
         parseResult
       }
     } catch {
@@ -103,10 +106,10 @@ class Runtime2DataProcessor(executableFile: os.Path) extends DFDL.DataProcessorB
         val parseError = if (e.result.out.text.isEmpty && e.result.err.text.isEmpty) {
           new ParseError(Nope, Nope, Maybe(e), Nope)
         } else {
-          val msg = s"${e.getMessage} with stdout: ${e.result.out.text} and stderr: ${e.result.err.text}"
+          val msg = s"${e.getMessage} stdout: ${e.result.out.text} stderr: ${e.result.err.text}"
           new ParseError(Nope, Nope, Nope, Maybe(msg))
         }
-        val parseResult = new ParseResult(outfile, Failure(parseError), infile)
+        val parseResult = new ParseResult(infile, outfile, Failure(parseError))
         parseResult.addDiagnostic(parseError)
         parseResult
     } finally {
@@ -130,7 +133,7 @@ class Runtime2DataProcessor(executableFile: os.Path) extends DFDL.DataProcessorB
         val unparseResult = new UnparseResult(finalBitPos0b, Success)
         unparseResult
       } else {
-        val msg = s"Unexpected daffodil output on stdout: ${result.out.text} on stderr: ${result.err.text}"
+        val msg = s"stdout: ${result.out.text} stderr: ${result.err.text}"
         val unparseError = new UnparseError(Nope, Nope, Nope, Maybe(msg))
         val unparseResult = new UnparseResult(finalBitPos0b, Failure(unparseError))
         unparseResult.addDiagnostic(unparseError)
@@ -141,7 +144,7 @@ class Runtime2DataProcessor(executableFile: os.Path) extends DFDL.DataProcessorB
         val unparseError = if (e.result.out.text.isEmpty && e.result.err.text.isEmpty) {
           new UnparseError(Nope, Nope, Maybe(e), Nope)
         } else {
-          val msg = s"${e.getMessage} with stdout: ${e.result.out.text} and stderr: ${e.result.err.text}"
+          val msg = s"${e.getMessage} stdout: ${e.result.out.text} stderr: ${e.result.err.text}"
           new UnparseError(Nope, Nope, Nope, Maybe(msg))
         }
         val finalBitPos0b = 0L
@@ -172,9 +175,10 @@ object Runtime2DataLocation {
   }
 }
 
-final class ParseResult(outfile: os.Path,
+final class ParseResult(infile: os.Path,
+                        outfile: os.Path,
                         override val processorStatus: ProcessorResult,
-                        infile: os.Path)
+                        override val validationResult: Option[ValidationResult] = None)
   extends DFDL.ParseResult
     with DFDL.State
     with WithDiagnosticsImpl {
@@ -186,13 +190,22 @@ final class ParseResult(outfile: os.Path,
 
   override def resultState: DFDL.State = this
 
-  override def validationResult(): Option[ValidationResult] = None
-
-  override def validationStatus: Boolean = processorStatus.isSuccess
+  override def validationStatus: Boolean = validationResult.isEmpty
 
   override def currentLocation: DataLocation = loc
 
-  val infosetAsXML : scala.xml.Elem = scala.xml.XML.loadFile(outfile.toIO)
+  // We must read outFile right away (def or lazy val will not work) because the
+  // parse method will delete outFile before returning ParseResult, but we must
+  // prevent loadFile errors from interrupting ParseResult's construction.
+  val infosetAsXML : scala.xml.Elem = {
+    val elem = try {
+      scala.xml.XML.loadFile(outfile.toIO)
+    } catch {
+      case _: org.xml.sax.SAXParseException =>
+        <dummy></dummy>
+    }
+    elem
+  }
 }
 
 final class UnparseResult(val finalBitPos0b: Long,
diff --git a/daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/ex_nums_parse.dat b/daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/ex_nums.dat
similarity index 100%
copy from daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/ex_nums_parse.dat
copy to daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/ex_nums.dat
diff --git a/daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/ex_nums.dfdl.xsd b/daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/ex_nums.dfdl.xsd
index 6de801b..c95b8c5 100644
--- a/daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/ex_nums.dfdl.xsd
+++ b/daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/ex_nums.dfdl.xsd
@@ -23,26 +23,24 @@
         xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/"
         xmlns:xs="http://www.w3.org/2001/XMLSchema">
 
-    <xs:include schemaLocation="org/apache/daffodil/xsd/DFDLGeneralFormat.dfdl.xsd"/>
+    <!-- Representation property bindings -->
 
+    <xs:include schemaLocation="org/apache/daffodil/xsd/DFDLGeneralFormat.dfdl.xsd"/>
     <xs:annotation>
         <xs:appinfo source="http://www.ogf.org/dfdl/">
             <dfdl:format
-                    alignment="1"
-                    alignmentUnits="bits"
+                    ref="GeneralFormat"
                     binaryBooleanFalseRep="0"
                     binaryBooleanTrueRep=""
                     binaryNumberRep="binary"
-                    bitOrder="mostSignificantBitFirst"
-                    byteOrder="bigEndian"
                     lengthUnits="bits"
                     prefixIncludesPrefixLength="no"
-                    representation="binary"
-                    ref="GeneralFormat"/>
+                    representation="binary"/>
         </xs:appinfo>
     </xs:annotation>
 
-    <!-- Types used in dfdl:prefixLengthType below -->
+    <!-- Simple types -->
+
     <xs:simpleType name="be_int8_count">
         <xs:restriction base="xs:byte"/>
     </xs:simpleType>
@@ -53,6 +51,8 @@
         <xs:restriction base="xs:unsignedShort"/>
     </xs:simpleType>
 
+    <!-- Single root element -->
+
     <xs:element name="ex_nums">
         <xs:complexType>
             <xs:sequence>
diff --git a/daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/ex_nums_parse.dat b/daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/ex_nums.error.dat
similarity index 64%
rename from daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/ex_nums_parse.dat
rename to daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/ex_nums.error.dat
index 5506571..8ac0b4e 100644
Binary files a/daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/ex_nums_parse.dat and b/daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/ex_nums.error.dat differ
diff --git a/daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/ex_nums_unparse_runtime1.xml b/daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/ex_nums.runtime1.dat.xml
similarity index 100%
rename from daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/ex_nums_unparse_runtime1.xml
rename to daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/ex_nums.runtime1.dat.xml
diff --git a/daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/ex_nums_unparse_errors.xml b/daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/ex_nums.runtime1.error.dat.xml
similarity index 100%
copy from daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/ex_nums_unparse_errors.xml
copy to daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/ex_nums.runtime1.error.dat.xml
diff --git a/daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/ex_nums_unparse_runtime2.xml b/daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/ex_nums.runtime2.dat.xml
similarity index 100%
rename from daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/ex_nums_unparse_runtime2.xml
rename to daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/ex_nums.runtime2.dat.xml
diff --git a/daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/ex_nums_unparse_errors.xml b/daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/ex_nums.runtime2.error.dat.xml
similarity index 94%
rename from daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/ex_nums_unparse_errors.xml
rename to daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/ex_nums.runtime2.error.dat.xml
index 887188b..b069c99 100644
--- a/daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/ex_nums_unparse_errors.xml
+++ b/daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/ex_nums.runtime2.error.dat.xml
@@ -20,7 +20,7 @@
   <array>
     <be_bool16>false</be_bool16>
     <be_bool16>true</be_bool16>
-    <be_float>1.0</be_float>
+    <be_float>1</be_float>
     <be_float>INF</be_float>
     <be_float>NaN</be_float>
     <be_int16>1</be_int16>
@@ -38,8 +38,8 @@
     <be_bool32>true</be_bool32>
     <be_bool8>false</be_bool8>
     <be_boolean>false</be_boolean>
-    <be_double>1.7976931348623157E308</be_double>
-    <be_float>3.4028235E38</be_float>
+    <be_double>1.7976931348623157E+308</be_double>
+    <be_float>3.40282347E+38</be_float>
     <be_int16>-16</be_int16>
     <be_int32>-32</be_int32>
     <be_int64>-64</be_int64>
@@ -76,7 +76,7 @@
   <fixed>
     <boolean_false>true</boolean_false>
     <boolean_true>false</boolean_true>
-    <float_1_5>0.0</float_1_5>
+    <float_1_5>0</float_1_5>
     <int_32>0</int_32>
     <hexBinary_deadbeef>FEEDBEAD</hexBinary_deadbeef>
     <hexBinary0/>
diff --git a/daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/ex_nums.tdml b/daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/ex_nums.tdml
index 812c327..fd460e3 100644
--- a/daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/ex_nums.tdml
+++ b/daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/ex_nums.tdml
@@ -18,8 +18,8 @@
 
 <tdml:testSuite
   defaultImplementations="daffodil daffodil-runtime2"
-  defaultRoundTrip="none"
-  description="TDML tests for ex_nums"
+  defaultRoundTrip="onePass"
+  description="TDML tests for ex_nums.dfdl.xsd"
   xmlns:daf="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:ext"
   xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/"
   xmlns:tdml="http://www.ibm.com/xmlns/dfdl/testData">
@@ -37,66 +37,95 @@
   </tdml:defineConfig>
 
   <tdml:parserTestCase
-    name="ex_nums_parse_runtime1"
+    config="config-runtime1"
     model="ex_nums.dfdl.xsd"
-    config="config-runtime1">
+    name="ex_nums_runtime1">
     <tdml:document>
-      <tdml:documentPart type="file">ex_nums_parse.dat</tdml:documentPart>
+      <tdml:documentPart type="file">ex_nums.dat</tdml:documentPart>
     </tdml:document>
     <tdml:infoset>
-      <tdml:dfdlInfoset type="file">ex_nums_unparse_runtime1.xml</tdml:dfdlInfoset>
+      <tdml:dfdlInfoset type="file">ex_nums.runtime1.dat.xml</tdml:dfdlInfoset>
     </tdml:infoset>
   </tdml:parserTestCase>
 
-  <tdml:unparserTestCase
-    name="ex_nums_unparse_runtime1"
+  <tdml:parserTestCase
+    config="config-runtime2"
     model="ex_nums.dfdl.xsd"
-    config="config-runtime1">
-    <tdml:infoset>
-      <tdml:dfdlInfoset type="file">ex_nums_unparse_runtime1.xml</tdml:dfdlInfoset>
-    </tdml:infoset>
+    name="ex_nums_runtime2">
     <tdml:document>
-      <tdml:documentPart type="file">ex_nums_parse.dat</tdml:documentPart>
+      <tdml:documentPart type="file">ex_nums.dat</tdml:documentPart>
     </tdml:document>
-  </tdml:unparserTestCase>
+    <tdml:infoset>
+      <tdml:dfdlInfoset type="file">ex_nums.runtime2.dat.xml</tdml:dfdlInfoset>
+    </tdml:infoset>
+  </tdml:parserTestCase>
 
+  <!-- validation="limited" will report no validation errors, while
+       validation="on" will report errors which cannot be captured -->
   <tdml:parserTestCase
-    name="ex_nums_parse_runtime2"
+    config="config-runtime1"
     model="ex_nums.dfdl.xsd"
-    config="config-runtime2">
+    name="ex_nums_runtime1_error"
+    validation="limited"> 
     <tdml:document>
-      <tdml:documentPart type="file">ex_nums_parse.dat</tdml:documentPart>
+      <tdml:documentPart type="file">ex_nums.error.dat</tdml:documentPart>
     </tdml:document>
     <tdml:infoset>
-      <tdml:dfdlInfoset type="file">ex_nums_unparse_runtime2.xml</tdml:dfdlInfoset>
+      <tdml:dfdlInfoset type="file">ex_nums.runtime1.error.dat.xml</tdml:dfdlInfoset>
     </tdml:infoset>
   </tdml:parserTestCase>
 
-  <tdml:unparserTestCase
-    name="ex_nums_unparse_runtime2"
+  <!-- disable round tripping since TDMLRunner can process parse
+       validation errors but not unparse validation errors -->
+  <tdml:parserTestCase
+    config="config-runtime2"
     model="ex_nums.dfdl.xsd"
-    config="config-runtime2">
-    <tdml:infoset>
-      <tdml:dfdlInfoset type="file">ex_nums_unparse_runtime2.xml</tdml:dfdlInfoset>
-    </tdml:infoset>
+    name="ex_nums_runtime2_error"
+    roundTrip="none"
+    validation="limited"> 
     <tdml:document>
-      <tdml:documentPart type="file">ex_nums_parse.dat</tdml:documentPart>
+      <tdml:documentPart type="file">ex_nums.error.dat</tdml:documentPart>
     </tdml:document>
-  </tdml:unparserTestCase>
-
-  <tdml:unparserTestCase
-    name="ex_nums_unparse_errors"
-    model="ex_nums.dfdl.xsd"
-    config="config-runtime2">
     <tdml:infoset>
-      <tdml:dfdlInfoset type="file">ex_nums_unparse_errors.xml</tdml:dfdlInfoset>
+      <tdml:dfdlInfoset type="file">ex_nums.runtime2.error.dat.xml</tdml:dfdlInfoset>
     </tdml:infoset>
-    <tdml:errors>
+    <tdml:validationErrors>
       <tdml:error>value</tdml:error>
+      <tdml:error>boolean_false</tdml:error>
       <tdml:error>does not match</tdml:error>
       <tdml:error>fixed</tdml:error>
       <tdml:error>attribute</tdml:error>
-    </tdml:errors>
-  </tdml:unparserTestCase>
+
+      <tdml:error>value</tdml:error>
+      <tdml:error>boolean_true</tdml:error>
+      <tdml:error>does not match</tdml:error>
+      <tdml:error>fixed</tdml:error>
+      <tdml:error>attribute</tdml:error>
+
+      <tdml:error>value</tdml:error>
+      <tdml:error>float_1_5</tdml:error>
+      <tdml:error>does not match</tdml:error>
+      <tdml:error>fixed</tdml:error>
+      <tdml:error>attribute</tdml:error>
+
+      <tdml:error>value</tdml:error>
+      <tdml:error>int_32</tdml:error>
+      <tdml:error>does not match</tdml:error>
+      <tdml:error>fixed</tdml:error>
+      <tdml:error>attribute</tdml:error>
+
+      <tdml:error>value</tdml:error>
+      <tdml:error>hexBinary_deadbeef</tdml:error>
+      <tdml:error>does not match</tdml:error>
+      <tdml:error>fixed</tdml:error>
+      <tdml:error>attribute</tdml:error>
+
+      <tdml:error>value</tdml:error>
+      <tdml:error>hexBinaryPrefixed_ab</tdml:error>
+      <tdml:error>does not match</tdml:error>
+      <tdml:error>fixed</tdml:error>
+      <tdml:error>attribute</tdml:error>
+    </tdml:validationErrors>
+  </tdml:parserTestCase>
 
 </tdml:testSuite>
diff --git a/daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/nested.dfdl.xsd b/daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/nested.dfdl.xsd
index 2faebc7..640c322 100644
--- a/daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/nested.dfdl.xsd
+++ b/daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/nested.dfdl.xsd
@@ -16,21 +16,33 @@
   limitations under the License.
 -->
 
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/" xmlns:idl="urn:idl:1.0" targetNamespace="urn:idl:1.0">
+<xs:schema
+ xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/"
+ xmlns:idl="urn:idl:1.0"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="urn:idl:1.0">
+
+  <!-- Representation property bindings -->
+
+  <xs:include schemaLocation="org/apache/daffodil/xsd/DFDLGeneralFormat.dfdl.xsd"/>
   <xs:annotation>
     <xs:appinfo source="http://www.ogf.org/dfdl/">
-      <dfdl:defineFormat name="defaults">
-        <dfdl:format alignment="8" alignmentUnits="bits" binaryBooleanFalseRep="0" binaryBooleanTrueRep="1" binaryFloatRep="ieee" binaryNumberCheckPolicy="lax" binaryNumberRep="binary" bitOrder="mostSignificantBitFirst" byteOrder="bigEndian" choiceLengthKind="implicit" encoding="utf-8" encodingErrorPolicy="replace" escapeSchemeRef="" fillByte="%#r20;" floating="no" ignoreCase="no" initiatedContent="no" initiator="" leadingSkip="0" lengthKind="implicit" lengthUnits="bits" occursCountKind= [...]
-      </dfdl:defineFormat>
-      <dfdl:format ref="idl:defaults"/>
+      <dfdl:format
+        ref="GeneralFormat"
+        binaryBooleanFalseRep="0"
+        binaryBooleanTrueRep="1"
+        prefixIncludesPrefixLength="no"
+        representation="binary"/>
     </xs:appinfo>
   </xs:annotation>
 
-  <xs:simpleType name="double" dfdl:length="64" dfdl:lengthKind="explicit">
+  <!-- Simple and complex types -->
+
+  <xs:simpleType name="double">
     <xs:restriction base="xs:double"/>
   </xs:simpleType>
 
-  <xs:simpleType name="int32" dfdl:length="32" dfdl:lengthKind="explicit">
+  <xs:simpleType name="int32">
     <xs:restriction base="xs:int"/>
   </xs:simpleType>
 
@@ -77,6 +89,8 @@
     </xs:sequence>
   </xs:complexType>
 
+  <!-- Root elements -->
+
   <xs:element name="NestedStruct" type="idl:NestedStructType"/>
 
   <xs:element name="NestedUnion" type="idl:NestedUnionType"/>
diff --git a/daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/nested_struct_parse.dat b/daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/nested.struct.dat
similarity index 100%
rename from daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/nested_struct_parse.dat
rename to daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/nested.struct.dat
diff --git a/daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/nested_struct_unparse.xml b/daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/nested.struct.dat.xml
similarity index 100%
rename from daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/nested_struct_unparse.xml
rename to daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/nested.struct.dat.xml
diff --git a/daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/nested.tdml b/daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/nested.tdml
index 91adc0b..66565e6 100644
--- a/daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/nested.tdml
+++ b/daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/nested.tdml
@@ -19,8 +19,8 @@
 <tdml:testSuite
   defaultConfig="config-runtime2"
   defaultImplementations="daffodil daffodil-runtime2"
-  defaultRoundTrip="none"
-  description="TDML tests for nested"
+  defaultRoundTrip="onePass"
+  description="TDML tests for nested.dfdl.xsd"
   xmlns:daf="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:ext"
   xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/"
   xmlns:tdml="http://www.ibm.com/xmlns/dfdl/testData">
@@ -37,58 +37,31 @@
     </daf:tunables>
   </tdml:defineConfig>
 
-  <tdml:parserTestCase name="nested_struct_parse" model="nested.dfdl.xsd">
+  <tdml:parserTestCase model="nested.dfdl.xsd" name="nested_struct">
     <tdml:document>
-      <tdml:documentPart type="file">nested_struct_parse.dat</tdml:documentPart>
+      <tdml:documentPart type="file">nested.struct.dat</tdml:documentPart>
     </tdml:document>
     <tdml:infoset>
-      <tdml:dfdlInfoset type="file">nested_struct_unparse.xml</tdml:dfdlInfoset>
+      <tdml:dfdlInfoset type="file">nested.struct.dat.xml</tdml:dfdlInfoset>
     </tdml:infoset>
   </tdml:parserTestCase>
 
-  <tdml:unparserTestCase name="nested_struct_unparse" model="nested.dfdl.xsd">
-    <tdml:infoset>
-      <tdml:dfdlInfoset type="file">nested_struct_unparse.xml</tdml:dfdlInfoset>
-    </tdml:infoset>
-    <tdml:document>
-      <tdml:documentPart type="file">nested_struct_parse.dat</tdml:documentPart>
-    </tdml:document>
-  </tdml:unparserTestCase>
-
-  <tdml:parserTestCase name="nested_union_parse_2" model="nested.dfdl.xsd">
+  <tdml:parserTestCase model="nested.dfdl.xsd" name="nested_union_bar">
     <tdml:document>
-      <tdml:documentPart type="file">nested_union_parse_2.dat</tdml:documentPart>
+      <tdml:documentPart type="file">nested.union.bar.dat</tdml:documentPart>
     </tdml:document>
     <tdml:infoset>
-      <tdml:dfdlInfoset type="file">nested_union_unparse_2.xml</tdml:dfdlInfoset>
+      <tdml:dfdlInfoset type="file">nested.union.bar.dat.xml</tdml:dfdlInfoset>
     </tdml:infoset>
   </tdml:parserTestCase>
 
-  <tdml:unparserTestCase name="nested_union_unparse_2" model="nested.dfdl.xsd">
-    <tdml:infoset>
-      <tdml:dfdlInfoset type="file">nested_union_unparse_2.xml</tdml:dfdlInfoset>
-    </tdml:infoset>
+  <tdml:parserTestCase model="nested.dfdl.xsd" name="nested_union_foo">
     <tdml:document>
-      <tdml:documentPart type="file">nested_union_parse_2.dat</tdml:documentPart>
-    </tdml:document>
-  </tdml:unparserTestCase>
-
-  <tdml:parserTestCase name="nested_union_parse_4" model="nested.dfdl.xsd">
-    <tdml:document>
-      <tdml:documentPart type="file">nested_union_parse_4.dat</tdml:documentPart>
+      <tdml:documentPart type="file">nested.union.foo.dat</tdml:documentPart>
     </tdml:document>
     <tdml:infoset>
-      <tdml:dfdlInfoset type="file">nested_union_unparse_4.xml</tdml:dfdlInfoset>
+      <tdml:dfdlInfoset type="file">nested.union.foo.dat.xml</tdml:dfdlInfoset>
     </tdml:infoset>
   </tdml:parserTestCase>
 
-  <tdml:unparserTestCase name="nested_union_unparse_4" model="nested.dfdl.xsd">
-    <tdml:infoset>
-      <tdml:dfdlInfoset type="file">nested_union_unparse_4.xml</tdml:dfdlInfoset>
-    </tdml:infoset>
-    <tdml:document>
-      <tdml:documentPart type="file">nested_union_parse_4.dat</tdml:documentPart>
-    </tdml:document>
-  </tdml:unparserTestCase>
-
 </tdml:testSuite>
diff --git a/daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/nested_union_parse_4.dat b/daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/nested.union.bar.dat
similarity index 100%
rename from daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/nested_union_parse_4.dat
rename to daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/nested.union.bar.dat
diff --git a/daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/nested_union_unparse_4.xml b/daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/nested.union.bar.dat.xml
similarity index 100%
rename from daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/nested_union_unparse_4.xml
rename to daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/nested.union.bar.dat.xml
diff --git a/daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/nested_union_parse_2.dat b/daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/nested.union.foo.dat
similarity index 100%
rename from daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/nested_union_parse_2.dat
rename to daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/nested.union.foo.dat
diff --git a/daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/nested_union_unparse_2.xml b/daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/nested.union.foo.dat.xml
similarity index 100%
rename from daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/nested_union_unparse_2.xml
rename to daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/nested.union.foo.dat.xml
diff --git a/daffodil-runtime2/src/test/scala/org/apache/daffodil/runtime2/TestCodeGenerator.scala b/daffodil-runtime2/src/test/scala/org/apache/daffodil/runtime2/TestCodeGenerator.scala
index 85af8c5..78c81a9 100644
--- a/daffodil-runtime2/src/test/scala/org/apache/daffodil/runtime2/TestCodeGenerator.scala
+++ b/daffodil-runtime2/src/test/scala/org/apache/daffodil/runtime2/TestCodeGenerator.scala
@@ -120,6 +120,22 @@ class TestCodeGenerator {
     TestUtils.assertEqualsXMLElements(expected, pr.infosetAsXML)
   }
 
+  @Test def test_parse_error(): Unit = {
+    // Compile the test schema into a C executable
+    val pf = Compiler().compileNode(testSchema)
+    val cg = pf.forLanguage("c")
+    val codeDir = cg.generateCode(None, tempDir.toString)
+    val executable = cg.compileCode(codeDir)
+
+    // Create a Runtime2DataProcessor and parse an empty file unsuccessfully
+    val dp = new Runtime2DataProcessor(executable)
+    val b = Misc.hex2Bytes("")
+    val input = new ByteArrayInputStream(b)
+    val pr = dp.parse(input)
+    assert(pr.isError, "expected pr.isError to be true")
+    assert(pr.getDiagnostics.nonEmpty, "expected pr.getDiagnostics to be non-empty")
+  }
+
   @Test def test_unparse_success(): Unit = {
     // Compile the test schema into a C executable
     val pf = Compiler().compileNode(testSchema)
@@ -131,9 +147,25 @@ class TestCodeGenerator {
     val dp = new Runtime2DataProcessor(executable)
     val input = Channels.newInputStream(Misc.stringToReadableByteChannel("<e1><x>5</x></e1>"))
     val output = new ByteArrayOutputStream()
-    val pr = dp.unparse(input, output)
-    assert(!pr.isError && pf.getDiagnostics.isEmpty, pr.getDiagnostics.map(_.getMessage()).mkString("\n"))
+    val ur = dp.unparse(input, output)
+    assert(!ur.isError && pf.getDiagnostics.isEmpty, ur.getDiagnostics.map(_.getMessage()).mkString("\n"))
     val expected = Misc.hex2Bytes("00000005")
     assertArrayEquals(expected, output.toByteArray)
   }
+
+  @Test def test_unparse_error(): Unit = {
+    // Compile the test schema into a C executable
+    val pf = Compiler().compileNode(testSchema)
+    val cg = pf.forLanguage("c")
+    val codeDir = cg.generateCode(None, tempDir.toString)
+    val executable = cg.compileCode(codeDir)
+
+    // Create a Runtime2DataProcessor and unparse a binary int32 number unsuccessfully
+    val dp = new Runtime2DataProcessor(executable)
+    val input = Channels.newInputStream(Misc.stringToReadableByteChannel("<e1><x>FAIL</x></e1>"))
+    val output = new ByteArrayOutputStream()
+    val ur = dp.unparse(input, output)
+    assert(ur.isError, "expected ur.isError to be true")
+    assert(ur.getDiagnostics.nonEmpty, "expected ur.getDiagnostics to be non-empty")
+  }
 }
diff --git a/daffodil-tdml-processor/src/main/scala/org/apache/daffodil/tdml/processor/Runtime2TDMLDFDLProcessor.scala b/daffodil-tdml-processor/src/main/scala/org/apache/daffodil/tdml/processor/Runtime2TDMLDFDLProcessor.scala
index c31b7ae..a27e7be 100644
--- a/daffodil-tdml-processor/src/main/scala/org/apache/daffodil/tdml/processor/Runtime2TDMLDFDLProcessor.scala
+++ b/daffodil-tdml-processor/src/main/scala/org/apache/daffodil/tdml/processor/Runtime2TDMLDFDLProcessor.scala
@@ -120,11 +120,10 @@ final class Runtime2TDMLDFDLProcessorFactory private(
         Left(generator.getDiagnostics) // C code compilation diagnostics
       } else {
         // Create a processor for running the test using the executable, passing it
-        // generator.diagnostics in order to let us check generator warnings later
-        val processor = new Runtime2TDMLDFDLProcessor(tempDir, executable, generator.getDiagnostics)
-        // Sadly, TDMLRunner never checks generator diagnostics in "Right" tuple below
-        // nor does it check processor diagnostics in cross tests (runtime2's TDML tests)
-        // unless you set defaultShouldDoWarningComparisonOnCrossTests true in RunnerFactory
+        // tempDir so its cleanUp function will delete tempDir for us
+        val processor = new Runtime2TDMLDFDLProcessor(tempDir, executable)
+        // Although we return generator diagnostics to TDMLRunner, TDMLRunner won't
+        // do anything with them in its usual path
         Right((generator.getDiagnostics, processor))
       }
       compileResult
@@ -140,13 +139,12 @@ final class Runtime2TDMLDFDLProcessorFactory private(
  * TDML XML Infosets, feeding to the unparser, creating XML from the result created by
  * the Runtime2DataProcessor. All the "real work" is done by Runtime2DataProcessor.
  */
-class Runtime2TDMLDFDLProcessor(tempDir: os.Path, executable: os.Path,
-                                var diagnostics: Seq[Diagnostic]) extends TDMLDFDLProcessor {
+class Runtime2TDMLDFDLProcessor(tempDir: os.Path, executable: os.Path)
+  extends TDMLDFDLProcessor {
 
   override type R = Runtime2TDMLDFDLProcessor
 
   private val dataProcessor = new Runtime2DataProcessor(executable)
-  private var anyErrors: Boolean = false
 
   @deprecated("Use withDebugging.", "2.6.0")
   override def setDebugging(b: Boolean) = ???
@@ -168,9 +166,9 @@ class Runtime2TDMLDFDLProcessor(tempDir: os.Path, executable: os.Path,
   override def setExternalDFDLVariables(externalVarBindings: Seq[Binding]): Unit = ???
   override def withExternalDFDLVariables(externalVarBindings: Seq[Binding]): Runtime2TDMLDFDLProcessor = this
 
-  // Save any errors from running the C code here to be returned later
-  override def isError: Boolean = anyErrors
-  override def getDiagnostics: Seq[Diagnostic] = diagnostics
+  // No need to report errors from this class itself
+  override def isError: Boolean = false
+  override def getDiagnostics: Seq[Diagnostic] = Seq.empty
 
   // Run the C code, collect and save the infoset with any errors and
   // diagnostics, and return a [[TDMLParseResult]] summarizing the result.
@@ -180,8 +178,6 @@ class Runtime2TDMLDFDLProcessor(tempDir: os.Path, executable: os.Path,
   override def parse(is: java.io.InputStream, lengthLimitInBits: Long): TDMLParseResult = {
     // TODO: pass lengthLimitInBits to the C program to tell it how big the data is
     val pr = dataProcessor.parse(is)
-    anyErrors = pr.isError
-    diagnostics = diagnostics ++ pr.getDiagnostics
     new Runtime2TDMLParseResult(pr)
   }
 
@@ -193,8 +189,6 @@ class Runtime2TDMLDFDLProcessor(tempDir: os.Path, executable: os.Path,
   override def unparse(infosetXML: scala.xml.Node, outStream: java.io.OutputStream): TDMLUnparseResult = {
     val inStream = new ByteArrayInputStream(infosetXML.toString.getBytes())
     val upr = dataProcessor.unparse(inStream, outStream)
-    anyErrors = upr.isError
-    diagnostics = diagnostics ++ upr.getDiagnostics
     new Runtime2TDMLUnparseResult(upr)
   }
 
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ISRM_green_to_orange_60000_parse_0.dat b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ISRM_green_to_orange_60000.0.dat
similarity index 100%
rename from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ISRM_green_to_orange_60000_parse_0.dat
rename to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ISRM_green_to_orange_60000.0.dat
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ISRM_green_to_orange_60000_unparse_0.xml b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ISRM_green_to_orange_60000.0.dat.xml
similarity index 100%
rename from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ISRM_green_to_orange_60000_unparse_0.xml
rename to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ISRM_green_to_orange_60000.0.dat.xml
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ISRM_green_to_orange_60000_parse_1.dat b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ISRM_green_to_orange_60000.1.dat
similarity index 100%
rename from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ISRM_green_to_orange_60000_parse_1.dat
rename to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ISRM_green_to_orange_60000.1.dat
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ISRM_green_to_orange_60000_unparse_1.xml b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ISRM_green_to_orange_60000.1.dat.xml
similarity index 100%
rename from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ISRM_green_to_orange_60000_unparse_1.xml
rename to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ISRM_green_to_orange_60000.1.dat.xml
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ISRM_green_to_orange_60000.tdml b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ISRM_green_to_orange_60000.tdml
index f062372..9e69c35 100644
--- a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ISRM_green_to_orange_60000.tdml
+++ b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ISRM_green_to_orange_60000.tdml
@@ -19,9 +19,9 @@
 <tdml:testSuite
   defaultConfig="config-runtime2"
   defaultImplementations="daffodil daffodil-runtime2"
-  defaultRoundTrip="none"
+  defaultRoundTrip="onePass"
   defaultValidation="on"
-  description="TDML tests for ISRM_green_to_orange_60000"
+  description="TDML tests for ISRM_green_to_orange_60000.dfdl.xsd"
   xmlns:daf="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:ext"
   xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/"
   xmlns:tdml="http://www.ibm.com/xmlns/dfdl/testData">
@@ -38,52 +38,22 @@
     </daf:tunables>
   </tdml:defineConfig>
 
-  <tdml:parserTestCase
-    model="ISRM_green_to_orange_60000.dfdl.xsd"
-    name="ISRM_green_to_orange_60000_parse_0"
-    root="IsrmResultDecl">
+  <tdml:parserTestCase model="ISRM_green_to_orange_60000.dfdl.xsd" name="ISRM_green_to_orange_60000_0">
     <tdml:document>
-      <tdml:documentPart type="file">ISRM_green_to_orange_60000_parse_0.dat</tdml:documentPart>
+      <tdml:documentPart type="file">ISRM_green_to_orange_60000.0.dat</tdml:documentPart>
     </tdml:document>
     <tdml:infoset>
-      <tdml:dfdlInfoset type="file">ISRM_green_to_orange_60000_unparse_0.xml</tdml:dfdlInfoset>
+      <tdml:dfdlInfoset type="file">ISRM_green_to_orange_60000.0.dat.xml</tdml:dfdlInfoset>
     </tdml:infoset>
   </tdml:parserTestCase>
 
-  <tdml:unparserTestCase
-    model="ISRM_green_to_orange_60000.dfdl.xsd"
-    name="ISRM_green_to_orange_60000_unparse_0"
-    root="IsrmResultDecl">
-    <tdml:infoset>
-      <tdml:dfdlInfoset type="file">ISRM_green_to_orange_60000_unparse_0.xml</tdml:dfdlInfoset>
-    </tdml:infoset>
-    <tdml:document>
-      <tdml:documentPart type="file">ISRM_green_to_orange_60000_parse_0.dat</tdml:documentPart>
-    </tdml:document>
-  </tdml:unparserTestCase>
-
-  <tdml:parserTestCase
-    model="ISRM_green_to_orange_60000.dfdl.xsd"
-    name="ISRM_green_to_orange_60000_parse_1"
-    root="IsrmResultDecl">
+  <tdml:parserTestCase model="ISRM_green_to_orange_60000.dfdl.xsd" name="ISRM_green_to_orange_60000_1">
     <tdml:document>
-      <tdml:documentPart type="file">ISRM_green_to_orange_60000_parse_1.dat</tdml:documentPart>
+      <tdml:documentPart type="file">ISRM_green_to_orange_60000.1.dat</tdml:documentPart>
     </tdml:document>
     <tdml:infoset>
-      <tdml:dfdlInfoset type="file">ISRM_green_to_orange_60000_unparse_1.xml</tdml:dfdlInfoset>
+      <tdml:dfdlInfoset type="file">ISRM_green_to_orange_60000.1.dat.xml</tdml:dfdlInfoset>
     </tdml:infoset>
   </tdml:parserTestCase>
 
-  <tdml:unparserTestCase
-    model="ISRM_green_to_orange_60000.dfdl.xsd"
-    name="ISRM_green_to_orange_60000_unparse_1"
-    root="IsrmResultDecl">
-    <tdml:infoset>
-      <tdml:dfdlInfoset type="file">ISRM_green_to_orange_60000_unparse_1.xml</tdml:dfdlInfoset>
-    </tdml:infoset>
-    <tdml:document>
-      <tdml:documentPart type="file">ISRM_green_to_orange_60000_parse_1.dat</tdml:documentPart>
-    </tdml:document>
-  </tdml:unparserTestCase>
-
 </tdml:testSuite>
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ISRM_orange_to_green_60002_parse.dat b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ISRM_orange_to_green_60002.dat
similarity index 100%
rename from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ISRM_orange_to_green_60002_parse.dat
rename to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ISRM_orange_to_green_60002.dat
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ISRM_orange_to_green_60002_unparse.xml b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ISRM_orange_to_green_60002.dat.xml
similarity index 100%
rename from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ISRM_orange_to_green_60002_unparse.xml
rename to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ISRM_orange_to_green_60002.dat.xml
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ISRM_orange_to_green_60002.tdml b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ISRM_orange_to_green_60002.tdml
index b4537cf..c1484b1 100644
--- a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ISRM_orange_to_green_60002.tdml
+++ b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ISRM_orange_to_green_60002.tdml
@@ -19,9 +19,9 @@
 <tdml:testSuite
   defaultConfig="config-runtime2"
   defaultImplementations="daffodil daffodil-runtime2"
-  defaultRoundTrip="none"
+  defaultRoundTrip="onePass"
   defaultValidation="on"
-  description="TDML tests for ISRM_orange_to_green_60002"
+  description="TDML tests for ISRM_orange_to_green_60002.dfdl.xsd"
   xmlns:daf="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:ext"
   xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/"
   xmlns:tdml="http://www.ibm.com/xmlns/dfdl/testData">
@@ -38,28 +38,13 @@
     </daf:tunables>
   </tdml:defineConfig>
 
-  <tdml:parserTestCase
-    model="ISRM_orange_to_green_60002.dfdl.xsd"
-    name="ISRM_orange_to_green_60002_parse"
-    root="IsrmRequestDecl">
+  <tdml:parserTestCase model="ISRM_orange_to_green_60002.dfdl.xsd" name="ISRM_orange_to_green_60002">
     <tdml:document>
-      <tdml:documentPart type="file">ISRM_orange_to_green_60002_parse.dat</tdml:documentPart>
+      <tdml:documentPart type="file">ISRM_orange_to_green_60002.dat</tdml:documentPart>
     </tdml:document>
     <tdml:infoset>
-      <tdml:dfdlInfoset type="file">ISRM_orange_to_green_60002_unparse.xml</tdml:dfdlInfoset>
+      <tdml:dfdlInfoset type="file">ISRM_orange_to_green_60002.dat.xml</tdml:dfdlInfoset>
     </tdml:infoset>
   </tdml:parserTestCase>
 
-  <tdml:unparserTestCase
-    model="ISRM_orange_to_green_60002.dfdl.xsd"
-    name="ISRM_orange_to_green_60002_unparse"
-    root="IsrmRequestDecl">
-    <tdml:infoset>
-      <tdml:dfdlInfoset type="file">ISRM_orange_to_green_60002_unparse.xml</tdml:dfdlInfoset>
-    </tdml:infoset>
-    <tdml:document>
-      <tdml:documentPart type="file">ISRM_orange_to_green_60002_parse.dat</tdml:documentPart>
-    </tdml:document>
-  </tdml:unparserTestCase>
-
 </tdml:testSuite>
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/MPU_green_to_orange_60004_parse.dat b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/MPU_green_to_orange_60004.dat
similarity index 100%
rename from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/MPU_green_to_orange_60004_parse.dat
rename to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/MPU_green_to_orange_60004.dat
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/MPU_green_to_orange_60004_unparse.xml b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/MPU_green_to_orange_60004.dat.xml
similarity index 100%
rename from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/MPU_green_to_orange_60004_unparse.xml
rename to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/MPU_green_to_orange_60004.dat.xml
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/MPU_green_to_orange_60004.tdml b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/MPU_green_to_orange_60004.tdml
index a7bab3e..314eb2e 100644
--- a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/MPU_green_to_orange_60004.tdml
+++ b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/MPU_green_to_orange_60004.tdml
@@ -19,9 +19,9 @@
 <tdml:testSuite
   defaultConfig="config-runtime2"
   defaultImplementations="daffodil daffodil-runtime2"
-  defaultRoundTrip="none"
+  defaultRoundTrip="onePass"
   defaultValidation="on"
-  description="TDML tests for MPU_green_to_orange_60004"
+  description="TDML tests for MPU_green_to_orange_60004.dfdl.xsd"
   xmlns:daf="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:ext"
   xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/"
   xmlns:tdml="http://www.ibm.com/xmlns/dfdl/testData">
@@ -38,28 +38,13 @@
     </daf:tunables>
   </tdml:defineConfig>
 
-  <tdml:parserTestCase
-    model="MPU_green_to_orange_60004.dfdl.xsd"
-    name="MPU_green_to_orange_60004_parse"
-    root="ComponentReadyDecl">
+  <tdml:parserTestCase model="MPU_green_to_orange_60004.dfdl.xsd" name="MPU_green_to_orange_60004">
     <tdml:document>
-      <tdml:documentPart type="file">MPU_green_to_orange_60004_parse.dat</tdml:documentPart>
+      <tdml:documentPart type="file">MPU_green_to_orange_60004.dat</tdml:documentPart>
     </tdml:document>
     <tdml:infoset>
-      <tdml:dfdlInfoset type="file">MPU_green_to_orange_60004_unparse.xml</tdml:dfdlInfoset>
+      <tdml:dfdlInfoset type="file">MPU_green_to_orange_60004.dat.xml</tdml:dfdlInfoset>
     </tdml:infoset>
   </tdml:parserTestCase>
 
-  <tdml:unparserTestCase
-    model="MPU_green_to_orange_60004.dfdl.xsd"
-    name="MPU_green_to_orange_60004_unparse"
-    root="ComponentReadyDecl">
-    <tdml:infoset>
-      <tdml:dfdlInfoset type="file">MPU_green_to_orange_60004_unparse.xml</tdml:dfdlInfoset>
-    </tdml:infoset>
-    <tdml:document>
-      <tdml:documentPart type="file">MPU_green_to_orange_60004_parse.dat</tdml:documentPart>
-    </tdml:document>
-  </tdml:unparserTestCase>
-
 </tdml:testSuite>
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/MPU_orange_to_green_60006_parse_0.dat b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/MPU_orange_to_green_60006.0.dat
similarity index 100%
rename from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/MPU_orange_to_green_60006_parse_0.dat
rename to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/MPU_orange_to_green_60006.0.dat
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/MPU_orange_to_green_60006_unparse_0.xml b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/MPU_orange_to_green_60006.0.dat.xml
similarity index 100%
rename from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/MPU_orange_to_green_60006_unparse_0.xml
rename to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/MPU_orange_to_green_60006.0.dat.xml
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/MPU_orange_to_green_60006_parse_1.dat b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/MPU_orange_to_green_60006.1.dat
similarity index 100%
rename from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/MPU_orange_to_green_60006_parse_1.dat
rename to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/MPU_orange_to_green_60006.1.dat
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/MPU_orange_to_green_60006_unparse_1.xml b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/MPU_orange_to_green_60006.1.dat.xml
similarity index 100%
rename from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/MPU_orange_to_green_60006_unparse_1.xml
rename to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/MPU_orange_to_green_60006.1.dat.xml
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/MPU_orange_to_green_60006.tdml b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/MPU_orange_to_green_60006.tdml
index ae6376c..afc3422 100644
--- a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/MPU_orange_to_green_60006.tdml
+++ b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/MPU_orange_to_green_60006.tdml
@@ -19,9 +19,9 @@
 <tdml:testSuite
   defaultConfig="config-runtime2"
   defaultImplementations="daffodil daffodil-runtime2"
-  defaultRoundTrip="none"
+  defaultRoundTrip="onePass"
   defaultValidation="on"
-  description="TDML tests for MPU_orange_to_green_60006"
+  description="TDML tests for MPU_orange_to_green_60006.dfdl.xsd"
   xmlns:daf="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:ext"
   xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/"
   xmlns:tdml="http://www.ibm.com/xmlns/dfdl/testData">
@@ -38,52 +38,22 @@
     </daf:tunables>
   </tdml:defineConfig>
 
-  <tdml:parserTestCase
-    model="MPU_orange_to_green_60006.dfdl.xsd"
-    name="MPU_orange_to_green_60006_parse_0"
-    root="MpuRequestDecl">
+  <tdml:parserTestCase model="MPU_orange_to_green_60006.dfdl.xsd" name="MPU_orange_to_green_60006_0">
     <tdml:document>
-      <tdml:documentPart type="file">MPU_orange_to_green_60006_parse_0.dat</tdml:documentPart>
+      <tdml:documentPart type="file">MPU_orange_to_green_60006.0.dat</tdml:documentPart>
     </tdml:document>
     <tdml:infoset>
-      <tdml:dfdlInfoset type="file">MPU_orange_to_green_60006_unparse_0.xml</tdml:dfdlInfoset>
+      <tdml:dfdlInfoset type="file">MPU_orange_to_green_60006.0.dat.xml</tdml:dfdlInfoset>
     </tdml:infoset>
   </tdml:parserTestCase>
 
-  <tdml:unparserTestCase
-    model="MPU_orange_to_green_60006.dfdl.xsd"
-    name="MPU_orange_to_green_60006_unparse_0"
-    root="MpuRequestDecl">
-    <tdml:infoset>
-      <tdml:dfdlInfoset type="file">MPU_orange_to_green_60006_unparse_0.xml</tdml:dfdlInfoset>
-    </tdml:infoset>
-    <tdml:document>
-      <tdml:documentPart type="file">MPU_orange_to_green_60006_parse_0.dat</tdml:documentPart>
-    </tdml:document>
-  </tdml:unparserTestCase>
-
-  <tdml:parserTestCase
-    model="MPU_orange_to_green_60006.dfdl.xsd"
-    name="MPU_orange_to_green_60006_parse_1"
-    root="MpuRequestDecl">
+  <tdml:parserTestCase model="MPU_orange_to_green_60006.dfdl.xsd" name="MPU_orange_to_green_60006_1">
     <tdml:document>
-      <tdml:documentPart type="file">MPU_orange_to_green_60006_parse_1.dat</tdml:documentPart>
+      <tdml:documentPart type="file">MPU_orange_to_green_60006.1.dat</tdml:documentPart>
     </tdml:document>
     <tdml:infoset>
-      <tdml:dfdlInfoset type="file">MPU_orange_to_green_60006_unparse_1.xml</tdml:dfdlInfoset>
+      <tdml:dfdlInfoset type="file">MPU_orange_to_green_60006.1.dat.xml</tdml:dfdlInfoset>
     </tdml:infoset>
   </tdml:parserTestCase>
 
-  <tdml:unparserTestCase
-    model="MPU_orange_to_green_60006.dfdl.xsd"
-    name="MPU_orange_to_green_60006_unparse_1"
-    root="MpuRequestDecl">
-    <tdml:infoset>
-      <tdml:dfdlInfoset type="file">MPU_orange_to_green_60006_unparse_1.xml</tdml:dfdlInfoset>
-    </tdml:infoset>
-    <tdml:document>
-      <tdml:documentPart type="file">MPU_orange_to_green_60006_parse_1.dat</tdml:documentPart>
-    </tdml:document>
-  </tdml:unparserTestCase>
-
 </tdml:testSuite>
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw_parse_11.dat b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw.11.dat
similarity index 100%
rename from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw_parse_11.dat
rename to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw.11.dat
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw_unparse_11.xml b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw.11.dat.xml
similarity index 100%
rename from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw_unparse_11.xml
rename to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw.11.dat.xml
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw_parse_12.dat b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw.12.dat
similarity index 100%
rename from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw_parse_12.dat
rename to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw.12.dat
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw_unparse_12.xml b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw.12.dat.xml
similarity index 100%
rename from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw_unparse_12.xml
rename to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw.12.dat.xml
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw_parse_13.dat b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw.13.dat
similarity index 100%
rename from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw_parse_13.dat
rename to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw.13.dat
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw_unparse_13.xml b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw.13.dat.xml
similarity index 100%
rename from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw_unparse_13.xml
rename to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw.13.dat.xml
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw_parse_14.dat b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw.14.dat
similarity index 100%
rename from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw_parse_14.dat
rename to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw.14.dat
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw_unparse_14.xml b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw.14.dat.xml
similarity index 100%
rename from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw_unparse_14.xml
rename to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw.14.dat.xml
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw_parse_15.dat b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw.15.dat
similarity index 100%
rename from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw_parse_15.dat
rename to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw.15.dat
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw_unparse_15.xml b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw.15.dat.xml
similarity index 100%
rename from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw_unparse_15.xml
rename to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw.15.dat.xml
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw_parse_16.dat b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw.16.dat
similarity index 100%
rename from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw_parse_16.dat
rename to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw.16.dat
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw_unparse_16.xml b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw.16.dat.xml
similarity index 100%
rename from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw_unparse_16.xml
rename to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw.16.dat.xml
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw_parse_17.dat b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw.17.dat
similarity index 100%
rename from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw_parse_17.dat
rename to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw.17.dat
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw_unparse_17.xml b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw.17.dat.xml
similarity index 100%
rename from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw_unparse_17.xml
rename to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw.17.dat.xml
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw_parse_18.dat b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw.18.dat
similarity index 100%
rename from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw_parse_18.dat
rename to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw.18.dat
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw_unparse_18.xml b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw.18.dat.xml
similarity index 100%
rename from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw_unparse_18.xml
rename to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw.18.dat.xml
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw_parse_19.dat b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw.19.dat
similarity index 100%
rename from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw_parse_19.dat
rename to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw.19.dat
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw_unparse_19.xml b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw.19.dat.xml
similarity index 100%
rename from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw_unparse_19.xml
rename to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw.19.dat.xml
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw_parse_20.dat b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw.20.dat
similarity index 100%
rename from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw_parse_20.dat
rename to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw.20.dat
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw_unparse_20.xml b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw.20.dat.xml
similarity index 100%
rename from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw_unparse_20.xml
rename to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw.20.dat.xml
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw.tdml b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw.tdml
index 2917c47..ff20e9b 100644
--- a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw.tdml
+++ b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw.tdml
@@ -19,8 +19,8 @@
 <tdml:testSuite
   defaultConfig="config-runtime2"
   defaultImplementations="daffodil daffodil-runtime2"
-  defaultRoundTrip="none"
-  description="TDML tests for egress_xdcc_bw"
+  defaultRoundTrip="onePass"
+  description="TDML tests for egress_xdcc_bw.dfdl.xsd"
   xmlns:daf="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:ext"
   xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/"
   xmlns:tdml="http://www.ibm.com/xmlns/dfdl/testData">
@@ -37,264 +37,94 @@
     </daf:tunables>
   </tdml:defineConfig>
 
-  <tdml:parserTestCase
-    description="egress_xdcc_bw parse test 11"
-    model="egress_xdcc_bw.dfdl.xsd"
-    name="egress_xdcc_bw_parse_11"
-    root="GapsPDU">
+  <tdml:parserTestCase model="egress_xdcc_bw.dfdl.xsd" name="egress_xdcc_bw_11">
     <tdml:document>
-      <tdml:documentPart type="file">egress_xdcc_bw_parse_11.dat</tdml:documentPart>
+      <tdml:documentPart type="file">egress_xdcc_bw.11.dat</tdml:documentPart>
     </tdml:document>
     <tdml:infoset>
-      <tdml:dfdlInfoset type="file">egress_xdcc_bw_unparse_11.xml</tdml:dfdlInfoset>
+      <tdml:dfdlInfoset type="file">egress_xdcc_bw.11.dat.xml</tdml:dfdlInfoset>
     </tdml:infoset>
   </tdml:parserTestCase>
 
-  <tdml:unparserTestCase
-    description="egress_xdcc_bw unparse test 11"
-    model="egress_xdcc_bw.dfdl.xsd"
-    name="egress_xdcc_bw_unparse_11"
-    root="GapsPDU">
-    <tdml:infoset>
-      <tdml:dfdlInfoset type="file">egress_xdcc_bw_unparse_11.xml</tdml:dfdlInfoset>
-    </tdml:infoset>
+  <tdml:parserTestCase model="egress_xdcc_bw.dfdl.xsd" name="egress_xdcc_bw_12">
     <tdml:document>
-      <tdml:documentPart type="file">egress_xdcc_bw_parse_11.dat</tdml:documentPart>
-    </tdml:document>
-  </tdml:unparserTestCase>
-
-  <tdml:parserTestCase
-    description="egress_xdcc_bw parse test 12"
-    model="egress_xdcc_bw.dfdl.xsd"
-    name="egress_xdcc_bw_parse_12"
-    root="GapsPDU">
-    <tdml:document>
-      <tdml:documentPart type="file">egress_xdcc_bw_parse_12.dat</tdml:documentPart>
+      <tdml:documentPart type="file">egress_xdcc_bw.12.dat</tdml:documentPart>
     </tdml:document>
     <tdml:infoset>
-      <tdml:dfdlInfoset type="file">egress_xdcc_bw_unparse_12.xml</tdml:dfdlInfoset>
+      <tdml:dfdlInfoset type="file">egress_xdcc_bw.12.dat.xml</tdml:dfdlInfoset>
     </tdml:infoset>
   </tdml:parserTestCase>
 
-  <tdml:unparserTestCase
-    description="egress_xdcc_bw unparse test 12"
-    model="egress_xdcc_bw.dfdl.xsd"
-    name="egress_xdcc_bw_unparse_12"
-    root="GapsPDU">
-    <tdml:infoset>
-      <tdml:dfdlInfoset type="file">egress_xdcc_bw_unparse_12.xml</tdml:dfdlInfoset>
-    </tdml:infoset>
+  <tdml:parserTestCase model="egress_xdcc_bw.dfdl.xsd" name="egress_xdcc_bw_13">
     <tdml:document>
-      <tdml:documentPart type="file">egress_xdcc_bw_parse_12.dat</tdml:documentPart>
-    </tdml:document>
-  </tdml:unparserTestCase>
-
-  <tdml:parserTestCase
-    description="egress_xdcc_bw parse test 13"
-    model="egress_xdcc_bw.dfdl.xsd"
-    name="egress_xdcc_bw_parse_13"
-    root="GapsPDU">
-    <tdml:document>
-      <tdml:documentPart type="file">egress_xdcc_bw_parse_13.dat</tdml:documentPart>
+      <tdml:documentPart type="file">egress_xdcc_bw.13.dat</tdml:documentPart>
     </tdml:document>
     <tdml:infoset>
-      <tdml:dfdlInfoset type="file">egress_xdcc_bw_unparse_13.xml</tdml:dfdlInfoset>
+      <tdml:dfdlInfoset type="file">egress_xdcc_bw.13.dat.xml</tdml:dfdlInfoset>
     </tdml:infoset>
   </tdml:parserTestCase>
 
-  <tdml:unparserTestCase
-    description="egress_xdcc_bw unparse test 13"
-    model="egress_xdcc_bw.dfdl.xsd"
-    name="egress_xdcc_bw_unparse_13"
-    root="GapsPDU">
-    <tdml:infoset>
-      <tdml:dfdlInfoset type="file">egress_xdcc_bw_unparse_13.xml</tdml:dfdlInfoset>
-    </tdml:infoset>
+  <tdml:parserTestCase model="egress_xdcc_bw.dfdl.xsd" name="egress_xdcc_bw_14">
     <tdml:document>
-      <tdml:documentPart type="file">egress_xdcc_bw_parse_13.dat</tdml:documentPart>
-    </tdml:document>
-  </tdml:unparserTestCase>
-
-  <tdml:parserTestCase
-    description="egress_xdcc_bw parse test 14"
-    model="egress_xdcc_bw.dfdl.xsd"
-    name="egress_xdcc_bw_parse_14"
-    root="GapsPDU">
-    <tdml:document>
-      <tdml:documentPart type="file">egress_xdcc_bw_parse_14.dat</tdml:documentPart>
+      <tdml:documentPart type="file">egress_xdcc_bw.14.dat</tdml:documentPart>
     </tdml:document>
     <tdml:infoset>
-      <tdml:dfdlInfoset type="file">egress_xdcc_bw_unparse_14.xml</tdml:dfdlInfoset>
+      <tdml:dfdlInfoset type="file">egress_xdcc_bw.14.dat.xml</tdml:dfdlInfoset>
     </tdml:infoset>
   </tdml:parserTestCase>
 
-  <tdml:unparserTestCase
-    description="egress_xdcc_bw unparse test 14"
-    model="egress_xdcc_bw.dfdl.xsd"
-    name="egress_xdcc_bw_unparse_14"
-    root="GapsPDU">
-    <tdml:infoset>
-      <tdml:dfdlInfoset type="file">egress_xdcc_bw_unparse_14.xml</tdml:dfdlInfoset>
-    </tdml:infoset>
-    <tdml:document>
-      <tdml:documentPart type="file">egress_xdcc_bw_parse_14.dat</tdml:documentPart>
-    </tdml:document>
-  </tdml:unparserTestCase>
-
-  <tdml:parserTestCase
-    description="egress_xdcc_bw parse test 15"
-    model="egress_xdcc_bw.dfdl.xsd"
-    name="egress_xdcc_bw_parse_15"
-    root="GapsPDU">
+  <tdml:parserTestCase model="egress_xdcc_bw.dfdl.xsd" name="egress_xdcc_bw_15">
     <tdml:document>
-      <tdml:documentPart type="file">egress_xdcc_bw_parse_15.dat</tdml:documentPart>
+      <tdml:documentPart type="file">egress_xdcc_bw.15.dat</tdml:documentPart>
     </tdml:document>
     <tdml:infoset>
-      <tdml:dfdlInfoset type="file">egress_xdcc_bw_unparse_15.xml</tdml:dfdlInfoset>
+      <tdml:dfdlInfoset type="file">egress_xdcc_bw.15.dat.xml</tdml:dfdlInfoset>
     </tdml:infoset>
   </tdml:parserTestCase>
 
-  <tdml:unparserTestCase
-    description="egress_xdcc_bw unparse test 15"
-    model="egress_xdcc_bw.dfdl.xsd"
-    name="egress_xdcc_bw_unparse_15"
-    root="GapsPDU">
-    <tdml:infoset>
-      <tdml:dfdlInfoset type="file">egress_xdcc_bw_unparse_15.xml</tdml:dfdlInfoset>
-    </tdml:infoset>
-    <tdml:document>
-      <tdml:documentPart type="file">egress_xdcc_bw_parse_15.dat</tdml:documentPart>
-    </tdml:document>
-  </tdml:unparserTestCase>
-
-  <tdml:parserTestCase
-    description="egress_xdcc_bw parse test 16"
-    model="egress_xdcc_bw.dfdl.xsd"
-    name="egress_xdcc_bw_parse_16"
-    root="GapsPDU">
+  <tdml:parserTestCase model="egress_xdcc_bw.dfdl.xsd" name="egress_xdcc_bw_16">
     <tdml:document>
-      <tdml:documentPart type="file">egress_xdcc_bw_parse_16.dat</tdml:documentPart>
+      <tdml:documentPart type="file">egress_xdcc_bw.16.dat</tdml:documentPart>
     </tdml:document>
     <tdml:infoset>
-      <tdml:dfdlInfoset type="file">egress_xdcc_bw_unparse_16.xml</tdml:dfdlInfoset>
+      <tdml:dfdlInfoset type="file">egress_xdcc_bw.16.dat.xml</tdml:dfdlInfoset>
     </tdml:infoset>
   </tdml:parserTestCase>
 
-  <tdml:unparserTestCase
-    description="egress_xdcc_bw unparse test 16"
-    model="egress_xdcc_bw.dfdl.xsd"
-    name="egress_xdcc_bw_unparse_16"
-    root="GapsPDU">
-    <tdml:infoset>
-      <tdml:dfdlInfoset type="file">egress_xdcc_bw_unparse_16.xml</tdml:dfdlInfoset>
-    </tdml:infoset>
+  <tdml:parserTestCase model="egress_xdcc_bw.dfdl.xsd" name="egress_xdcc_bw_17">
     <tdml:document>
-      <tdml:documentPart type="file">egress_xdcc_bw_parse_16.dat</tdml:documentPart>
-    </tdml:document>
-  </tdml:unparserTestCase>
-
-  <tdml:parserTestCase
-    description="egress_xdcc_bw parse test 17"
-    model="egress_xdcc_bw.dfdl.xsd"
-    name="egress_xdcc_bw_parse_17"
-    root="GapsPDU">
-    <tdml:document>
-      <tdml:documentPart type="file">egress_xdcc_bw_parse_17.dat</tdml:documentPart>
+      <tdml:documentPart type="file">egress_xdcc_bw.17.dat</tdml:documentPart>
     </tdml:document>
     <tdml:infoset>
-      <tdml:dfdlInfoset type="file">egress_xdcc_bw_unparse_17.xml</tdml:dfdlInfoset>
+      <tdml:dfdlInfoset type="file">egress_xdcc_bw.17.dat.xml</tdml:dfdlInfoset>
     </tdml:infoset>
   </tdml:parserTestCase>
 
-  <tdml:unparserTestCase
-    description="egress_xdcc_bw unparse test 17"
-    model="egress_xdcc_bw.dfdl.xsd"
-    name="egress_xdcc_bw_unparse_17"
-    root="GapsPDU">
-    <tdml:infoset>
-      <tdml:dfdlInfoset type="file">egress_xdcc_bw_unparse_17.xml</tdml:dfdlInfoset>
-    </tdml:infoset>
+  <tdml:parserTestCase model="egress_xdcc_bw.dfdl.xsd" name="egress_xdcc_bw_18">
     <tdml:document>
-      <tdml:documentPart type="file">egress_xdcc_bw_parse_17.dat</tdml:documentPart>
-    </tdml:document>
-  </tdml:unparserTestCase>
-
-  <tdml:parserTestCase
-    description="egress_xdcc_bw parse test 18"
-    model="egress_xdcc_bw.dfdl.xsd"
-    name="egress_xdcc_bw_parse_18"
-    root="GapsPDU">
-    <tdml:document>
-      <tdml:documentPart type="file">egress_xdcc_bw_parse_18.dat</tdml:documentPart>
+      <tdml:documentPart type="file">egress_xdcc_bw.18.dat</tdml:documentPart>
     </tdml:document>
     <tdml:infoset>
-      <tdml:dfdlInfoset type="file">egress_xdcc_bw_unparse_18.xml</tdml:dfdlInfoset>
+      <tdml:dfdlInfoset type="file">egress_xdcc_bw.18.dat.xml</tdml:dfdlInfoset>
     </tdml:infoset>
   </tdml:parserTestCase>
 
-  <tdml:unparserTestCase
-    description="egress_xdcc_bw unparse test 18"
-    model="egress_xdcc_bw.dfdl.xsd"
-    name="egress_xdcc_bw_unparse_18"
-    root="GapsPDU">
-    <tdml:infoset>
-      <tdml:dfdlInfoset type="file">egress_xdcc_bw_unparse_18.xml</tdml:dfdlInfoset>
-    </tdml:infoset>
+  <tdml:parserTestCase model="egress_xdcc_bw.dfdl.xsd" name="egress_xdcc_bw_19">
     <tdml:document>
-      <tdml:documentPart type="file">egress_xdcc_bw_parse_18.dat</tdml:documentPart>
-    </tdml:document>
-  </tdml:unparserTestCase>
-
-  <tdml:parserTestCase
-    description="egress_xdcc_bw parse test 19"
-    model="egress_xdcc_bw.dfdl.xsd"
-    name="egress_xdcc_bw_parse_19"
-    root="GapsPDU">
-    <tdml:document>
-      <tdml:documentPart type="file">egress_xdcc_bw_parse_19.dat</tdml:documentPart>
+      <tdml:documentPart type="file">egress_xdcc_bw.19.dat</tdml:documentPart>
     </tdml:document>
     <tdml:infoset>
-      <tdml:dfdlInfoset type="file">egress_xdcc_bw_unparse_19.xml</tdml:dfdlInfoset>
+      <tdml:dfdlInfoset type="file">egress_xdcc_bw.19.dat.xml</tdml:dfdlInfoset>
     </tdml:infoset>
   </tdml:parserTestCase>
 
-  <tdml:unparserTestCase
-    description="egress_xdcc_bw unparse test 19"
-    model="egress_xdcc_bw.dfdl.xsd"
-    name="egress_xdcc_bw_unparse_19"
-    root="GapsPDU">
-    <tdml:infoset>
-      <tdml:dfdlInfoset type="file">egress_xdcc_bw_unparse_19.xml</tdml:dfdlInfoset>
-    </tdml:infoset>
-    <tdml:document>
-      <tdml:documentPart type="file">egress_xdcc_bw_parse_19.dat</tdml:documentPart>
-    </tdml:document>
-  </tdml:unparserTestCase>
-
-  <tdml:parserTestCase
-    description="egress_xdcc_bw parse test 20"
-    model="egress_xdcc_bw.dfdl.xsd"
-    name="egress_xdcc_bw_parse_20"
-    root="GapsPDU">
+  <tdml:parserTestCase model="egress_xdcc_bw.dfdl.xsd" name="egress_xdcc_bw_20">
     <tdml:document>
-      <tdml:documentPart type="file">egress_xdcc_bw_parse_20.dat</tdml:documentPart>
+      <tdml:documentPart type="file">egress_xdcc_bw.20.dat</tdml:documentPart>
     </tdml:document>
     <tdml:infoset>
-      <tdml:dfdlInfoset type="file">egress_xdcc_bw_unparse_20.xml</tdml:dfdlInfoset>
+      <tdml:dfdlInfoset type="file">egress_xdcc_bw.20.dat.xml</tdml:dfdlInfoset>
     </tdml:infoset>
   </tdml:parserTestCase>
 
-  <tdml:unparserTestCase
-    description="egress_xdcc_bw unparse test 20"
-    model="egress_xdcc_bw.dfdl.xsd"
-    name="egress_xdcc_bw_unparse_20"
-    root="GapsPDU">
-    <tdml:infoset>
-      <tdml:dfdlInfoset type="file">egress_xdcc_bw_unparse_20.xml</tdml:dfdlInfoset>
-    </tdml:infoset>
-    <tdml:document>
-      <tdml:documentPart type="file">egress_xdcc_bw_parse_20.dat</tdml:documentPart>
-    </tdml:document>
-  </tdml:unparserTestCase>
-
 </tdml:testSuite>
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw_parse_111.dat b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw.111.dat
similarity index 100%
rename from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw_parse_111.dat
rename to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw.111.dat
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw_unparse_111.xml b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw.111.dat.xml
similarity index 100%
rename from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw_unparse_111.xml
rename to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw.111.dat.xml
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw_parse_112.dat b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw.112.dat
similarity index 100%
rename from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw_parse_112.dat
rename to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw.112.dat
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw_unparse_112.xml b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw.112.dat.xml
similarity index 100%
rename from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw_unparse_112.xml
rename to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw.112.dat.xml
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw_parse_113.dat b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw.113.dat
similarity index 100%
rename from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw_parse_113.dat
rename to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw.113.dat
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw_unparse_113.xml b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw.113.dat.xml
similarity index 100%
rename from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw_unparse_113.xml
rename to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw.113.dat.xml
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw_parse_114.dat b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw.114.dat
similarity index 100%
rename from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw_parse_114.dat
rename to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw.114.dat
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw_unparse_114.xml b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw.114.dat.xml
similarity index 100%
rename from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw_unparse_114.xml
rename to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw.114.dat.xml
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw_parse_115.dat b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw.115.dat
similarity index 100%
rename from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw_parse_115.dat
rename to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw.115.dat
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw_unparse_115.xml b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw.115.dat.xml
similarity index 100%
rename from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw_unparse_115.xml
rename to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw.115.dat.xml
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw_parse_116.dat b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw.116.dat
similarity index 100%
rename from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw_parse_116.dat
rename to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw.116.dat
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw_unparse_116.xml b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw.116.dat.xml
similarity index 100%
rename from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw_unparse_116.xml
rename to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw.116.dat.xml
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw.tdml b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw.tdml
index 9fbadfd..2b2bede 100644
--- a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw.tdml
+++ b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw.tdml
@@ -19,8 +19,8 @@
 <tdml:testSuite
   defaultConfig="config-runtime2"
   defaultImplementations="daffodil daffodil-runtime2"
-  defaultRoundTrip="none"
-  description="TDML tests for ingress_xdcc_bw"
+  defaultRoundTrip="onePass"
+  description="TDML tests for ingress_xdcc_bw.dfdl.xsd"
   xmlns:daf="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:ext"
   xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/"
   xmlns:tdml="http://www.ibm.com/xmlns/dfdl/testData">
@@ -37,160 +37,58 @@
     </daf:tunables>
   </tdml:defineConfig>
 
-  <tdml:parserTestCase
-    description="ingress_xdcc_bw parse test 111"
-    model="ingress_xdcc_bw.dfdl.xsd"
-    name="ingress_xdcc_bw_parse_111"
-    root="GapsPDU">
+  <tdml:parserTestCase model="ingress_xdcc_bw.dfdl.xsd" name="ingress_xdcc_bw_111">
     <tdml:document>
-      <tdml:documentPart type="file">ingress_xdcc_bw_parse_111.dat</tdml:documentPart>
+      <tdml:documentPart type="file">ingress_xdcc_bw.111.dat</tdml:documentPart>
     </tdml:document>
     <tdml:infoset>
-      <tdml:dfdlInfoset type="file">ingress_xdcc_bw_unparse_111.xml</tdml:dfdlInfoset>
+      <tdml:dfdlInfoset type="file">ingress_xdcc_bw.111.dat.xml</tdml:dfdlInfoset>
     </tdml:infoset>
   </tdml:parserTestCase>
 
-  <tdml:unparserTestCase
-    description="ingress_xdcc_bw unparse test 111"
-    model="ingress_xdcc_bw.dfdl.xsd"
-    name="ingress_xdcc_bw_unparse_111"
-    root="GapsPDU">
-    <tdml:infoset>
-      <tdml:dfdlInfoset type="file">ingress_xdcc_bw_unparse_111.xml</tdml:dfdlInfoset>
-    </tdml:infoset>
-    <tdml:document>
-      <tdml:documentPart type="file">ingress_xdcc_bw_parse_111.dat</tdml:documentPart>
-    </tdml:document>
-  </tdml:unparserTestCase>
-
-  <tdml:parserTestCase
-    description="ingress_xdcc_bw parse test 112"
-    model="ingress_xdcc_bw.dfdl.xsd"
-    name="ingress_xdcc_bw_parse_112"
-    root="GapsPDU">
+  <tdml:parserTestCase model="ingress_xdcc_bw.dfdl.xsd" name="ingress_xdcc_bw_112">
     <tdml:document>
-      <tdml:documentPart type="file">ingress_xdcc_bw_parse_112.dat</tdml:documentPart>
+      <tdml:documentPart type="file">ingress_xdcc_bw.112.dat</tdml:documentPart>
     </tdml:document>
     <tdml:infoset>
-      <tdml:dfdlInfoset type="file">ingress_xdcc_bw_unparse_112.xml</tdml:dfdlInfoset>
+      <tdml:dfdlInfoset type="file">ingress_xdcc_bw.112.dat.xml</tdml:dfdlInfoset>
     </tdml:infoset>
   </tdml:parserTestCase>
 
-  <tdml:unparserTestCase
-    description="ingress_xdcc_bw unparse test 112"
-    model="ingress_xdcc_bw.dfdl.xsd"
-    name="ingress_xdcc_bw_unparse_112"
-    root="GapsPDU">
-    <tdml:infoset>
-      <tdml:dfdlInfoset type="file">ingress_xdcc_bw_unparse_112.xml</tdml:dfdlInfoset>
-    </tdml:infoset>
+  <tdml:parserTestCase model="ingress_xdcc_bw.dfdl.xsd" name="ingress_xdcc_bw_113">
     <tdml:document>
-      <tdml:documentPart type="file">ingress_xdcc_bw_parse_112.dat</tdml:documentPart>
-    </tdml:document>
-  </tdml:unparserTestCase>
-
-  <tdml:parserTestCase
-    description="ingress_xdcc_bw parse test 113"
-    model="ingress_xdcc_bw.dfdl.xsd"
-    name="ingress_xdcc_bw_parse_113"
-    root="GapsPDU">
-    <tdml:document>
-      <tdml:documentPart type="file">ingress_xdcc_bw_parse_113.dat</tdml:documentPart>
+      <tdml:documentPart type="file">ingress_xdcc_bw.113.dat</tdml:documentPart>
     </tdml:document>
     <tdml:infoset>
-      <tdml:dfdlInfoset type="file">ingress_xdcc_bw_unparse_113.xml</tdml:dfdlInfoset>
+      <tdml:dfdlInfoset type="file">ingress_xdcc_bw.113.dat.xml</tdml:dfdlInfoset>
     </tdml:infoset>
   </tdml:parserTestCase>
 
-  <tdml:unparserTestCase
-    description="ingress_xdcc_bw unparse test 113"
-    model="ingress_xdcc_bw.dfdl.xsd"
-    name="ingress_xdcc_bw_unparse_113"
-    root="GapsPDU">
-    <tdml:infoset>
-      <tdml:dfdlInfoset type="file">ingress_xdcc_bw_unparse_113.xml</tdml:dfdlInfoset>
-    </tdml:infoset>
-    <tdml:document>
-      <tdml:documentPart type="file">ingress_xdcc_bw_parse_113.dat</tdml:documentPart>
-    </tdml:document>
-  </tdml:unparserTestCase>
-
-  <tdml:parserTestCase
-    description="ingress_xdcc_bw parse test 114"
-    model="ingress_xdcc_bw.dfdl.xsd"
-    name="ingress_xdcc_bw_parse_114"
-    root="GapsPDU">
+  <tdml:parserTestCase model="ingress_xdcc_bw.dfdl.xsd" name="ingress_xdcc_bw_114">
     <tdml:document>
-      <tdml:documentPart type="file">ingress_xdcc_bw_parse_114.dat</tdml:documentPart>
+      <tdml:documentPart type="file">ingress_xdcc_bw.114.dat</tdml:documentPart>
     </tdml:document>
     <tdml:infoset>
-      <tdml:dfdlInfoset type="file">ingress_xdcc_bw_unparse_114.xml</tdml:dfdlInfoset>
+      <tdml:dfdlInfoset type="file">ingress_xdcc_bw.114.dat.xml</tdml:dfdlInfoset>
     </tdml:infoset>
   </tdml:parserTestCase>
 
-  <tdml:unparserTestCase
-    description="ingress_xdcc_bw unparse test 114"
-    model="ingress_xdcc_bw.dfdl.xsd"
-    name="ingress_xdcc_bw_unparse_114"
-    root="GapsPDU">
-    <tdml:infoset>
-      <tdml:dfdlInfoset type="file">ingress_xdcc_bw_unparse_114.xml</tdml:dfdlInfoset>
-    </tdml:infoset>
-    <tdml:document>
-      <tdml:documentPart type="file">ingress_xdcc_bw_parse_114.dat</tdml:documentPart>
-    </tdml:document>
-  </tdml:unparserTestCase>
-
-  <tdml:parserTestCase
-    description="ingress_xdcc_bw parse test 115"
-    model="ingress_xdcc_bw.dfdl.xsd"
-    name="ingress_xdcc_bw_parse_115"
-    root="GapsPDU">
+  <tdml:parserTestCase model="ingress_xdcc_bw.dfdl.xsd" name="ingress_xdcc_bw_115">
     <tdml:document>
-      <tdml:documentPart type="file">ingress_xdcc_bw_parse_115.dat</tdml:documentPart>
+      <tdml:documentPart type="file">ingress_xdcc_bw.115.dat</tdml:documentPart>
     </tdml:document>
     <tdml:infoset>
-      <tdml:dfdlInfoset type="file">ingress_xdcc_bw_unparse_115.xml</tdml:dfdlInfoset>
+      <tdml:dfdlInfoset type="file">ingress_xdcc_bw.115.dat.xml</tdml:dfdlInfoset>
     </tdml:infoset>
   </tdml:parserTestCase>
 
-  <tdml:unparserTestCase
-    description="ingress_xdcc_bw unparse test 115"
-    model="ingress_xdcc_bw.dfdl.xsd"
-    name="ingress_xdcc_bw_unparse_115"
-    root="GapsPDU">
-    <tdml:infoset>
-      <tdml:dfdlInfoset type="file">ingress_xdcc_bw_unparse_115.xml</tdml:dfdlInfoset>
-    </tdml:infoset>
+  <tdml:parserTestCase model="ingress_xdcc_bw.dfdl.xsd" name="ingress_xdcc_bw_116">
     <tdml:document>
-      <tdml:documentPart type="file">ingress_xdcc_bw_parse_115.dat</tdml:documentPart>
-    </tdml:document>
-  </tdml:unparserTestCase>
-
-  <tdml:parserTestCase
-    description="ingress_xdcc_bw parse test 116"
-    model="ingress_xdcc_bw.dfdl.xsd"
-    name="ingress_xdcc_bw_parse_116"
-    root="GapsPDU">
-    <tdml:document>
-      <tdml:documentPart type="file">ingress_xdcc_bw_parse_116.dat</tdml:documentPart>
+      <tdml:documentPart type="file">ingress_xdcc_bw.116.dat</tdml:documentPart>
     </tdml:document>
     <tdml:infoset>
-      <tdml:dfdlInfoset type="file">ingress_xdcc_bw_unparse_116.xml</tdml:dfdlInfoset>
+      <tdml:dfdlInfoset type="file">ingress_xdcc_bw.116.dat.xml</tdml:dfdlInfoset>
     </tdml:infoset>
   </tdml:parserTestCase>
 
-  <tdml:unparserTestCase
-    description="ingress_xdcc_bw unparse test 116"
-    model="ingress_xdcc_bw.dfdl.xsd"
-    name="ingress_xdcc_bw_unparse_116"
-    root="GapsPDU">
-    <tdml:infoset>
-      <tdml:dfdlInfoset type="file">ingress_xdcc_bw_unparse_116.xml</tdml:dfdlInfoset>
-    </tdml:infoset>
-    <tdml:document>
-      <tdml:documentPart type="file">ingress_xdcc_bw_parse_116.dat</tdml:documentPart>
-    </tdml:document>
-  </tdml:unparserTestCase>
-
 </tdml:testSuite>
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/orion-command.tdml b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/orion-command.tdml
deleted file mode 100644
index e9c30e2..0000000
--- a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/orion-command.tdml
+++ /dev/null
@@ -1,161 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<tdml:testSuite
-  defaultConfig="config-runtime2"
-  defaultImplementations="daffodil daffodil-runtime2"
-  defaultRoundTrip="none"
-  defaultValidation="on"
-  description="TDML tests for orion-command"
-  xmlns:daf="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:ext"
-  xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/"
-  xmlns:tdml="http://www.ibm.com/xmlns/dfdl/testData">
-
-  <tdml:defineConfig name="config-runtime1">
-    <daf:tunables>
-      <daf:tdmlImplementation>daffodil</daf:tdmlImplementation>
-    </daf:tunables>
-  </tdml:defineConfig>
-
-  <tdml:defineConfig name="config-runtime2">
-    <daf:tunables>
-      <daf:tdmlImplementation>daffodil-runtime2</daf:tdmlImplementation>
-    </daf:tunables>
-  </tdml:defineConfig>
-
-  <tdml:parserTestCase
-    model="orion-command.dfdl.xsd"
-    name="command_parse"
-    root="CommandDecl">
-    <tdml:document>
-      <tdml:documentPart type="file">command_parse.dat</tdml:documentPart>
-    </tdml:document>
-    <tdml:infoset>
-      <tdml:dfdlInfoset type="file">command_unparse.xml</tdml:dfdlInfoset>
-    </tdml:infoset>
-  </tdml:parserTestCase>
-
-  <tdml:unparserTestCase
-    model="orion-command.dfdl.xsd"
-    name="command_unparse"
-    root="CommandDecl">
-    <tdml:infoset>
-      <tdml:dfdlInfoset type="file">command_unparse.xml</tdml:dfdlInfoset>
-    </tdml:infoset>
-    <tdml:document>
-      <tdml:documentPart type="file">command_parse.dat</tdml:documentPart>
-    </tdml:document>
-  </tdml:unparserTestCase>
-
-  <tdml:parserTestCase
-    model="orion-command.dfdl.xsd"
-    name="camera_state_parse"
-    root="CameraStateDecl">
-    <tdml:document>
-      <tdml:documentPart type="file">camera_state_parse.dat</tdml:documentPart>
-    </tdml:document>
-    <tdml:infoset>
-      <tdml:dfdlInfoset type="file">camera_state_unparse.xml</tdml:dfdlInfoset>
-    </tdml:infoset>
-  </tdml:parserTestCase>
-
-  <tdml:unparserTestCase
-    model="orion-command.dfdl.xsd"
-    name="camera_state_unparse"
-    root="CameraStateDecl">
-    <tdml:infoset>
-      <tdml:dfdlInfoset type="file">camera_state_unparse.xml</tdml:dfdlInfoset>
-    </tdml:infoset>
-    <tdml:document>
-      <tdml:documentPart type="file">camera_state_parse.dat</tdml:documentPart>
-    </tdml:document>
-  </tdml:unparserTestCase>
-
-  <tdml:parserTestCase
-    model="orion-command.dfdl.xsd"
-    name="video_settings_parse"
-    root="VideoSettingsDecl">
-    <tdml:document>
-      <tdml:documentPart type="file">video_settings_parse.dat</tdml:documentPart>
-    </tdml:document>
-    <tdml:infoset>
-      <tdml:dfdlInfoset type="file">video_settings_unparse.xml</tdml:dfdlInfoset>
-    </tdml:infoset>
-  </tdml:parserTestCase>
-
-  <tdml:unparserTestCase
-    model="orion-command.dfdl.xsd"
-    name="video_settings_unparse"
-    root="VideoSettingsDecl">
-    <tdml:infoset>
-      <tdml:dfdlInfoset type="file">video_settings_unparse.xml</tdml:dfdlInfoset>
-    </tdml:infoset>
-    <tdml:document>
-      <tdml:documentPart type="file">video_settings_parse.dat</tdml:documentPart>
-    </tdml:document>
-  </tdml:unparserTestCase>
-
-  <tdml:parserTestCase
-    model="orion-command.dfdl.xsd"
-    name="aptina_settings_parse"
-    root="AptinaSettingsDecl">
-    <tdml:document>
-      <tdml:documentPart type="file">aptina_settings_parse.dat</tdml:documentPart>
-    </tdml:document>
-    <tdml:infoset>
-      <tdml:dfdlInfoset type="file">aptina_settings_unparse.xml</tdml:dfdlInfoset>
-    </tdml:infoset>
-  </tdml:parserTestCase>
-
-  <tdml:unparserTestCase
-    model="orion-command.dfdl.xsd"
-    name="aptina_settings_unparse"
-    root="AptinaSettingsDecl">
-    <tdml:infoset>
-      <tdml:dfdlInfoset type="file">aptina_settings_unparse.xml</tdml:dfdlInfoset>
-    </tdml:infoset>
-    <tdml:document>
-      <tdml:documentPart type="file">aptina_settings_parse.dat</tdml:documentPart>
-    </tdml:document>
-  </tdml:unparserTestCase>
-
-  <tdml:parserTestCase
-    model="orion-command.dfdl.xsd"
-    name="limits_parse"
-    root="LimitsDecl">
-    <tdml:document>
-      <tdml:documentPart type="file">limits_parse.dat</tdml:documentPart>
-    </tdml:document>
-    <tdml:infoset>
-      <tdml:dfdlInfoset type="file">limits_unparse.xml</tdml:dfdlInfoset>
-    </tdml:infoset>
-  </tdml:parserTestCase>
-
-  <tdml:unparserTestCase
-    model="orion-command.dfdl.xsd"
-    name="limits_unparse"
-    root="LimitsDecl">
-    <tdml:infoset>
-      <tdml:dfdlInfoset type="file">limits_unparse.xml</tdml:dfdlInfoset>
-    </tdml:infoset>
-    <tdml:document>
-      <tdml:documentPart type="file">limits_parse.dat</tdml:documentPart>
-    </tdml:document>
-  </tdml:unparserTestCase>
-
-</tdml:testSuite>
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/aptina_settings_parse.dat b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/orion.aptina.dat
similarity index 100%
rename from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/aptina_settings_parse.dat
rename to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/orion.aptina.dat
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/aptina_settings_unparse.xml b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/orion.aptina.dat.xml
similarity index 100%
rename from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/aptina_settings_unparse.xml
rename to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/orion.aptina.dat.xml
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/camera_state_parse.dat b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/orion.camera.dat
similarity index 100%
rename from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/camera_state_parse.dat
rename to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/orion.camera.dat
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/camera_state_unparse.xml b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/orion.camera.dat.xml
similarity index 100%
rename from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/camera_state_unparse.xml
rename to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/orion.camera.dat.xml
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/command_parse.dat b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/orion.command.dat
similarity index 100%
rename from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/command_parse.dat
rename to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/orion.command.dat
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/command_unparse.xml b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/orion.command.dat.xml
similarity index 100%
rename from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/command_unparse.xml
rename to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/orion.command.dat.xml
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/orion-command.dfdl.xsd b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/orion.dfdl.xsd
similarity index 100%
rename from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/orion-command.dfdl.xsd
rename to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/orion.dfdl.xsd
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/limits_parse.dat b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/orion.limits.dat
similarity index 100%
rename from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/limits_parse.dat
rename to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/orion.limits.dat
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/limits_unparse.xml b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/orion.limits.dat.xml
similarity index 100%
rename from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/limits_unparse.xml
rename to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/orion.limits.dat.xml
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/MPU_orange_to_green_60006.tdml b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/orion.tdml
similarity index 55%
copy from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/MPU_orange_to_green_60006.tdml
copy to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/orion.tdml
index ae6376c..0bd312c 100644
--- a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/MPU_orange_to_green_60006.tdml
+++ b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/orion.tdml
@@ -19,9 +19,9 @@
 <tdml:testSuite
   defaultConfig="config-runtime2"
   defaultImplementations="daffodil daffodil-runtime2"
-  defaultRoundTrip="none"
+  defaultRoundTrip="onePass"
   defaultValidation="on"
-  description="TDML tests for MPU_orange_to_green_60006"
+  description="TDML tests for orion.dfdl.xsd"
   xmlns:daf="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:ext"
   xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/"
   xmlns:tdml="http://www.ibm.com/xmlns/dfdl/testData">
@@ -38,52 +38,49 @@
     </daf:tunables>
   </tdml:defineConfig>
 
-  <tdml:parserTestCase
-    model="MPU_orange_to_green_60006.dfdl.xsd"
-    name="MPU_orange_to_green_60006_parse_0"
-    root="MpuRequestDecl">
+  <tdml:parserTestCase model="orion.dfdl.xsd" name="orion_aptina">
     <tdml:document>
-      <tdml:documentPart type="file">MPU_orange_to_green_60006_parse_0.dat</tdml:documentPart>
+      <tdml:documentPart type="file">orion.aptina.dat</tdml:documentPart>
     </tdml:document>
     <tdml:infoset>
-      <tdml:dfdlInfoset type="file">MPU_orange_to_green_60006_unparse_0.xml</tdml:dfdlInfoset>
+      <tdml:dfdlInfoset type="file">orion.aptina.dat.xml</tdml:dfdlInfoset>
     </tdml:infoset>
   </tdml:parserTestCase>
 
-  <tdml:unparserTestCase
-    model="MPU_orange_to_green_60006.dfdl.xsd"
-    name="MPU_orange_to_green_60006_unparse_0"
-    root="MpuRequestDecl">
-    <tdml:infoset>
-      <tdml:dfdlInfoset type="file">MPU_orange_to_green_60006_unparse_0.xml</tdml:dfdlInfoset>
-    </tdml:infoset>
+  <tdml:parserTestCase model="orion.dfdl.xsd" name="orion_camera">
     <tdml:document>
-      <tdml:documentPart type="file">MPU_orange_to_green_60006_parse_0.dat</tdml:documentPart>
+      <tdml:documentPart type="file">orion.camera.dat</tdml:documentPart>
     </tdml:document>
-  </tdml:unparserTestCase>
+    <tdml:infoset>
+      <tdml:dfdlInfoset type="file">orion.camera.dat.xml</tdml:dfdlInfoset>
+    </tdml:infoset>
+  </tdml:parserTestCase>
 
-  <tdml:parserTestCase
-    model="MPU_orange_to_green_60006.dfdl.xsd"
-    name="MPU_orange_to_green_60006_parse_1"
-    root="MpuRequestDecl">
+  <tdml:parserTestCase model="orion.dfdl.xsd" name="orion_command">
     <tdml:document>
-      <tdml:documentPart type="file">MPU_orange_to_green_60006_parse_1.dat</tdml:documentPart>
+      <tdml:documentPart type="file">orion.command.dat</tdml:documentPart>
     </tdml:document>
     <tdml:infoset>
-      <tdml:dfdlInfoset type="file">MPU_orange_to_green_60006_unparse_1.xml</tdml:dfdlInfoset>
+      <tdml:dfdlInfoset type="file">orion.command.dat.xml</tdml:dfdlInfoset>
     </tdml:infoset>
   </tdml:parserTestCase>
 
-  <tdml:unparserTestCase
-    model="MPU_orange_to_green_60006.dfdl.xsd"
-    name="MPU_orange_to_green_60006_unparse_1"
-    root="MpuRequestDecl">
+  <tdml:parserTestCase model="orion.dfdl.xsd" name="orion_limits">
+    <tdml:document>
+      <tdml:documentPart type="file">orion.limits.dat</tdml:documentPart>
+    </tdml:document>
     <tdml:infoset>
-      <tdml:dfdlInfoset type="file">MPU_orange_to_green_60006_unparse_1.xml</tdml:dfdlInfoset>
+      <tdml:dfdlInfoset type="file">orion.limits.dat.xml</tdml:dfdlInfoset>
     </tdml:infoset>
+  </tdml:parserTestCase>
+
+  <tdml:parserTestCase model="orion.dfdl.xsd" name="orion_video">
     <tdml:document>
-      <tdml:documentPart type="file">MPU_orange_to_green_60006_parse_1.dat</tdml:documentPart>
+      <tdml:documentPart type="file">orion.video.dat</tdml:documentPart>
     </tdml:document>
-  </tdml:unparserTestCase>
+    <tdml:infoset>
+      <tdml:dfdlInfoset type="file">orion.video.dat.xml</tdml:dfdlInfoset>
+    </tdml:infoset>
+  </tdml:parserTestCase>
 
 </tdml:testSuite>
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/video_settings_parse.dat b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/orion.video.dat
similarity index 100%
rename from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/video_settings_parse.dat
rename to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/orion.video.dat
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/video_settings_unparse.xml b/daffodil-test/src/test/resources/org/apache/daffodil/runtime2/orion.video.dat.xml
similarity index 100%
rename from daffodil-test/src/test/resources/org/apache/daffodil/runtime2/video_settings_unparse.xml
rename to daffodil-test/src/test/resources/org/apache/daffodil/runtime2/orion.video.dat.xml
diff --git a/daffodil-test/src/test/scala/org/apache/daffodil/runtime2/TestEgressXdccBw.scala b/daffodil-test/src/test/scala/org/apache/daffodil/runtime2/TestEgressXdccBw.scala
index 9865d40..7181df1 100644
--- a/daffodil-test/src/test/scala/org/apache/daffodil/runtime2/TestEgressXdccBw.scala
+++ b/daffodil-test/src/test/scala/org/apache/daffodil/runtime2/TestEgressXdccBw.scala
@@ -31,24 +31,14 @@ object TestEgressXdccBw {
 class TestEgressXdccBw {
   import TestEgressXdccBw._
 
-  @Test def test_egress_xdcc_bw_parse_11(): Unit = { runner.runOneTest("egress_xdcc_bw_parse_11") }
-  @Test def test_egress_xdcc_bw_unparse_11(): Unit = { runner.runOneTest("egress_xdcc_bw_unparse_11") }
-  @Test def test_egress_xdcc_bw_parse_12(): Unit = { runner.runOneTest("egress_xdcc_bw_parse_12") }
-  @Test def test_egress_xdcc_bw_unparse_12(): Unit = { runner.runOneTest("egress_xdcc_bw_unparse_12") }
-  @Test def test_egress_xdcc_bw_parse_13(): Unit = { runner.runOneTest("egress_xdcc_bw_parse_13") }
-  @Test def test_egress_xdcc_bw_unparse_13(): Unit = { runner.runOneTest("egress_xdcc_bw_unparse_13") }
-  @Test def test_egress_xdcc_bw_parse_14(): Unit = { runner.runOneTest("egress_xdcc_bw_parse_14") }
-  @Test def test_egress_xdcc_bw_unparse_14(): Unit = { runner.runOneTest("egress_xdcc_bw_unparse_14") }
-  @Test def test_egress_xdcc_bw_parse_15(): Unit = { runner.runOneTest("egress_xdcc_bw_parse_15") }
-  @Test def test_egress_xdcc_bw_unparse_15(): Unit = { runner.runOneTest("egress_xdcc_bw_unparse_15") }
-  @Test def test_egress_xdcc_bw_parse_16(): Unit = { runner.runOneTest("egress_xdcc_bw_parse_16") }
-  @Test def test_egress_xdcc_bw_unparse_16(): Unit = { runner.runOneTest("egress_xdcc_bw_unparse_16") }
-  @Test def test_egress_xdcc_bw_parse_17(): Unit = { runner.runOneTest("egress_xdcc_bw_parse_17") }
-  @Test def test_egress_xdcc_bw_unparse_17(): Unit = { runner.runOneTest("egress_xdcc_bw_unparse_17") }
-  @Test def test_egress_xdcc_bw_parse_18(): Unit = { runner.runOneTest("egress_xdcc_bw_parse_18") }
-  @Test def test_egress_xdcc_bw_unparse_18(): Unit = { runner.runOneTest("egress_xdcc_bw_unparse_18") }
-  @Test def test_egress_xdcc_bw_parse_19(): Unit = { runner.runOneTest("egress_xdcc_bw_parse_19") }
-  @Test def test_egress_xdcc_bw_unparse_19(): Unit = { runner.runOneTest("egress_xdcc_bw_unparse_19") }
-  @Test def test_egress_xdcc_bw_parse_20(): Unit = { runner.runOneTest("egress_xdcc_bw_parse_20") }
-  @Test def test_egress_xdcc_bw_unparse_20(): Unit = { runner.runOneTest("egress_xdcc_bw_unparse_20") }
+  @Test def test_egress_xdcc_bw_11(): Unit = { runner.runOneTest("egress_xdcc_bw_11") }
+  @Test def test_egress_xdcc_bw_12(): Unit = { runner.runOneTest("egress_xdcc_bw_12") }
+  @Test def test_egress_xdcc_bw_13(): Unit = { runner.runOneTest("egress_xdcc_bw_13") }
+  @Test def test_egress_xdcc_bw_14(): Unit = { runner.runOneTest("egress_xdcc_bw_14") }
+  @Test def test_egress_xdcc_bw_15(): Unit = { runner.runOneTest("egress_xdcc_bw_15") }
+  @Test def test_egress_xdcc_bw_16(): Unit = { runner.runOneTest("egress_xdcc_bw_16") }
+  @Test def test_egress_xdcc_bw_17(): Unit = { runner.runOneTest("egress_xdcc_bw_17") }
+  @Test def test_egress_xdcc_bw_18(): Unit = { runner.runOneTest("egress_xdcc_bw_18") }
+  @Test def test_egress_xdcc_bw_19(): Unit = { runner.runOneTest("egress_xdcc_bw_19") }
+  @Test def test_egress_xdcc_bw_20(): Unit = { runner.runOneTest("egress_xdcc_bw_20") }
 }
diff --git a/daffodil-test/src/test/scala/org/apache/daffodil/runtime2/TestExNums.scala b/daffodil-test/src/test/scala/org/apache/daffodil/runtime2/TestExNums.scala
index a52caed..28c5930 100644
--- a/daffodil-test/src/test/scala/org/apache/daffodil/runtime2/TestExNums.scala
+++ b/daffodil-test/src/test/scala/org/apache/daffodil/runtime2/TestExNums.scala
@@ -31,9 +31,8 @@ object TestExNums {
 class TestExNums {
   import TestExNums._
 
-  @Test def test_ex_nums_parse_runtime1(): Unit = { runner.runOneTest("ex_nums_parse_runtime1") }
-  @Test def test_ex_nums_unparse_runtime1(): Unit = { runner.runOneTest("ex_nums_unparse_runtime1") }
-  @Test def test_ex_nums_parse_runtime2(): Unit = { runner.runOneTest("ex_nums_parse_runtime2") }
-  @Test def test_ex_nums_unparse_runtime2(): Unit = { runner.runOneTest("ex_nums_unparse_runtime2") }
-  @Test def test_ex_nums_unparse_errors(): Unit = { runner.runOneTest("ex_nums_unparse_errors") }
+  @Test def test_ex_nums_runtime1(): Unit = { runner.runOneTest("ex_nums_runtime1") }
+  @Test def test_ex_nums_runtime1_error(): Unit = { runner.runOneTest("ex_nums_runtime1_error") }
+  @Test def test_ex_nums_runtime2(): Unit = { runner.runOneTest("ex_nums_runtime2") }
+  @Test def test_ex_nums_runtime2_error(): Unit = { runner.runOneTest("ex_nums_runtime2_error") }
 }
diff --git a/daffodil-test/src/test/scala/org/apache/daffodil/runtime2/TestIngressXdccBw.scala b/daffodil-test/src/test/scala/org/apache/daffodil/runtime2/TestIngressXdccBw.scala
index f612f17..75211d1 100644
--- a/daffodil-test/src/test/scala/org/apache/daffodil/runtime2/TestIngressXdccBw.scala
+++ b/daffodil-test/src/test/scala/org/apache/daffodil/runtime2/TestIngressXdccBw.scala
@@ -31,16 +31,10 @@ object TestIngressXdccBw {
 class TestIngressXdccBw {
   import TestIngressXdccBw._
 
-  @Test def test_ingress_xdcc_bw_parse_111(): Unit = { runner.runOneTest("ingress_xdcc_bw_parse_111") }
-  @Test def test_ingress_xdcc_bw_unparse_111(): Unit = { runner.runOneTest("ingress_xdcc_bw_unparse_111") }
-  @Test def test_ingress_xdcc_bw_parse_112(): Unit = { runner.runOneTest("ingress_xdcc_bw_parse_112") }
-  @Test def test_ingress_xdcc_bw_unparse_112(): Unit = { runner.runOneTest("ingress_xdcc_bw_unparse_112") }
-  @Test def test_ingress_xdcc_bw_parse_113(): Unit = { runner.runOneTest("ingress_xdcc_bw_parse_113") }
-  @Test def test_ingress_xdcc_bw_unparse_113(): Unit = { runner.runOneTest("ingress_xdcc_bw_unparse_113") }
-  @Test def test_ingress_xdcc_bw_parse_114(): Unit = { runner.runOneTest("ingress_xdcc_bw_parse_114") }
-  @Test def test_ingress_xdcc_bw_unparse_114(): Unit = { runner.runOneTest("ingress_xdcc_bw_unparse_114") }
-  @Test def test_ingress_xdcc_bw_parse_115(): Unit = { runner.runOneTest("ingress_xdcc_bw_parse_115") }
-  @Test def test_ingress_xdcc_bw_unparse_115(): Unit = { runner.runOneTest("ingress_xdcc_bw_unparse_115") }
-  @Test def test_ingress_xdcc_bw_parse_116(): Unit = { runner.runOneTest("ingress_xdcc_bw_parse_116") }
-  @Test def test_ingress_xdcc_bw_unparse_116(): Unit = { runner.runOneTest("ingress_xdcc_bw_unparse_116") }
+  @Test def test_ingress_xdcc_bw_111(): Unit = { runner.runOneTest("ingress_xdcc_bw_111") }
+  @Test def test_ingress_xdcc_bw_112(): Unit = { runner.runOneTest("ingress_xdcc_bw_112") }
+  @Test def test_ingress_xdcc_bw_113(): Unit = { runner.runOneTest("ingress_xdcc_bw_113") }
+  @Test def test_ingress_xdcc_bw_114(): Unit = { runner.runOneTest("ingress_xdcc_bw_114") }
+  @Test def test_ingress_xdcc_bw_115(): Unit = { runner.runOneTest("ingress_xdcc_bw_115") }
+  @Test def test_ingress_xdcc_bw_116(): Unit = { runner.runOneTest("ingress_xdcc_bw_116") }
 }
diff --git a/daffodil-test/src/test/scala/org/apache/daffodil/runtime2/TestIsrmGreenToOrange60000.scala b/daffodil-test/src/test/scala/org/apache/daffodil/runtime2/TestIsrmGreenToOrange60000.scala
index ba12f18..63525ec 100644
--- a/daffodil-test/src/test/scala/org/apache/daffodil/runtime2/TestIsrmGreenToOrange60000.scala
+++ b/daffodil-test/src/test/scala/org/apache/daffodil/runtime2/TestIsrmGreenToOrange60000.scala
@@ -31,8 +31,6 @@ object TestIsrmGreenToOrange60000 {
 class TestIsrmGreenToOrange60000 {
   import TestIsrmGreenToOrange60000._
 
-  @Test def test_ISRM_green_to_orange_60000_parse_0(): Unit = { runner.runOneTest("ISRM_green_to_orange_60000_parse_0") }
-  @Test def test_ISRM_green_to_orange_60000_unparse_0(): Unit = { runner.runOneTest("ISRM_green_to_orange_60000_unparse_0") }
-  @Test def test_ISRM_green_to_orange_60000_parse_1(): Unit = { runner.runOneTest("ISRM_green_to_orange_60000_parse_1") }
-  @Test def test_ISRM_green_to_orange_60000_unparse_1(): Unit = { runner.runOneTest("ISRM_green_to_orange_60000_unparse_1") }
+  @Test def test_ISRM_green_to_orange_60000_0(): Unit = { runner.runOneTest("ISRM_green_to_orange_60000_0") }
+  @Test def test_ISRM_green_to_orange_60000_1(): Unit = { runner.runOneTest("ISRM_green_to_orange_60000_1") }
 }
diff --git a/daffodil-test/src/test/scala/org/apache/daffodil/runtime2/TestIsrmOrangeToGreen60002.scala b/daffodil-test/src/test/scala/org/apache/daffodil/runtime2/TestIsrmOrangeToGreen60002.scala
index 752834d..35f26ee 100644
--- a/daffodil-test/src/test/scala/org/apache/daffodil/runtime2/TestIsrmOrangeToGreen60002.scala
+++ b/daffodil-test/src/test/scala/org/apache/daffodil/runtime2/TestIsrmOrangeToGreen60002.scala
@@ -31,6 +31,5 @@ object TestIsrmOrangeToGreen60002 {
 class TestIsrmOrangeToGreen60002 {
   import TestIsrmOrangeToGreen60002._
 
-  @Test def test_ISRM_orange_to_green_60002_parse(): Unit = { runner.runOneTest("ISRM_orange_to_green_60002_parse") }
-  @Test def test_ISRM_orange_to_green_60002_unparse(): Unit = { runner.runOneTest("ISRM_orange_to_green_60002_unparse") }
+  @Test def test_ISRM_orange_to_green_60002(): Unit = { runner.runOneTest("ISRM_orange_to_green_60002") }
 }
diff --git a/daffodil-test/src/test/scala/org/apache/daffodil/runtime2/TestMpuGreenToOrange60004.scala b/daffodil-test/src/test/scala/org/apache/daffodil/runtime2/TestMpuGreenToOrange60004.scala
index 49a716b..6dc1788 100644
--- a/daffodil-test/src/test/scala/org/apache/daffodil/runtime2/TestMpuGreenToOrange60004.scala
+++ b/daffodil-test/src/test/scala/org/apache/daffodil/runtime2/TestMpuGreenToOrange60004.scala
@@ -31,6 +31,5 @@ object TestMpuGreenToOrange60004 {
 class TestMpuGreenToOrange60004 {
   import TestMpuGreenToOrange60004._
 
-  @Test def test_MPU_green_to_orange_60004_parse(): Unit = { runner.runOneTest("MPU_green_to_orange_60004_parse") }
-  @Test def test_MPU_green_to_orange_60004_unparse(): Unit = { runner.runOneTest("MPU_green_to_orange_60004_unparse") }
+  @Test def test_MPU_green_to_orange_60004(): Unit = { runner.runOneTest("MPU_green_to_orange_60004") }
 }
diff --git a/daffodil-test/src/test/scala/org/apache/daffodil/runtime2/TestMpuOrangeToGreen60006.scala b/daffodil-test/src/test/scala/org/apache/daffodil/runtime2/TestMpuOrangeToGreen60006.scala
index 56c67b0..1e97542 100644
--- a/daffodil-test/src/test/scala/org/apache/daffodil/runtime2/TestMpuOrangeToGreen60006.scala
+++ b/daffodil-test/src/test/scala/org/apache/daffodil/runtime2/TestMpuOrangeToGreen60006.scala
@@ -31,8 +31,6 @@ object TestMpuOrangeToGreen60006 {
 class TestMpuOrangeToGreen60006 {
   import TestMpuOrangeToGreen60006._
 
-  @Test def test_MPU_orange_to_green_60006_parse_0(): Unit = { runner.runOneTest("MPU_orange_to_green_60006_parse_0") }
-  @Test def test_MPU_orange_to_green_60006_unparse_0(): Unit = { runner.runOneTest("MPU_orange_to_green_60006_unparse_0") }
-  @Test def test_MPU_orange_to_green_60006_parse_1(): Unit = { runner.runOneTest("MPU_orange_to_green_60006_parse_1") }
-  @Test def test_MPU_orange_to_green_60006_unparse_1(): Unit = { runner.runOneTest("MPU_orange_to_green_60006_unparse_1") }
+  @Test def test_MPU_orange_to_green_60006_0(): Unit = { runner.runOneTest("MPU_orange_to_green_60006_0") }
+  @Test def test_MPU_orange_to_green_60006_1(): Unit = { runner.runOneTest("MPU_orange_to_green_60006_1") }
 }
diff --git a/daffodil-test/src/test/scala/org/apache/daffodil/runtime2/TestNested.scala b/daffodil-test/src/test/scala/org/apache/daffodil/runtime2/TestNested.scala
index 08201e2..6716c67 100644
--- a/daffodil-test/src/test/scala/org/apache/daffodil/runtime2/TestNested.scala
+++ b/daffodil-test/src/test/scala/org/apache/daffodil/runtime2/TestNested.scala
@@ -31,10 +31,7 @@ object TestNested {
 class TestNested {
   import TestNested._
 
-  @Test def test_nested_struct_parse(): Unit = { runner.runOneTest("nested_struct_parse") }
-  @Test def test_nested_struct_unparse(): Unit = { runner.runOneTest("nested_struct_unparse") }
-  @Test def test_nested_union_parse_2(): Unit = { runner.runOneTest("nested_union_parse_2") }
-  @Test def test_nested_union_unparse_2(): Unit = { runner.runOneTest("nested_union_unparse_2") }
-  @Test def test_nested_union_parse_4(): Unit = { runner.runOneTest("nested_union_parse_4") }
-  @Test def test_nested_union_unparse_4(): Unit = { runner.runOneTest("nested_union_unparse_4") }
+  @Test def test_nested_struct(): Unit = { runner.runOneTest("nested_struct") }
+  @Test def test_nested_union_bar(): Unit = { runner.runOneTest("nested_union_bar") }
+  @Test def test_nested_union_foo(): Unit = { runner.runOneTest("nested_union_foo") }
 }
diff --git a/daffodil-test/src/test/scala/org/apache/daffodil/runtime2/TestMpuGreenToOrange60004.scala b/daffodil-test/src/test/scala/org/apache/daffodil/runtime2/TestOrion.scala
similarity index 63%
copy from daffodil-test/src/test/scala/org/apache/daffodil/runtime2/TestMpuGreenToOrange60004.scala
copy to daffodil-test/src/test/scala/org/apache/daffodil/runtime2/TestOrion.scala
index 49a716b..35678df 100644
--- a/daffodil-test/src/test/scala/org/apache/daffodil/runtime2/TestMpuGreenToOrange60004.scala
+++ b/daffodil-test/src/test/scala/org/apache/daffodil/runtime2/TestOrion.scala
@@ -1,7 +1,7 @@
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information ringarding copyright ownership.
+ * this work for additional information regarding copyright ownership.
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
@@ -17,20 +17,23 @@
 
 package org.apache.daffodil.runtime2
 
+import org.junit.Test
 import org.apache.daffodil.tdml.Runner
 import org.junit.AfterClass
-import org.junit.Test
 
-object TestMpuGreenToOrange60004 {
+object TestOrion {
   val testDir = "/org/apache/daffodil/runtime2/"
-  val runner = Runner(testDir, "MPU_green_to_orange_60004.tdml")
+  val runner = Runner(testDir, "orion.tdml")
 
   @AfterClass def shutDown(): Unit = { runner.reset }
 }
 
-class TestMpuGreenToOrange60004 {
-  import TestMpuGreenToOrange60004._
+class TestOrion {
+  import TestOrion._
 
-  @Test def test_MPU_green_to_orange_60004_parse(): Unit = { runner.runOneTest("MPU_green_to_orange_60004_parse") }
-  @Test def test_MPU_green_to_orange_60004_unparse(): Unit = { runner.runOneTest("MPU_green_to_orange_60004_unparse") }
+  @Test def test_orion_aptina(): Unit = { runner.runOneTest("orion_aptina") }
+  @Test def test_orion_camera(): Unit = { runner.runOneTest("orion_camera") }
+  @Test def test_orion_command(): Unit = { runner.runOneTest("orion_command") }
+  @Test def test_orion_limits(): Unit = { runner.runOneTest("orion_limits") }
+  @Test def test_orion_video(): Unit = { runner.runOneTest("orion_video") }
 }
diff --git a/daffodil-test/src/test/scala/org/apache/daffodil/runtime2/TestOrionCommand.scala b/daffodil-test/src/test/scala/org/apache/daffodil/runtime2/TestOrionCommand.scala
deleted file mode 100644
index b5d3f92..0000000
--- a/daffodil-test/src/test/scala/org/apache/daffodil/runtime2/TestOrionCommand.scala
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.daffodil.runtime2
-
-import org.junit.Test
-import org.apache.daffodil.tdml.Runner
-import org.junit.AfterClass
-
-object TestOrionCommand {
-  val testDir = "/org/apache/daffodil/runtime2/"
-  val runner = Runner(testDir, "orion-command.tdml")
-
-  @AfterClass def shutDown(): Unit = { runner.reset }
-}
-
-class TestOrionCommand {
-  import TestOrionCommand._
-
-  @Test def test_command_parse(): Unit = { runner.runOneTest("command_parse") }
-  @Test def test_command_unparse(): Unit = { runner.runOneTest("command_unparse") }
-  @Test def test_camera_state_parse(): Unit = { runner.runOneTest("camera_state_parse") }
-  @Test def test_camera_state_unparse(): Unit = { runner.runOneTest("camera_state_unparse") }
-  @Test def test_video_settings_parse(): Unit = { runner.runOneTest("video_settings_parse") }
-  @Test def test_video_settings_unparse(): Unit = { runner.runOneTest("video_settings_unparse") }
-  @Test def test_aptina_settings_parse(): Unit = { runner.runOneTest("aptina_settings_parse") }
-  @Test def test_aptina_settings_unparse(): Unit = { runner.runOneTest("aptina_settings_unparse") }
-  @Test def test_limits_parse(): Unit = { runner.runOneTest("limits_parse") }
-  @Test def test_limits_unparse(): Unit = { runner.runOneTest("limits_unparse") }
-}
diff --git a/project/Rat.scala b/project/Rat.scala
index f0f28aa..4ff775d 100644
--- a/project/Rat.scala
+++ b/project/Rat.scala
@@ -110,10 +110,11 @@ object Rat {
     file("daffodil-japi/src/test/resources/test/japi/myData16.dat"),
     file("daffodil-japi/src/test/resources/test/japi/myData19.dat"),
     file("daffodil-japi/src/test/resources/test/japi/myDataBroken.dat"),
-    file("daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/ex_nums_parse.dat"),
-    file("daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/nested_struct_parse.dat"),
-    file("daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/nested_union_parse_2.dat"),
-    file("daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/nested_union_parse_4.dat"),
+    file("daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/ex_nums.dat"),
+    file("daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/ex_nums.error.dat"),
+    file("daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/nested.struct.dat"),
+    file("daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/nested.union.bar.dat"),
+    file("daffodil-runtime2/src/test/resources/org/apache/daffodil/runtime2/nested.union.foo.dat"),
     file("daffodil-sapi/src/test/resources/test/sapi/01very_simple.txt"),
     file("daffodil-sapi/src/test/resources/test/sapi/myData.dat"),
     file("daffodil-sapi/src/test/resources/test/sapi/myData2.dat"),
@@ -127,35 +128,33 @@ object Rat {
     file("daffodil-tdml-lib/src/test/resources/test/tdml/test.txt"),
     file("daffodil-tdml-processor/src/test/resources/test/tdml/test.bin"),
     file("daffodil-tdml-processor/src/test/resources/test/tdml/test.txt"),
-    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ISRM_green_to_orange_60000_parse_0.dat"),
-    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ISRM_green_to_orange_60000_parse_1.dat"),
-    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ISRM_orange_to_green_60002_parse.dat"),
-    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/MPU_green_to_orange_60004_parse.dat"),
-    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/MPU_orange_to_green_60006_parse_0.dat"),
-    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/MPU_orange_to_green_60006_parse_1.dat"),
-    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/aptina_settings_parse.dat"),
-    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/camera_state_parse.dat"),
-    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/command_parse.dat"),
-    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw.dfdl"),
-    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw_parse_11.dat"),
-    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw_parse_12.dat"),
-    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw_parse_13.dat"),
-    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw_parse_14.dat"),
-    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw_parse_15.dat"),
-    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw_parse_16.dat"),
-    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw_parse_17.dat"),
-    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw_parse_18.dat"),
-    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw_parse_19.dat"),
-    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw_parse_20.dat"),
-    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw.dfdl"),
-    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw_parse_111.dat"),
-    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw_parse_112.dat"),
-    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw_parse_113.dat"),
-    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw_parse_114.dat"),
-    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw_parse_115.dat"),
-    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw_parse_116.dat"),
-    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/limits_parse.dat"),
-    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/video_settings_parse.dat"),
+    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ISRM_green_to_orange_60000.0.dat"),
+    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ISRM_green_to_orange_60000.1.dat"),
+    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ISRM_orange_to_green_60002.dat"),
+    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/MPU_green_to_orange_60004.dat"),
+    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/MPU_orange_to_green_60006.0.dat"),
+    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/MPU_orange_to_green_60006.1.dat"),
+    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw.11.dat"),
+    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw.12.dat"),
+    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw.13.dat"),
+    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw.14.dat"),
+    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw.15.dat"),
+    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw.16.dat"),
+    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw.17.dat"),
+    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw.18.dat"),
+    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw.19.dat"),
+    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/egress_xdcc_bw.20.dat"),
+    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw.111.dat"),
+    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw.112.dat"),
+    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw.113.dat"),
+    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw.114.dat"),
+    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw.115.dat"),
+    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/ingress_xdcc_bw.116.dat"),
+    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/orion.aptina.dat"),
+    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/orion.camera.dat"),
+    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/orion.command.dat"),
+    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/orion.limits.dat"),
+    file("daffodil-test/src/test/resources/org/apache/daffodil/runtime2/orion.video.dat"),
     file("daffodil-test/src/test/resources/org/apache/daffodil/section00/general/ext_file.txt"),
     file("daffodil-test/src/test/resources/org/apache/daffodil/section00/general/ext_file2.txt"),
     file("daffodil-test/src/test/resources/org/apache/daffodil/section05/simple_types/blobs/blob_01.bin"),