<?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="selectionEventTest"/>
<TestCase functionName="damageEventTest"/>
<TestCase functionName="statusChangeEventTest"/>
<TestCase functionName="FlowOperationEventTest">
    <TestData name="tb_rtl">false</TestData>
    <TestData name="rl_ltr">false</TestData>
</TestCase>
<TestCase functionName="FlowCompositeOperationEventTest">
    <TestData name="tb_rtl">false</TestData>
    <TestData name="rl_ltr">false</TestData>
</TestCase>
<TestCase functionName="CompositionCompleteEventTest"/>
<TestCase functionName="UpdateCompleteEventTest"/>
<TestCase functionName="ShortTextMouseEventTBLTRTest">
		<TestData name="fileName">ShortTextMouseEventTBLTR.xml</TestData>
</TestCase>
<TestCase functionName="ShortTextMouseEventTBRTLTest">
		<TestData name="fileName">ShortTextMouseEventTBRTL.xml</TestData>
</TestCase>
<TestCase functionName="ShortTextMouseEventRLLTRTest">
		<TestData name="fileName">ShortTextMouseEventRLLTR.xml</TestData>
</TestCase>
<TestCase functionName="ShortTextMouseEventRLRTLTest">
		<TestData name="fileName">ShortTextMouseEventRLRTL.xml</TestData>
</TestCase>
<TestCase functionName="FlowElementMouseEventTest">
	<TestData name="id">FlowElementMouseEventTestScrollingOff</TestData>
</TestCase>
<TestCase functionName="scrollEventTest"/>
<TestCase functionName="FlowElementMouseEventTest">
    <TestData name="id">FlowElementMouseEventTestScrollingOn</TestData>
</TestCase>
<TestCase functionName="FlowElementMouseEventTest">
    <TestData name="id">FlowElementMouseEventTestScrolled</TestData>
</TestCase>
<TestCase functionName="FlowElementMouseEventTest">
    <TestData name="id">FlowElementMouseEventTestMeasure</TestData>
</TestCase>
</Tests>
