<?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.
-->
<Tests>
	<TestCase functionName="importTest">
		<TestData name="fileName">asknot.xml</TestData>
		<TestData name="bitmapSnapshot">true</TestData>
		<TestData name="tb_rtl">false</TestData>
		<TestData name="rl_ltr">false</TestData>
	</TestCase>
	<TestCase functionName="importTest">
		<TestData name="fileName">school.xml</TestData>
		<TestData name="bitmapSnapshot">true</TestData>
		<TestData name="tb_rtl">false</TestData>
		<TestData name="rl_ltr">false</TestData>
	</TestCase>
	<TestCase functionName="importTest">
		<TestData name="fileName">simple_with_links.xml</TestData>
		<TestData name="bitmapSnapshot">true</TestData>
		<TestData name="tb_rtl">false</TestData>
		<TestData name="rl_ltr">false</TestData>
	</TestCase>
	<!--bug #1899675-->
	<TestCase functionName="importTest">
		<TestData name="fileName">simple_with_floats.xml</TestData>
		<TestData name="bitmapSnapshot">true</TestData>
		<TestData name="tb_rtl">false</TestData>
		<TestData name="rl_ltr">false</TestData>
	</TestCase>
	<TestCase functionName="importTest">
		<TestData name="fileName">digits.xml</TestData>
		<TestData name="bitmapSnapshot">true</TestData>
		<TestData name="tb_rtl">false</TestData>
		<TestData name="rl_ltr">false</TestData>
	</TestCase>
	<!-- <TestCase functionName="tableExample.xml">
		<TestData name="testFile">tableExample.xml</TestData>
		<TestData name="bitmapSnapshot">true</TestData>
		<TestData name="tb_rtl">false</TestData>
		<TestData name="rl_ltr">false</TestData>
		<TestData name="requiresLayout">true</TestData>
	</TestCase>	-->
	<!-- <TestCase functionName="asknot.txt"> Test code can't handle non-XML import -- needs to be updated
		<TestData name="bitmapSnapshot">true</TestData>
		<TestData name="tb_rtl">false</TestData>
		<TestData name="rl_ltr">false</TestData>
	</TestCase>	 -->
	<TestCase functionName="importTest">
		<TestData name="fileName">whitespace1.xml</TestData>
		<TestData name="bitmapSnapshot">true</TestData>
		<TestData name="tb_rtl">false</TestData>
		<TestData name="rl_ltr">false</TestData>
	</TestCase>
	<TestCase functionName="importTest">
		<TestData name="fileName">whitespace2.xml</TestData>
		<TestData name="bitmapSnapshot">true</TestData>
		<TestData name="tb_rtl">false</TestData>
		<TestData name="rl_ltr">false</TestData>
	</TestCase>
	<!-- bug #1899677-->
	<TestCase functionName="importTest">
		<TestData name="fileName">font-embedding.xml</TestData>
		<TestData name="tb_rtl">false</TestData>
		<TestData name="rl_ltr">false</TestData>
	</TestCase>
	<!--  Test vertical justification in factory -->
	<TestCase functionName="importTest">
		<TestData name="fileName">VA-Justify.xml</TestData>
		<TestData name="tb_rtl">false</TestData>
		<TestData name="rl_ltr">false</TestData>
	</TestCase>
	<!--bug #2617914 -->
	<TestCase functionName="importTest">
		<TestData name="fileName">simple_with_images.xml</TestData>
		<TestData name="bitmapSnapshot">true</TestData>
		<TestData name="tb_rtl">false</TestData>
		<TestData name="rl_ltr">false</TestData>
	</TestCase>
</Tests>
