blob: b4e64dace3dae8eeb00215f1a3a2f9ee65abb059 [file] [log] [blame]
/*
* 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.tdml
import org.apache.daffodil.xml.XMLUtils
import org.junit.Assert.assertTrue
import org.junit.Test
import org.apache.daffodil.Implicits._
/**
* Tests for bug DAFFODIL-1868
*/
class TestTDMLRunnerConfig {
val tdml = XMLUtils.TDML_NAMESPACE
val dfdl = XMLUtils.DFDL_NAMESPACE
val xsi = XMLUtils.XSI_NAMESPACE
val xsd = XMLUtils.XSD_NAMESPACE
val example = XMLUtils.EXAMPLE_NAMESPACE
val daf = XMLUtils.EXT_NS_APACHE.toString
val tns = example
@Test def testNonsenseDefaultConfig() = {
val testSuite =
<tdml:testSuite suiteName="theSuiteName" xmlns:tns={ tns } xmlns:tdml={ tdml } xmlns:dfdl={ dfdl } xmlns:xsd={ xsd } xmlns:xs={ xsd } xmlns:xsi={ xsi } defaultConfig="nonsense">
<tdml:defineSchema name="mySchema">
<xs:include schemaLocation="org/apache/daffodil/xsd/DFDLGeneralFormat.dfdl.xsd"/>
<xs:element name="dummy" type="xs:string"/>
</tdml:defineSchema>
<tdml:parserTestCase xmlns={ tdml } name="test1" root="dummy" model="mySchema">
<tdml:document/>
<tdml:errors>
<tdml:error>defaultConfig</tdml:error>
<tdml:error>nonsense</tdml:error>
<tdml:error>not found</tdml:error>
</tdml:errors>
</tdml:parserTestCase>
</tdml:testSuite>
val runner = new Runner(testSuite)
val e = intercept[Exception] {
runner.runOneTest("test1")
}
runner.reset
val msg = e.getMessage()
assertTrue(msg.contains("defaultConfig"))
assertTrue(msg.contains("nonsense"))
assertTrue(msg.contains("not found"))
}
@Test def testNonsenseConfig() = {
val testSuite =
<tdml:testSuite suiteName="theSuiteName" xmlns:tns={ tns } xmlns:tdml={ tdml } xmlns:dfdl={ dfdl } xmlns:xsd={ xsd } xmlns:xs={ xsd } xmlns:xsi={ xsi }>
<tdml:defineSchema name="mySchema">
<xs:include schemaLocation="org/apache/daffodil/xsd/DFDLGeneralFormat.dfdl.xsd"/>
<dfdl:format ref="tns:GeneralFormat"/>
<xs:element name="dummy" type="xs:string" dfdl:lengthKind="delimited"/>
</tdml:defineSchema>
<tdml:parserTestCase xmlns={ tdml } name="test1" root="dummy" model="mySchema" config="nonsense">
<tdml:document/>
<tdml:errors>
<tdml:error>config</tdml:error>
<tdml:error>nonsense</tdml:error>
<tdml:error>not found</tdml:error>
</tdml:errors>
</tdml:parserTestCase>
</tdml:testSuite>
val runner = new Runner(testSuite)
val e = intercept[Exception] {
runner.runOneTest("test1")
}
runner.reset
val msg = e.getMessage()
assertTrue(msg.contains("config"))
assertTrue(msg.contains("nonsense"))
assertTrue(msg.contains("not found"))
}
@Test def testGoodConfigNonsenseDefaultConfig() = {
val testSuite =
<tdml:testSuite suiteName="theSuiteName" xmlns:daf={ daf } xmlns:tns={ tns } xmlns:tdml={ tdml } xmlns:dfdl={ dfdl } xmlns:xsd={ xsd } xmlns:xs={ xsd } xmlns:xsi={ xsi } defaultConfig="nonsense">
<tdml:defineSchema name="mySchema">
<xs:include schemaLocation="org/apache/daffodil/xsd/DFDLGeneralFormat.dfdl.xsd"/>
<dfdl:format ref="tns:GeneralFormat"/>
<xs:element name="dummy" type="xs:string" dfdl:lengthKind="delimited"/>
</tdml:defineSchema>
<tdml:defineConfig name="myConfig">
<daf:tunables xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<daf:requireBitOrderProperty>true</daf:requireBitOrderProperty>
</daf:tunables>
</tdml:defineConfig>
<tdml:parserTestCase xmlns={ tdml } name="test1" root="dummy" model="mySchema" config="myConfig">
<tdml:document/>
<tdml:errors>
<tdml:error>defaultConfig</tdml:error>
<tdml:error>nonsense</tdml:error>
<tdml:error>not found</tdml:error>
</tdml:errors>
</tdml:parserTestCase>
</tdml:testSuite>
val runner = new Runner(testSuite)
val e = intercept[Exception] {
runner.runOneTest("test1")
}
val msg = e.getMessage()
assertTrue(msg.contains("defaultConfig"))
assertTrue(msg.contains("nonsense"))
assertTrue(msg.contains("not found"))
}
@Test def testGoodConfigNoBitOrderProp() = {
val testSuite =
<tdml:testSuite suiteName="theSuiteName" xmlns:daf={ daf } xmlns:tns={ tns } xmlns:tdml={ tdml } xmlns:dfdl={ dfdl } xmlns:xsd={ xsd } xmlns:xs={ xsd } xmlns:xsi={ xsi }>
<tdml:defineSchema name="mySchema">
<xs:include schemaLocation="org/apache/daffodil/xsd/DFDLGeneralFormat.dfdl.xsd"/>
<dfdl:format representation="binary" binaryNumberRep="binary" lengthKind="implicit" lengthUnits="bytes" alignmentUnits="bytes" alignment="implicit" leadingSkip="0" trailingSkip="0" byteOrder="bigEndian" textOutputMinLength="0" initiator="" terminator="" textPadKind="none" encoding="ascii"/>
<xs:element name="dummy" type="xs:int"/>
</tdml:defineSchema>
<tdml:defineConfig name="myConfig">
<daf:tunables xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<daf:requireBitOrderProperty>true</daf:requireBitOrderProperty>
</daf:tunables>
</tdml:defineConfig>
<tdml:parserTestCase xmlns={ tdml } name="test1" root="dummy" model="mySchema" config="myConfig">
<tdml:document/>
<tdml:errors>
<tdml:error>Schema Definition Error</tdml:error>
<tdml:error>Property bitOrder is not defined</tdml:error>
</tdml:errors>
</tdml:parserTestCase>
</tdml:testSuite>
val runner = new Runner(testSuite)
runner.runOneTest("test1")
runner.reset
}
@Test def testGoodDefaultConfigNoBitOrderProp() = {
val testSuite =
<tdml:testSuite suiteName="theSuiteName" xmlns:daf={ daf } xmlns:tns={ tns } xmlns:tdml={ tdml } xmlns:dfdl={ dfdl } xmlns:xsd={ xsd } xmlns:xs={ xsd } xmlns:xsi={ xsi } defaultConfig="myConfig">
<tdml:defineSchema name="mySchema">
<xs:include schemaLocation="org/apache/daffodil/xsd/DFDLGeneralFormat.dfdl.xsd"/>
<dfdl:format representation="binary" binaryNumberRep="binary" lengthKind="implicit" lengthUnits="bytes" alignmentUnits="bytes" alignment="implicit" leadingSkip="0" trailingSkip="0" byteOrder="bigEndian" textOutputMinLength="0" initiator="" terminator="" textPadKind="none" encoding="ascii"/>
<xs:element name="dummy" type="xs:int"/>
</tdml:defineSchema>
<tdml:defineConfig name="myConfig">
<daf:tunables xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<daf:requireBitOrderProperty>true</daf:requireBitOrderProperty>
</daf:tunables>
</tdml:defineConfig>
<tdml:parserTestCase xmlns={ tdml } name="test1" root="dummy" model="mySchema">
<tdml:document/>
<tdml:errors>
<tdml:error>Schema Definition Error</tdml:error>
<tdml:error>Property bitOrder is not defined</tdml:error>
</tdml:errors>
</tdml:parserTestCase>
</tdml:testSuite>
val runner = new Runner(testSuite)
runner.runOneTest("test1")
runner.reset
}
@Test def testAmbiguousFileAndDefaultConfig() = {
val testSuite =
<tdml:testSuite suiteName="theSuiteName" xmlns:daf={ daf } xmlns:tns={ tns } xmlns:tdml={ tdml } xmlns:dfdl={ dfdl } xmlns:xsd={ xsd } xmlns:xs={ xsd } xmlns:xsi={ xsi } defaultConfig="testConfigFile.xml">
<tdml:defineSchema name="mySchema">
<xs:include schemaLocation="org/apache/daffodil/xsd/DFDLGeneralFormat.dfdl.xsd"/>
<dfdl:format representation="binary" binaryNumberRep="binary" lengthKind="implicit" lengthUnits="bytes" alignmentUnits="bytes" alignment="implicit" leadingSkip="0" trailingSkip="0" byteOrder="bigEndian" textOutputMinLength="0" initiator="" terminator="" textPadKind="none" encoding="ascii"/>
<xs:element name="dummy" type="xs:int"/>
</tdml:defineSchema>
<tdml:defineConfig name="testConfigFile.xml">
<!-- name ambiguous with file for test purposes -->
<daf:tunables xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<daf:requireBitOrderProperty>true</daf:requireBitOrderProperty>
</daf:tunables>
</tdml:defineConfig>
<tdml:parserTestCase xmlns={ tdml } name="test1" root="dummy" model="mySchema">
<tdml:document/>
<tdml:errors>
<tdml:error>Schema Definition Error</tdml:error>
<tdml:error>Property bitOrder is not defined</tdml:error>
</tdml:errors>
</tdml:parserTestCase>
</tdml:testSuite>
val runner = new Runner(testSuite)
val e = intercept[Exception] {
runner.runOneTest("test1")
}
runner.reset
val msg = e.getMessage()
assertTrue(msg.contains("ambiguous"))
assertTrue(msg.contains("testConfigFile.xml"))
}
}