<?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.
-->

<!DOCTYPE test-suite [

<!ENTITY AggregatePartition1Queries SYSTEM "cat/AggregatePartition1Queries.xml">
<!ENTITY AggregatePartition2Queries SYSTEM "cat/AggregatePartition2Queries.xml">
<!ENTITY AggregatePartition4Queries SYSTEM "cat/AggregatePartition4Queries.xml">

<!ENTITY GhcndPartition1Queries SYSTEM "cat/GhcndPartition1Queries.xml">
<!ENTITY GhcndPartition2Queries SYSTEM "cat/GhcndPartition2Queries.xml">
<!ENTITY GhcndPartition4Queries SYSTEM "cat/GhcndPartition4Queries.xml">

<!ENTITY GhcndRecordsPartition1Queries SYSTEM "cat/GhcndRecordsPartition1Queries.xml">
<!ENTITY GhcndRecordsPartition2Queries SYSTEM "cat/GhcndRecordsPartition2Queries.xml">
<!ENTITY GhcndRecordsPartition4Queries SYSTEM "cat/GhcndRecordsPartition4Queries.xml">

<!ENTITY GhcndCountPartition1Queries SYSTEM "cat/GhcndCountPartition1Queries.xml">
<!ENTITY GhcndCountPartition2Queries SYSTEM "cat/GhcndCountPartition2Queries.xml">
<!ENTITY GhcndCountPartition4Queries SYSTEM "cat/GhcndCountPartition4Queries.xml">

]>
<test-suite xmlns="http://www.w3.org/2005/02/query-test-XQTSCatalog"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            CatalogDesignDate="2014-04-01"
            version="0.0.1"
            SourceOffsetPath="./"
            ResultOffsetPath="ExpectedTestResults/"
            XQueryQueryOffsetPath="Queries/XQuery/"
            XQueryXQueryOffsetPath="Queries/XQueryX/"
            XQueryFileExtension=".xq"
            XQueryXFileExtension=".xqx"
            xsi:schemaLocation="http://www.w3.org/2005/02/query-test-XQTSCatalog XQTSCatalog.xsd">
   <test-suite-info>
      <title>VXQuery Test Suite</title>
      <description>
         Test Suite for VXQuery.
      </description>
   </test-suite-info>
   <sources>
     <source ID="VXQueryCatalog" FileName="VXQueryCatalog.xml" Creator="VXQuery team">
       <description last-mod="2014-04-02">VXQuery Test Suite Catalog</description>
     </source>
     <source ID="ghcnd" FileName="TestSources/ghcnd" Creator="Preston Carman">
       <description last-mod="2014-04-02">Collection of files</description>
     </source>
     <source ID="ghcnd_half_1" FileName="TestSources/ghcnd/half_1" Creator="Preston Carman">
       <description last-mod="2014-04-02">Collection of files</description>
     </source>
     <source ID="ghcnd_half_2" FileName="TestSources/ghcnd/half_2" Creator="Preston Carman">
       <description last-mod="2014-04-02">Collection of files</description>
     </source>
     <source ID="ghcnd_quarter_1" FileName="TestSources/ghcnd/half_1/quarter_1" Creator="Preston Carman">
       <description last-mod="2014-04-02">Collection of files</description>
     </source>
     <source ID="ghcnd_quarter_2" FileName="TestSources/ghcnd/half_1/quarter_2" Creator="Preston Carman">
       <description last-mod="2014-04-02">Collection of files</description>
     </source>
     <source ID="ghcnd_quarter_3" FileName="TestSources/ghcnd/half_2/quarter_3" Creator="Preston Carman">
       <description last-mod="2014-04-02">Collection of files</description>
     </source>
     <source ID="ghcnd_quarter_4" FileName="TestSources/ghcnd/half_2/quarter_4" Creator="Preston Carman">
       <description last-mod="2014-04-02">Collection of files</description>
     </source>
   </sources>
   <test-group name="AggregatePartitionQueries" featureOwner="Preston Carman">
      <GroupInfo>
         <title>Aggregate Partition Queries</title>
         <description/>
      </GroupInfo>
      <test-group name="AggregateParallelExecutionTests" featureOwner="Preston Carman">
         <GroupInfo>
            <title>Aggregate Parallel Execution Tests</title>
            <description/>
         </GroupInfo>
         &AggregatePartition1Queries;
         &AggregatePartition2Queries;
         &AggregatePartition4Queries;
      </test-group>
   </test-group>
   <test-group name="GhcndPartitionQueries" featureOwner="Preston Carman">
      <GroupInfo>
         <title>GHCND Partition Queries</title>
         <description/>
      </GroupInfo>
      <test-group name="ParallelExecutionTests" featureOwner="Preston Carman">
         <GroupInfo>
            <title>Parallel Execution Tests</title>
            <description/>
         </GroupInfo>
         &GhcndPartition1Queries;
         &GhcndPartition2Queries;
         &GhcndPartition4Queries;
      </test-group>
   </test-group>
   <test-group name="GhcndCountPartitionQueries" featureOwner="Preston Carman">
      <GroupInfo>
         <title>GHCND Count Partition Queries</title>
         <description/>
      </GroupInfo>
      <test-group name="CountParallelExecutionTests" featureOwner="Preston Carman">
         <GroupInfo>
            <title>Parallel Execution Tests</title>
            <description/>
         </GroupInfo>
         &GhcndCountPartition1Queries;
         &GhcndCountPartition2Queries;
         &GhcndCountPartition4Queries;
      </test-group>
   </test-group>
   <test-group name="GhcndRecordsPartitionQueries" featureOwner="Preston Carman">
      <GroupInfo>
         <title>GHCND Records Partition Queries</title>
         <description/>
      </GroupInfo>
      <test-group name="RecordsParallelExecutionTests" featureOwner="Preston Carman">
         <GroupInfo>
            <title>Records Parallel Execution Tests</title>
            <description/>
         </GroupInfo>
         &GhcndRecordsPartition1Queries;
         &GhcndRecordsPartition2Queries;
         &GhcndRecordsPartition4Queries;
      </test-group>
   </test-group>
</test-suite>
