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

<!ENTITY SingleQuery SYSTEM "cat/SingleQuery.xml">
<!ENTITY SingleAlternateQuery SYSTEM "cat/SingleAlternateQuery.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="SingleQuery" featureOwner="Preston Carman">
      <GroupInfo>
         <title>Single Query</title>
         <description/>
      </GroupInfo>
      <test-group name="SingleTest" featureOwner="Preston Carman">
         <GroupInfo>
            <title>Single Test</title>
            <description/>
         </GroupInfo>
         &SingleAlternateQuery;
      </test-group>
   </test-group>
</test-suite>
