<?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="textlineAndSelectionFilterTest">
		<TestData name="bitmapSnapshot">true</TestData>
	</TestCase>
	<TestCase functionName="textlinesFilterTest">
		<TestData name="bitmapSnapshot">true</TestData>
	</TestCase>
	<TestCase functionName="selectionFilterTest">
		<TestData name="bitmapSnapshot">true</TestData>
	</TestCase>
	<TestCase functionName="recycleLineByFlowComposer">
		<TestData name="10,0">false</TestData>
	</TestCase>
	<TestCase functionName="recycleLineByFlowFactory">
		<TestData name="10,0">false</TestData>
	</TestCase>
	<TestCase functionName="recycleLineByStringFactory">
		<TestData name="10,0">false</TestData>
	</TestCase>
	<TestCase functionName="recycleLineByCustomLineCreatorTextFlow">
		<TestData name="10,0">false</TestData>
	</TestCase>
	<TestCase functionName="recycleLineByTCM">
		<TestData name="10,0">false</TestData>
	</TestCase>
	<TestCase functionName="recycleLineByCustomLineCreatorFlowFactory">
		<TestData name="10,0">false</TestData>
	</TestCase>
	<TestCase functionName="recycleLineByCustomLineCreatorStringFactory">
		<TestData name="10,0">false</TestData>
	</TestCase>
	<TestCase functionName="recycleLineByCustomLineCreatorTCM">
		<TestData name="10,0">false</TestData>
	</TestCase>
	<TestCase functionName="recycleLineInSuite">
		<TestData name="10,0">false</TestData>
	</TestCase>
	<TestCase functionName="stringFactoryBackgroundColor">
		<TestData name="bitmapSnapshot">true</TestData>
	</TestCase>
	<TestCase functionName="embeddedInlineGraphics">
		<TestData name="bitmapSnapshot">true</TestData>
	</TestCase>
</Tests>
