<?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
  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">

  <!--
      Run all tests:

      daffodil test -i -I daffodil nested.tdml
      daffodil test -i -I daffodilC nested.tdml
  -->

  <tdml:parserTestCase model="nested.dfdl.xsd" name="nested_struct">
    <tdml:document>
      <tdml:documentPart type="file">nested.struct.dat</tdml:documentPart>
    </tdml:document>
    <tdml:infoset>
      <tdml:dfdlInfoset type="file">nested.struct.dat.xml</tdml:dfdlInfoset>
    </tdml:infoset>
  </tdml:parserTestCase>

  <tdml:parserTestCase model="nested.dfdl.xsd" name="nested_union_bar">
    <tdml:document>
      <tdml:documentPart type="file">nested.union.bar.dat</tdml:documentPart>
    </tdml:document>
    <tdml:infoset>
      <tdml:dfdlInfoset type="file">nested.union.bar.dat.xml</tdml:dfdlInfoset>
    </tdml:infoset>
  </tdml:parserTestCase>

  <tdml:parserTestCase model="nested.dfdl.xsd" name="nested_union_foo">
    <tdml:document>
      <tdml:documentPart type="file">nested.union.foo.dat</tdml:documentPart>
    </tdml:document>
    <tdml:infoset>
      <tdml:dfdlInfoset type="file">nested.union.foo.dat.xml</tdml:dfdlInfoset>
    </tdml:infoset>
  </tdml:parserTestCase>

</tdml:testSuite>
