<?xml version='1.0'?>
<TestDescriptor xmlns="http://castor.exolab.org/Test" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://castor.exolab.org/Test http://castor.exolab.org/Test">
    <Name>Test the handling of IDs</Name>
    <Author>Werner Guttmann</Author>
    <Comment>
        Test unmarshalling of xsd:ID content elements, and check for
        various error conditions.
    </Comment>
    <Category>basic capability</Category>

    <SourceGeneratorTest>
        <Schema>test.xsd</Schema>
        <BindingFile>binding.xml</BindingFile>
        <Root_Object random="false" dump="true">PartialTerminationElement</Root_Object>

        <UnitTestCase>
            <Name>Test valid XML document instance with IDs</Name>
            <Configuration>
                <Unmarshal>
                    <Call-method name="setValidation">
                        <Value type="boolean">true</Value>
                    </Call-method>
                </Unmarshal>
            </Configuration>
            <Input>input-ok.xml</Input>
        </UnitTestCase>

        <UnitTestCase>
            <Name>Test invalid (empty ID) XML document instance with IDs</Name>
            <Configuration>
                <Unmarshal>
                    <Call-method name="setValidation">
                        <Value type="boolean">true</Value>
                    </Call-method>
                </Unmarshal>
            </Configuration>
            <Input>input-with-empty-id.xml</Input>
            <Failure FailureStep="unmarshal-reference">true</Failure>
        </UnitTestCase>

        <UnitTestCase>
            <Name>Test invalid XML document instance with duplicate IDs</Name>
            <Configuration>
                <Unmarshal>
                    <Call-method name="setValidation">
                        <Value type="boolean">true</Value>
                    </Call-method>
                </Unmarshal>
            </Configuration>
            <Input>input-with-duplicate-ids.xml</Input>
            <Failure FailureStep="unmarshal-reference">true</Failure>
        </UnitTestCase>

        <UnitTestCase>
            <Name>Test marshalling XML document instance after manually nulling ID</Name>
            <CustomTest>
                <TestClass>TestMarshalIDs</TestClass>
                <Methods>
                    <Call-method name="testMarshallingAfterManuallyNullingID"/>
                    <Call-method name="testMarshallingAfterManuallySettingDuplicateID"/>
                </Methods>
            </CustomTest>
        </UnitTestCase>

    </SourceGeneratorTest>
</TestDescriptor>
