From 80451aac0f71692b37f146c82d26ea72ad6f1bc2 Mon Sep 17 00:00:00 2001 From: Christoph Spalek Date: Wed, 6 May 2020 17:49:44 +0200 Subject: [PATCH] Add prepare chunk section and steps to execute tests Signed-off-by: Christoph Spalek --- v2.0/Developer_manuals/BaseX_ETS.adoc | 11 + v2.0/Developer_manuals/BaseX_ETS_GUI.adoc | 7 + .../Developing_Executable_Test_Suites.adoc | 1 + .../Developing_Executable_Test_Suites.html | 506 ++++++++++-------- 4 files changed, 298 insertions(+), 227 deletions(-) diff --git a/v2.0/Developer_manuals/BaseX_ETS.adoc b/v2.0/Developer_manuals/BaseX_ETS.adoc index 9e5616a..1ce1812 100644 --- a/v2.0/Developer_manuals/BaseX_ETS.adoc +++ b/v2.0/Developer_manuals/BaseX_ETS.adoc @@ -565,6 +565,17 @@ Once the listener is implemented, the whole generation of the `etf:TestTaskResult` document will be done by the ETF test driver. ====================================== +[[the-prepare-chunk-document]] +=== The prepare-chunk document +A prepare-chunk.xq document is optional but can be used to preprocess testdata. + +Example usage: Prepare a spatial index and extract all objects with erroneous geometry before executing the tests. +[NOTE] +====================================== +* For every given chunk, prepare-chunk.xq will be executed. +* The name of the chunk is passed to the document through the variable `$dbName`. +====================================== + [[spatial-tests]] === Testing spatial aspects diff --git a/v2.0/Developer_manuals/BaseX_ETS_GUI.adoc b/v2.0/Developer_manuals/BaseX_ETS_GUI.adoc index 7bab1c8..ec054d1 100644 --- a/v2.0/Developer_manuals/BaseX_ETS_GUI.adoc +++ b/v2.0/Developer_manuals/BaseX_ETS_GUI.adoc @@ -60,6 +60,13 @@ declare variable $etsFile external := $projDir || file:dir-separator() || "ets-t Executing the XQuery should now execute the test suite. +There are additional steps, in case the testproject uses a prepare-chunk document (see link:#the-prepare-chunk-document[below] for more information): + +* Set the external variable `$dbName` to the name of your database in BaseX. +* Open and run the prepare-chunk document. + +Executing the XQuery document should now execute the test suite. + ==== Best practices During the development of a test suite, it may be handy to compile a diff --git a/v2.0/Developer_manuals/Developing_Executable_Test_Suites.adoc b/v2.0/Developer_manuals/Developing_Executable_Test_Suites.adoc index baf997b..9c5fd87 100644 --- a/v2.0/Developer_manuals/Developing_Executable_Test_Suites.adoc +++ b/v2.0/Developer_manuals/Developing_Executable_Test_Suites.adoc @@ -42,6 +42,7 @@ include::../General/Document-metadata.adoc[] | 2017-11-25 | Jon Herrmann | Spatial indexing section updated | 2017-12-06 | Jon Herrmann | Message template bundles section updated | 2018-07-10 | Jon Herrmann | Links updated +| 2020-05-06 | Christoph Spalek | Add prepare-chunk section |=== diff --git a/v2.0/Developer_manuals/Developing_Executable_Test_Suites.html b/v2.0/Developer_manuals/Developing_Executable_Test_Suites.html index 48627b6..edf97ec 100644 --- a/v2.0/Developer_manuals/Developing_Executable_Test_Suites.html +++ b/v2.0/Developer_manuals/Developing_Executable_Test_Suites.html @@ -2,13 +2,12 @@ - + - + Developing Executable Test Suites - - + @@ -39,15 +38,16 @@
  • 3.4. Typical setup
  • 3.5. XML document of an Executable Test Suite
  • 3.6. The XQuery document
  • -
  • 3.7. Testing spatial aspects
  • -
  • 3.8. Parameters
  • -
  • 3.9. Test Object Types
  • -
  • 3.10. Test Item Types
  • -
  • 3.11. Dependencies
  • -
  • 3.12. Tags
  • -
  • 3.13. Statistical information
  • -
  • 3.14. Attachments
  • -
  • 3.15. Schematron
  • +
  • 3.7. The prepare-chunk document
  • +
  • 3.8. Testing spatial aspects
  • +
  • 3.9. Parameters
  • +
  • 3.10. Test Object Types
  • +
  • 3.11. Test Item Types
  • +
  • 3.12. Dependencies
  • +
  • 3.13. Tags
  • +
  • 3.14. Statistical information
  • +
  • 3.15. Attachments
  • +
  • 3.16. Schematron
  • 4. SoapUI based Test Suites @@ -82,7 +82,7 @@
    - +
    @@ -100,7 +100,7 @@

    Developing Executable Test Suites

    -
    +
    @@ -141,7 +141,7 @@

    Developing Executable

    Changelog

    -

    +
    @@ -195,6 +195,11 @@

    Changelog

    + + + + +

    Jon Herrmann

    Links updated

    2020-05-06

    Christoph Spalek

    Add prepare-chunk section

    @@ -266,7 +271,7 @@

    1. Introduction

    -

    The BaseX extension module GmlGeoX extends XQuery to enable testing spatial aspects of GML features (geometry validation, spatial indexing, spatial predicates).

    +

    The BaseX extension module GmlGeoX extends XQuery to enable testing spatial aspects of GML features (geometry validation, spatial indexing, spatial predicates).

    Due to the different characteristics of the test engines, the development of an Executable Test Suite is very different for each test engine.

    @@ -393,15 +398,15 @@

    2.2. Message template bundles

    -
    <TranslationTemplateBundle xmlns="http://www.interactive-instruments.de/etf/2.0"
    -    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    -    xsi:schemaLocation="http://www.interactive-instruments.de/etf/2.0 https://resources.etf-validator.net/schema/v2/val/ignoreRef.xsd"
    -   id="EID27117afb-11aa-4e45-aa3d-0e1e65bdccb8">
    +
    <TranslationTemplateBundle xmlns="http://www.interactive-instruments.de/etf/2.0"
    +    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    +    xsi:schemaLocation="http://www.interactive-instruments.de/etf/2.0 https://resources.etf-validator.net/schema/v2/val/ignoreRef.xsd"
    +   id="EID27117afb-11aa-4e45-aa3d-0e1e65bdccb8">
         <translationTemplateCollections>
    -      <LangTranslationTemplateCollection name="TR.invalidSchema">
    +      <LangTranslationTemplateCollection name="TR.invalidSchema">
              <translationTemplates>
    -            <TranslationTemplate language="en" name="TR.invalidSchema">XML document '{filename}': The file has {count} schema validation error(s).</TranslationTemplate>
    -            <TranslationTemplate language="de" name="TR.invalidSchema">XML Dokument '{filename}': Die Datei hat {count} Schema Validierungsfehler.</TranslationTemplate>
    +            <TranslationTemplate language="en" name="TR.invalidSchema">XML document '{filename}': The file has {count} schema validation error(s).</TranslationTemplate>
    +            <TranslationTemplate language="de" name="TR.invalidSchema">XML Dokument '{filename}': Die Datei hat {count} Schema Validierungsfehler.</TranslationTemplate>
              </translationTemplates>
           </LangTranslationTemplateCollection>
         </translationTemplateCollections>
    @@ -427,16 +432,16 @@ 

    2.2. Message template bundles

    -
    <TranslationTemplateBundle xmlns="http://www.interactive-instruments.de/etf/2.0"
    -    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    -    xsi:schemaLocation="http://www.interactive-instruments.de/etf/2.0 https://resources.etf-validator.net/schema/v2/val/ignoreRef.xsd"
    -   id="EID7766b3e6-b7ac-452e-b3c3-c793a591e86c">
    -    <parent ref="EID27117afb-11aa-4e45-aa3d-0e1e65bdccb8"/>
    +
    <TranslationTemplateBundle xmlns="http://www.interactive-instruments.de/etf/2.0"
    +    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    +    xsi:schemaLocation="http://www.interactive-instruments.de/etf/2.0 https://resources.etf-validator.net/schema/v2/val/ignoreRef.xsd"
    +   id="EID7766b3e6-b7ac-452e-b3c3-c793a591e86c">
    +    <parent ref="EID27117afb-11aa-4e45-aa3d-0e1e65bdccb8"/>
         <translationTemplateCollections>
    -      <LangTranslationTemplateCollection name="TR.incorrectRoot">
    +      <LangTranslationTemplateCollection name="TR.incorrectRoot">
              <translationTemplates>
    -            <TranslationTemplate language="en" name="TR.incorrectRoot">XML document '{filename}': The root element is not one of the recognised feature collections: wfs:FeatureCollection (WFS 1.1 or WFS 2.0) or gml:FeatureCollection (GML 3.1 or GML 3.2). The name of the root element is '{elementName}' in namespace '{namespace}'.</TranslationTemplate>
    -            <TranslationTemplate language="de" name="TR.incorrectRoot">XML-Dokument '{filename}': Das Wurzelelement ist keines der erwarteten Feature-Collection-Elemente: wfs:FeatureCollection (WFS 1.1 oder WFS 2.0) oder gml:FeatureCollection (GML 3.1 oder GML 3.2). Der Name des Wurzelelements is '{elementName}' im Namensraum '{namespace}'.</TranslationTemplate>
    +            <TranslationTemplate language="en" name="TR.incorrectRoot">XML document '{filename}': The root element is not one of the recognised feature collections: wfs:FeatureCollection (WFS 1.1 or WFS 2.0) or gml:FeatureCollection (GML 3.1 or GML 3.2). The name of the root element is '{elementName}' in namespace '{namespace}'.</TranslationTemplate>
    +            <TranslationTemplate language="de" name="TR.incorrectRoot">XML-Dokument '{filename}': Das Wurzelelement ist keines der erwarteten Feature-Collection-Elemente: wfs:FeatureCollection (WFS 1.1 oder WFS 2.0) oder gml:FeatureCollection (GML 3.1 oder GML 3.2). Der Name des Wurzelelements is '{elementName}' im Namensraum '{namespace}'.</TranslationTemplate>
              </translationTemplates>
           </LangTranslationTemplateCollection>
         </translationTemplateCollections>
    @@ -478,9 +483,9 @@ 

    2.3. Tags

    -
    <Tag xmlns="http://www.interactive-instruments.de/etf/2.0" id="EIDfe1f3796-0ebf-4960-a6f7-f935e087fa4b" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.interactive-instruments.de/etf/2.0 https://resources.etf-validator.net/schema/v2/val/ignoreRef.xsd">
    +
    <Tag xmlns="http://www.interactive-instruments.de/etf/2.0" id="EIDfe1f3796-0ebf-4960-a6f7-f935e087fa4b" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.interactive-instruments.de/etf/2.0 https://resources.etf-validator.net/schema/v2/val/ignoreRef.xsd">
     	<label>Data Theme: Administrative Units (Data Specification version 3.1)</label>
    -	<description>Tests for conformance classes specific to features of the data theme 'Administrative Units'.</description>
    +	<description>Tests for conformance classes specific to features of the data theme 'Administrative Units'.</description>
     	<priority>202</priority>
     </Tag>
    @@ -660,6 +665,22 @@

    3.2.2. Executing tests

    Executing the XQuery should now execute the test suite.

    +
    +

    There are additional steps, in case the testproject uses a prepare-chunk document (see below for more information):

    +
    +
    +
      +
    • +

      Set the external variable $dbName to the name of your database in BaseX.

      +
    • +
    • +

      Open and run the prepare-chunk document.

      +
    • +
    +
    +
    +

    Executing the XQuery document should now execute the test suite.

    +

    3.2.3. Best practices

    @@ -705,9 +726,9 @@

    3.3. Basics

    -
    <EtfModelItem xmlns="http://www.interactive-instruments.de/etf/2.0"
    - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    -    xsi:schemaLocation="http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/service/service.xsd" ...>
    +
    <EtfModelItem xmlns="http://www.interactive-instruments.de/etf/2.0"
    + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    +    xsi:schemaLocation="http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/service/service.xsd" ...>
       ...
     </EtfModelItem>
    @@ -720,77 +741,77 @@

    3.3. Basics

    -
    <TestTaskResult xmlns="http://www.interactive-instruments.de/etf/2.0"
    -    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    -    xsi:schemaLocation="http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/service/service.xsd"
    -    id="EIDc5e50620-5107-4b75-b6c1-74d4465fba0f">
    -    <testObject ref="EID666f71c1-9af3-4040-a21d-190f953725f4"/>
    +
    <TestTaskResult xmlns="http://www.interactive-instruments.de/etf/2.0"
    +    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    +    xsi:schemaLocation="http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/service/service.xsd"
    +    id="EIDc5e50620-5107-4b75-b6c1-74d4465fba0f">
    +    <testObject ref="EID666f71c1-9af3-4040-a21d-190f953725f4"/>
         <testModuleResults>
    -        <TestModuleResult id="EIDfdfc25d5-1790-43bd-abb6-2de6263619cc">
    +        <TestModuleResult id="EIDfdfc25d5-1790-43bd-abb6-2de6263619cc">
                 <testCaseResults>
    -                <TestCaseResult id="EID3dab6279-f553-4f93-b1bc-b73329fc69c3">
    +                <TestCaseResult id="EID3dab6279-f553-4f93-b1bc-b73329fc69c3">
                         <testStepResults>
    -                        <TestStepResult id="EIDffaf6f6a-66f6-4796-8c42-e5f681517c62">
    +                        <TestStepResult id="EIDffaf6f6a-66f6-4796-8c42-e5f681517c62">
                                 <testAssertionResults>
    -                                <TestAssertionResult id="EIDa35d1dd3-7cc2-41c7-9b2b-f60df48ffabb">
    -                                    <parent ref="EIDffaf6f6a-66f6-4796-8c42-e5f681517c62"/>
    -                                    <resultedFrom ref="EIDcab35f1a-6292-44b9-ae2c-9ec62fc0f4b6"/>
    +                                <TestAssertionResult id="EIDa35d1dd3-7cc2-41c7-9b2b-f60df48ffabb">
    +                                    <parent ref="EIDffaf6f6a-66f6-4796-8c42-e5f681517c62"/>
    +                                    <resultedFrom ref="EIDcab35f1a-6292-44b9-ae2c-9ec62fc0f4b6"/>
                                         <startTimestamp>2016-09-05T13:10:24Z</startTimestamp>
                                         <duration>0</duration>
                                         <status>PASSED</status>
                                     </TestAssertionResult>
    -                                <TestAssertionResult id="EIDc18b01ff-f544-4d0e-9a8f-ef3874abd43f">
    +                                <TestAssertionResult id="EIDc18b01ff-f544-4d0e-9a8f-ef3874abd43f">
                                         <messages>
    -                                        <message ref="TR.filesWithErrors">
    +                                        <message ref="TR.filesWithErrors">
                                                 <translationArguments>
    -                                                <argument token="count">1</argument>
    +                                                <argument token="count">1</argument>
                                                 </translationArguments>
                                             </message>
    -                                        <message ref="TR.incorrectRoot">
    +                                        <message ref="TR.incorrectRoot">
                                                 <translationArguments>
    -                                                <argument token="filename">ps-root.xml</argument>
    -                                                <argument token="elementName">FeatureCollection</argument>
    -                                                <argument token="namespace">http://www.opengis.net/wfs</argument>
    +                                                <argument token="filename">ps-root.xml</argument>
    +                                                <argument token="elementName">FeatureCollection</argument>
    +                                                <argument token="namespace">http://www.opengis.net/wfs</argument>
                                                 </translationArguments>
                                             </message>
                                         </messages>
    -                                    <parent ref="EIDffaf6f6a-66f6-4796-8c42-e5f681517c62"/>
    -                                    <resultedFrom ref="EID928d8204-3015-4811-82fd-f4779b35385b"/>
    +                                    <parent ref="EIDffaf6f6a-66f6-4796-8c42-e5f681517c62"/>
    +                                    <resultedFrom ref="EID928d8204-3015-4811-82fd-f4779b35385b"/>
                                         <startTimestamp>2016-09-05T13:10:24Z</startTimestamp>
                                         <duration>1</duration>
                                         <status>FAILED</status>
                                     </TestAssertionResult>
                                 </testAssertionResults>
    -                            <parent ref="EID3dab6279-f553-4f93-b1bc-b73329fc69c3"/>
    -                            <resultedFrom ref="EIDc177cf64-3a66-4ac4-92b9-61207aab8007"/>
    +                            <parent ref="EID3dab6279-f553-4f93-b1bc-b73329fc69c3"/>
    +                            <resultedFrom ref="EIDc177cf64-3a66-4ac4-92b9-61207aab8007"/>
                                 <startTimestamp>2016-09-05T13:10:24Z</startTimestamp>
                                 <duration>1</duration>
                                 <status>FAILED</status>
                             </TestStepResult>
                         </testStepResults>
    -                    <parent ref="EIDfdfc25d5-1790-43bd-abb6-2de6263619cc"/>
    -                    <resultedFrom ref="EIDf66872d4-3a1f-4581-a501-94200219bf13"/>
    +                    <parent ref="EIDfdfc25d5-1790-43bd-abb6-2de6263619cc"/>
    +                    <resultedFrom ref="EIDf66872d4-3a1f-4581-a501-94200219bf13"/>
                         <startTimestamp>2016-09-05T13:10:24Z</startTimestamp>
                         <duration>1</duration>
                         <status>FAILED</status>
                     </TestCaseResult>
                 </testCaseResults>
    -            <parent ref="EIDc5e50620-5107-4b75-b6c1-74d4465fba0f"/>
    -            <resultedFrom ref="EID8e96257c-ae42-4123-b298-b8c5eda3a027"/>
    +            <parent ref="EIDc5e50620-5107-4b75-b6c1-74d4465fba0f"/>
    +            <resultedFrom ref="EID8e96257c-ae42-4123-b298-b8c5eda3a027"/>
                 <startTimestamp>2016-09-05T13:10:24Z</startTimestamp>
                 <duration>1</duration>
                 <status>FAILED</status>
             </TestModuleResult>
         </testModuleResults>
         <attachments>
    -        <Attachment id="EIDc5e50620-5111-4bc5-b6c1-74d4465fbb23">
    +        <Attachment id="EIDc5e50620-5111-4bc5-b6c1-74d4465fbb23">
                 <label>Log file</label>
                 <encoding>UTF-8</encoding>
                 <mimeType>text/plain</mimeType>
    -            <referencedData href="file://local/log.txt"/>
    +            <referencedData href="file://local/log.txt"/>
             </Attachment>
         </attachments>
    -    <resultedFrom ref="EID545f9e49-009b-4114-9333-7ca26413b5d4"/>
    +    <resultedFrom ref="EID545f9e49-009b-4114-9333-7ca26413b5d4"/>
         <startTimestamp>2016-09-05T13:10:24Z</startTimestamp>
         <duration>1</duration>
         <status>FAILED</status>
    @@ -845,16 +866,16 @@ 

    3.3. Basics

    level result items):

    -
    declare function local:status($statusValues as xs:string*) as xs:string
    +
    declare function local:status($statusValues as xs:string*) as xs:string
     {
    -    if ($statusValues ='FAILED') then 'FAILED'
    -    else if ($statusValues ='SKIPPED') then 'SKIPPED'
    -    else if ($statusValues ='WARNING') then 'WARNING'
    -    else if ($statusValues ='INFO') then 'INFO'
    -    else if ($statusValues ='PASSED_MANUAL') then 'PASSED_MANUAL'
    -    else if ($statusValues ='PASSED') then 'PASSED'
    -    else if ($statusValues ='NOT_APPLICABLE') then 'NOT_APPLICABLE'
    -    else 'UNDEFINED'
    +    if ($statusValues ='FAILED') then 'FAILED'
    +    else if ($statusValues ='SKIPPED') then 'SKIPPED'
    +    else if ($statusValues ='WARNING') then 'WARNING'
    +    else if ($statusValues ='INFO') then 'INFO'
    +    else if ($statusValues ='PASSED_MANUAL') then 'PASSED_MANUAL'
    +    else if ($statusValues ='PASSED') then 'PASSED'
    +    else if ($statusValues ='NOT_APPLICABLE') then 'NOT_APPLICABLE'
    +    else 'UNDEFINED'
     };
    @@ -950,60 +971,60 @@

    3.5. XML document of an Execut
    -
    <?xml version="1.0" encoding="utf-8"?>
    -<ExecutableTestSuite xmlns="http://www.interactive-instruments.de/etf/2.0"     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    -    xsi:schemaLocation="http://www.interactive-instruments.de/etf/2.0 https://resources.etf-validator.net/schema/v2/val/ignoreRef.xsd" id="EID545f9e49-009b-4114-9333-7ca26413b5d4">
    +
    <?xml version="1.0" encoding="utf-8"?>
    +<ExecutableTestSuite xmlns="http://www.interactive-instruments.de/etf/2.0"     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    +    xsi:schemaLocation="http://www.interactive-instruments.de/etf/2.0 https://resources.etf-validator.net/schema/v2/val/ignoreRef.xsd" id="EID545f9e49-009b-4114-9333-7ca26413b5d4">
         <itemHash>bQ==</itemHash>
         <remoteResource>http://github.com/inspire-eu-validation/ets-repository/data-encoding/inspire-gml</remoteResource>
         <localPath>/auto</localPath>
         <label>Conformance class: INSPIRE GML encoding</label>
         <description><![CDATA[This test suite examines GML documents against basic requirements for the GML encoding for spatial data sets in INSPIRE. This only covers application-schema-independent, generic requirements. Requirements related to specific application schemas are part of conformance classes with a dependency on this conformance class.<br/><br/>
    -<b>This is a draft version. It has limitations and is expected to contain errors.</b> Please report any issues or problems <a href="https://github.com/interactive-instruments/ets-repository/issues" target="_blank">in GitHub</a>.<br/><br/>
    +<b>This is a draft version. It has limitations and is expected to contain errors.</b> Please report any issues or problems <a href="https://github.com/interactive-instruments/ets-repository/issues" target="_blank">in GitHub</a>.<br/><br/>
     Known limitations are documented in the description of the applicable test case or test assertion.<br/><br/>
    -Source: <a href="http://inspire.ec.europa.eu/id/ats/data-encoding/3.3/inspire-gml" target="_blank">Conformance Class 'INSPIRE GML encoding'</a><br/><br/>
    +Source: <a href="http://inspire.ec.europa.eu/id/ats/data-encoding/3.3/inspire-gml" target="_blank">Conformance Class 'INSPIRE GML encoding'</a><br/><br/>
     Pre-requisite conformance classes:
    -<ul><li>Conformance Class 'GML 3.2 documents [OGC]'</li></ul>]]></description>
    +<ul><li>Conformance Class 'GML 3.2 documents [OGC]'</li></ul>]]></description>
         <reference>../../inspire-bsxets.xq</reference>
         <version>0.1.0</version>
         <author>interactive instruments GmbH</author>
         <creationDate>2016-08-15T00:00:00Z</creationDate>
         <lastEditor>interactive instruments GmbH</lastEditor>
         <lastUpdateDate>2016-08-15T00:00:00Z</lastUpdateDate>
    -    <testDriver ref="EID4dddc9e2-1b21-40b7-af70-6a2d156ad130"/>
    -    <translationTemplateBundle ref="EID70a263c0-0ad7-42f2-9d4d-0d8a4ca71b52"/>
    +    <testDriver ref="EID4dddc9e2-1b21-40b7-af70-6a2d156ad130"/>
    +    <translationTemplateBundle ref="EID70a263c0-0ad7-42f2-9d4d-0d8a4ca71b52"/>
         <supportedTestObjectTypes>
    -        <testObjectType ref="EIDe1d4a306-7a78-4a3b-ae2d-cf5f0810853e"/>
    +        <testObjectType ref="EIDe1d4a306-7a78-4a3b-ae2d-cf5f0810853e"/>
         </supportedTestObjectTypes>
         <testModules>
    -        <TestModule id="EID8e96257c-ae42-4123-b298-b8c5eda3a027">
    +        <TestModule id="EID8e96257c-ae42-4123-b298-b8c5eda3a027">
                 <label>IGNORE</label>
                 <description>IGNORE</description>
    -            <parent ref="EID545f9e49-009b-4114-9333-7ca26413b5d4"/>
    +            <parent ref="EID545f9e49-009b-4114-9333-7ca26413b5d4"/>
                 <testCases>
    -                <TestCase id="EIDf66872d4-3a1f-4581-a501-94200219bf13">
    +                <TestCase id="EIDf66872d4-3a1f-4581-a501-94200219bf13">
                         <label>Basic tests</label>
                         <description>Verify that all documents contain GML features and use the expected character encoding.</description>
    -                    <parent ref="EID8e96257c-ae42-4123-b298-b8c5eda3a027"/>
    +                    <parent ref="EID8e96257c-ae42-4123-b298-b8c5eda3a027"/>
                         <testSteps>
    -                        <TestStep id="EIDc177cf64-3a66-4ac4-92b9-61207aab8007">
    +                        <TestStep id="EIDc177cf64-3a66-4ac4-92b9-61207aab8007">
                                 <label>IGNORE</label>
                                 <description>IGNORE</description>
    -                            <parent ref="EIDf66872d4-3a1f-4581-a501-94200219bf13"/>
    +                            <parent ref="EIDf66872d4-3a1f-4581-a501-94200219bf13"/>
                                 <statementForExecution>not applicable</statementForExecution>
    -                            <testItemType ref="EIDf483e8e8-06b9-4900-ab36-adad0d7f22f0"/>
    +                            <testItemType ref="EIDf483e8e8-06b9-4900-ab36-adad0d7f22f0"/>
                                 <testAssertions>
    -                                <TestAssertion id="EIDcab35f1a-6292-44b9-ae2c-9ec62fc0f4b6">
    +                                <TestAssertion id="EIDcab35f1a-6292-44b9-ae2c-9ec62fc0f4b6">
                                         <label>gml.a.1: Errors loading the XML documents</label>
                                         <description><![CDATA[Report errors that occurred during loading the documents in the test object. A typical example is an XML document that is not well-formed and therefore cannot be processed.]]></description>
    -                                    <parent ref="EIDc177cf64-3a66-4ac4-92b9-61207aab8007"/>
    +                                    <parent ref="EIDc177cf64-3a66-4ac4-92b9-61207aab8007"/>
                                         <expectedResult>NOT_APPLICABLE</expectedResult>
    -                                    <expression>if (not($validationErrors)) then 'PASSED' else ('FAILED', for $error in $validationErrors return (local:addMessage('TR.valdiationError', map { 'text': $error })))</expression>
    -                                    <testItemType ref="EIDf0edc596-49d2-48d6-a1a1-1ac581dcde0a"/>
    +                                    <expression>if (not($validationErrors)) then 'PASSED' else ('FAILED', for $error in $validationErrors return (local:addMessage('TR.valdiationError', map { 'text': $error })))</expression>
    +                                    <testItemType ref="EIDf0edc596-49d2-48d6-a1a1-1ac581dcde0a"/>
                                         <translationTemplates>
    -                                        <translationTemplate ref="TR.valdiationError"/>
    +                                        <translationTemplate ref="TR.valdiationError"/>
                                         </translationTemplates>
                                     </TestAssertion>
    -                                <TestAssertion id="EID928d8204-3015-4811-82fd-f4779b35385b">
    +                                <TestAssertion id="EID928d8204-3015-4811-82fd-f4779b35385b">
                                         <label>gml.a.2: Document root element</label>
                                         <description><![CDATA[Check for each XML document that the root element is a GML feature or a GML feature collection.<br/><br/>
     For feature collections the following root elements are recognised:
    @@ -1019,24 +1040,24 @@ 

    3.5. XML document of an Execut <ul> <li>Currently only feature collections are recognized as the test engine BaseX is not schema-aware. A new extension function is required to identify all feature elements.</li> </ul> -Source: <a href="" target="_blank">Abstract Test Case 'Basic test'</a>]]></description> - <parent ref="EIDc177cf64-3a66-4ac4-92b9-61207aab8007"/> +Source: <a href="" target="_blank">Abstract Test Case 'Basic test'</a>]]></description> + <parent ref="EIDc177cf64-3a66-4ac4-92b9-61207aab8007"/> <expectedResult>NOT_APPLICABLE</expectedResult> <expression> let $filesWithErrors := $db[not(wfs:FeatureCollection or gml:FeatureCollection or base32:SpatialDataSet or base:SpatialDataSet or gml:AbstractFeature)][position() le $limitErrors] return -(if ($filesWithErrors) then 'FAILED' else 'PASSED', - local:error-statistics('TR.filesWithErrors', count($filesWithErrors)), +(if ($filesWithErrors) then 'FAILED' else 'PASSED', + local:error-statistics('TR.filesWithErrors', count($filesWithErrors)), for $file in $filesWithErrors order by local:filename($file) let $root := $file/element() return - local:addMessage('TR.incorrectRoot', map { 'filename': local:filename($root), 'elementName': local-name($root), 'namespace': namespace-uri($root) })) + local:addMessage('TR.incorrectRoot', map { 'filename': local:filename($root), 'elementName': local-name($root), 'namespace': namespace-uri($root) })) </expression> - <testItemType ref="EIDf0edc596-49d2-48d6-a1a1-1ac581dcde0a"/> + <testItemType ref="EIDf0edc596-49d2-48d6-a1a1-1ac581dcde0a"/> <translationTemplates> - <translationTemplate ref="TR.incorrectRoot"/> - <translationTemplate ref="TR.filesWithErrors"/> + <translationTemplate ref="TR.incorrectRoot"/> + <translationTemplate ref="TR.filesWithErrors"/> </translationTemplates> </TestAssertion> </testAssertions> @@ -1460,9 +1481,39 @@

    3.6. The XQuery document

    -

    3.7. Testing spatial aspects

    +

    3.7. The prepare-chunk document

    +
    +

    A prepare-chunk.xq document is optional but can be used to preprocess testdata.

    +
    +
    +

    Example usage: Prepare a spatial index and extract all objects with erroneous geometry before executing the tests.

    +
    +
    + + + + + +
    + + +
    +
      +
    • +

      For every given chunk, prepare-chunk.xq will be executed.

      +
    • +
    • +

      The name of the chunk is passed to the document through the variable $dbName.

      +
    • +
    +
    +
    +
    +
    +
    +

    3.8. Testing spatial aspects

    -

    3.7.1. Overview

    +

    3.8.1. Overview

    The GmlGeoX extension module extends XQuery with additional capabilities:

    @@ -1487,7 +1538,7 @@

    3.7.1. Overview

    -

    3.7.2. Spatial indexing

    +

    3.8.2. Spatial indexing

    Feature geometries can be indexed using an r*-tree. To index a feature execute ggeo:index( Node featureNode, String id, Node xmlGeometry ).

    @@ -1517,7 +1568,7 @@

    3.7.2. Spatial indexing

    -
    let $dummy := for $feature in $features
    +
    let $dummy := for $feature in $features
     	return ggeo:index(db:node-pre($feature),db:name($feature),$feature/@gml:id,$feature/ns:geometry/*[1])
    @@ -1531,7 +1582,7 @@

    3.7.2. Spatial indexing

    -
    let $env := ggeo:envelope($candidate_geometry)
    +
    let $env := ggeo:envelope($candidate_geometry)
     let $overlapping_features := ggeo:search($env[1],$env[2],$env[3],$env[4])
    @@ -1542,7 +1593,7 @@

    3.7.2. Spatial indexing

    -
    let $geometries :=
    +
    let $geometries :=
     	for $feature in ggeo:search($env[1],$env[2],$env[3],$env[4])
     		return ggeo:getGeometry($feature/@gml:id,$feature/ns:geometry/*[1])
    @@ -1551,7 +1602,7 @@

    3.7.2. Spatial indexing

    -

    3.7.3. Geometry caching

    +

    3.8.3. Geometry caching

    The parsed geometries are cached during indexing to avoid multiple computations of the geometries from the XML. The cache size can be set before the indexing is started using ggeo:cacheSize( int size ), the default size is 100000 geometries. The cache is transparent to the user of the GmlGeoX module.

    @@ -1560,7 +1611,7 @@

    3.7.3. Geometry caching

    -

    3.7.4. Geometry Validation

    +

    3.8.4. Geometry Validation

    Validation of GML geometry elements within a given XML node is basically a SAX-based scan for recognized GML geometry elements, and subsequent validation of these elements. The default set of recognized element names is a subset of GML. Functions offered by the module can be used to modify this set within an XQuery. See the test project developer documentation for this module for further details.

    @@ -1572,22 +1623,22 @@

    3.7.4. Geometry Validation

    -
    let $messages := for $feature in $features
    +
    let $messages := for $feature in $features
       return
     	try {
    -		let $vr := ggeo:validateAndReport($feature,'110')
    +		let $vr := ggeo:validateAndReport($feature,'110')
     		return
     	   if (xs:boolean($vr/ggeo:isValid)) then ()
     	   else
    -	   	for $message in $vr/ggeo:message[@type='ERROR']
    +	   	for $message in $vr/ggeo:message[@type='ERROR']
     			return
    -				local:addMessage('TR.invalidGeometry', map { 'filename': local:filename($feature), 'featureType': local-name($feature), 'gmlid': string($feature/@gml:id), 'text': $message/text() })
    +				local:addMessage('TR.invalidGeometry', map { 'filename': local:filename($feature), 'featureType': local-name($feature), 'gmlid': string($feature/@gml:id), 'text': $message/text() })
     	} catch * {
     		return () (: do not raise an error for parsing exceptions, if these are tested already elsewhere :)
     	}
     return
    -(if ($messages) then 'FAILED' else 'PASSED',
    - local:error-statistics('TR.featuresWithErrors', count(fn:distinct-values($messages//etf:argument[@token='gmlid']/text()))),
    +(if ($messages) then 'FAILED' else 'PASSED',
    + local:error-statistics('TR.featuresWithErrors', count(fn:distinct-values($messages//etf:argument[@token='gmlid']/text()))),
      $messages)
    @@ -1595,7 +1646,7 @@

    3.7.4. Geometry Validation

    -

    3.7.5. Evaluation of topological predicates

    +

    3.8.5. Evaluation of topological predicates

    Topological predicates between two geometries are evaluated using the JTS library. The standard predicates specified in the OGC Simple Feature standard are supported. See the test project developer documentation for this module for further details.

    @@ -1607,7 +1658,7 @@

    3.7.5. Evaluation of topological

    -
    let $messages :=
    +
    let $messages :=
     (for $candidate in $features
      return
      try {
    @@ -1619,13 +1670,13 @@ 

    3.7.5. Evaluation of topological return try { let $other_geometry := ggeo:getGeometry($feature/@gml:id,$feature/*:geometry/*[1]) - let $check := ggeo:relate($candidate_geometry, $other_geometry, 'F********') + let $check := ggeo:relate($candidate_geometry, $other_geometry, 'F********') return if ($check) then () else let $intersection := string(ggeo:intersection($candidate_geometry, $other_geometry)) - let $polygons := functx:get-matches($intersection,'POLYGON\s?\(\s?\([\d,\.\s]+\)\s?\)')[fn:string-length(.)>0] - return local:addMessage('TR.Overlap', map { 'filename': local:filename($candidate), 'featureType' : local-name($candidate), 'gmlid': string($candidate/@gml:id), 'gmlid2': string($feature/@gml:id), 'sharedArea': fn:string-join($polygons, ', ') }) + let $polygons := functx:get-matches($intersection,'POLYGON\s?\(\s?\([\d,\.\s]+\)\s?\)')[fn:string-length(.)>0] + return local:addMessage('TR.Overlap', map { 'filename': local:filename($candidate), 'featureType' : local-name($candidate), 'gmlid': string($candidate/@gml:id), 'gmlid2': string($feature/@gml:id), 'sharedArea': fn:string-join($polygons, ', ') }) } catch * { return () (: do not raise an error for parsing exceptions, if these are tested already elsewhere :) } @@ -1634,8 +1685,8 @@

    3.7.5. Evaluation of topological } )[position() le $limitErrors] return -(if ($messages) then 'FAILED' else 'PASSED', - local:error-statistics('TR.featuresWithErrors', count(fn:distinct-values($messages//etf:argument[@token='gmlid']/text()))), +(if ($messages) then 'FAILED' else 'PASSED', + local:error-statistics('TR.featuresWithErrors', count(fn:distinct-values($messages//etf:argument[@token='gmlid']/text()))), $messages)

    @@ -1643,7 +1694,7 @@

    3.7.5. Evaluation of topological

    -

    3.7.6. Known limitations

    +

    3.8.6. Known limitations

    The implementation of the GmlGeoX module depends to a large extent on the deegree framework. The default geometry implementation of deegree does not support parsing all GML types, primarily the GML 3.3 types. Also, in a number of cases spatial operations are not supported for parsed geometries. This is primarily due to the fact that deegree relies on JTS to perform these operations, and that therefore the geometries must be simplified/linearized - which is not implemented for all geometry types that can be parsed by deegree. There is even a case where an incomplete JTS representations of a deegree geometry is accepted and used for spatial operations (for a surface with multiple polygon patches only the first is used).

    @@ -1656,7 +1707,7 @@

    3.7.6. Known limitations

    -

    3.8. Parameters

    +

    3.9. Parameters

    Parameters for each Exectuable Test Suite may be declared as part of the etf:ExecutableTestSuite document. The ETF web application will include @@ -1686,16 +1737,16 @@

    3.8. Parameters

    -
        <ParameterList name="ETF Standard Parameters for XML test objects">
    -        <parameter name="files_to_test" required="true">
    +
        <ParameterList name="ETF Standard Parameters for XML test objects">
    +        <parameter name="files_to_test" required="true">
                 <defaultValue>.*</defaultValue>
    -            <description ref="TR.filesToTest"/>
    +            <description ref="TR.filesToTest"/>
                 <allowedValues>.*</allowedValues>
                 <type>string</type>
             </parameter>
    -        <parameter name="tests_to_execute" required="false">
    +        <parameter name="tests_to_execute" required="false">
                 <defaultValue>.*</defaultValue>
    -            <description ref="TR.testsToExecute"/>
    +            <description ref="TR.testsToExecute"/>
                 <allowedValues>.*</allowedValues>
                 <type>string</type>
             </parameter>
    @@ -1704,9 +1755,9 @@ 

    3.8. Parameters

    -

    3.9. Test Object Types

    +

    3.10. Test Object Types

    -

    3.9.1. Overview

    +

    3.10.1. Overview

    This section lists all Test Object Types that are pre-defined in the BaseX test driver.

    @@ -1745,7 +1796,7 @@

    3.9.1. Overview

    -

    3.9.2. Set of documents

    +

    3.10.2. Set of documents

    A set of documents.

    @@ -1767,7 +1818,7 @@

    3.9.2. Set of documents

    -

    3.9.3. Set of XML documents

    +

    3.10.3. Set of XML documents

    A set of XML documents.

    @@ -1789,7 +1840,7 @@

    3.9.3. Set of XML documents

    -

    3.9.4. Metadata records

    +

    3.10.4. Metadata records

    A set of XML documents. Each document contains one or more gmd:MD_Metadata elements.

    @@ -1811,7 +1862,7 @@

    3.9.4. Metadata records

    -

    3.9.5. GML feature collections

    +

    3.10.5. GML feature collections

    A set of XML documents. Each document contains a GML feature collection.

    @@ -1833,7 +1884,7 @@

    3.9.5. GML feature collections

    -

    3.9.6. WFS 2.0 feature collections

    +

    3.10.6. WFS 2.0 feature collections

    A set of XML documents. Each document contains a WFS 2.0 feature collection.

    @@ -1855,7 +1906,7 @@

    3.9.6. WFS 2.0 feature collections

    -

    3.9.7. GML 3.2 feature collections

    +

    3.10.7. GML 3.2 feature collections

    A set of XML documents. Each document contains a GML 3.2 feature collection.

    @@ -1877,7 +1928,7 @@

    3.9.7. GML 3.2 feature collections

    -

    3.9.8. GML 2.1/GML 3.1 feature collections

    +

    3.10.8. GML 2.1/GML 3.1 feature collections

    A set of XML documents. Each document contains a GML 2.1 or GML 3.1 feature collection.

    @@ -1899,7 +1950,7 @@

    3.9.8. GML 2.1/GML 3.1 feature col

    -

    3.9.9. INSPIRE SpatialDataSet documents

    +

    3.10.9. INSPIRE SpatialDataSet documents

    A set of XML documents. Each document contains an INSPIRE SpatialDataSet.

    @@ -1921,7 +1972,7 @@

    3.9.9. INSPIRE SpatialDataSet documen

    -

    3.9.10. CityGML 2.0 CityModel documents

    +

    3.10.10. CityGML 2.0 CityModel documents

    A set of XML documents. Each document contains a CityGML 2.0 CityModel.

    @@ -1943,7 +1994,7 @@

    3.9.10. CityGML 2.0 CityModel document

    -

    3.9.11. CityGML 1.0 CityModel documents

    +

    3.10.11. CityGML 1.0 CityModel documents

    A set of XML documents. Each document contains a CityGML 1.0 CityModel.

    @@ -1966,9 +2017,9 @@

    3.9.11. CityGML 1.0 CityModel document

    -

    3.10. Test Item Types

    +

    3.11. Test Item Types

    -

    3.10.1. Overview

    +

    3.11.1. Overview

    This section lists all Test Item Types that are pre-defined in the BaseX test driver.

    @@ -1990,7 +2041,7 @@

    3.10.1. Overview

    -

    3.10.2. Dummy Test Step

    +

    3.11.2. Dummy Test Step

    In BaseX-based Executable Test Suites the concept of test steps is not used. A dummy test step, which is suppressed in test reports, is therefore created and associated with this test item type.

    @@ -2008,7 +2059,7 @@

    3.10.2. Dummy Test Step

    -

    3.10.3. XQuery

    +

    3.11.3. XQuery

    The element etf:expression in a test assertion contains an XQuery fragment that is executed to determine the result.

    @@ -2026,7 +2077,7 @@

    3.10.3. XQuery

    -

    3.10.4. Manual review

    +

    3.11.4. Manual review

    The element etf:expression in a test assertion is ignored and the assertion result status is always 'PASSED_MANUAL' indicating that a manual review from an expert is required. The review must be specified in the description of the test assertion.

    @@ -2044,7 +2095,7 @@

    3.10.4. Manual review

    -

    3.10.5. Disabled

    +

    3.11.5. Disabled

    The element etf:expression in a test assertion is ignored and the assertion result status is always 'NOT_APPLICABLE'. The test assertion is disabled. This type should be used only temporarily to disable a test assertion with known issues.

    @@ -2063,7 +2114,7 @@

    3.10.5. Disabled

    -

    3.11. Dependencies

    +

    3.12. Dependencies

    Executable Test Suites may depend on other Executable Test Suites. This dependency has two effects. Assume we have three test suites where test @@ -2112,10 +2163,10 @@

    3.11. Dependencies

    -
    <ExecutableTestSuite ...>
    +
    <ExecutableTestSuite ...>
       ...
       <dependencies>
    -    <executableTestSuite ref="EID545f9e49-009b-4114-9333-7ca26413b5d4"/>
    +    <executableTestSuite ref="EID545f9e49-009b-4114-9333-7ca26413b5d4"/>
       </dependencies>
       ...
     </ExecutableTestSuite>
    @@ -2128,12 +2179,12 @@

    3.11. Dependencies

    -
    <ExecutableTestSuite ...>
    +
    <ExecutableTestSuite ...>
       ...
       <TestCase ...>
         ...
         <dependencies>
    -      <testCase ref="EID2ee0045f-cf8d-4979-9d7d-76cb465a0314"/>
    +      <testCase ref="EID2ee0045f-cf8d-4979-9d7d-76cb465a0314"/>
         </dependencies>
         ...
       <TestCase ...>
    @@ -2153,7 +2204,7 @@ 

    3.11. Dependencies

    -

    3.12. Tags

    +

    3.13. Tags

    To associate an Executable Test Suite with a tag, the tag is referenced from the XML document of the test suite.

    @@ -2165,10 +2216,10 @@

    3.12. Tags

    -
    <ExecutableTestSuite ...>
    +
    <ExecutableTestSuite ...>
       ...
       <tags>
    -      <tag ref="EID7f57420f-b228-41ae-9467-86e7ffef6e7e"/>
    +      <tag ref="EID7f57420f-b228-41ae-9467-86e7ffef6e7e"/>
       </tags>
       ...
     </ExecutableTestSuite>
    @@ -2190,7 +2241,7 @@

    3.12. Tags

    -

    3.13. Statistical information

    +

    3.14. Statistical information

    If a test result includes an attachment with the type "StatisticalReport", a statistical table is included in the test report. The root element must be an etf:StatisticalReportTable and all etf:entry elements are shown - the value before the semicolon in a column "Type" (feature type or metadata record type) and the value after the semicolon in a column "Count" (number of features or metadata records of that type).

    @@ -2199,8 +2250,8 @@

    3.13. Statistical information

    -
    <StatisticalReportTable xmlns="http://www.interactive-instruments.de/etf/2.0">
    -<type ref="EID242272e0-3f0a-4e9c-9643-657c4d6d304a"/>
    +
    <StatisticalReportTable xmlns="http://www.interactive-instruments.de/etf/2.0">
    +<type ref="EID242272e0-3f0a-4e9c-9643-657c4d6d304a"/>
     <entries>
     <entry>all; 10</entry>
     <entry>dataset; 5</entry>
    @@ -2213,7 +2264,7 @@ 

    3.13. Statistical information

    -

    3.14. Attachments

    +

    3.15. Attachments

    An Executable Test Suite may record additional information to a test result as attachments. In the case of tests on XML documents, these are @@ -2246,24 +2297,24 @@

    3.14. Attachments

    -
    <attachments>
    -  <Attachment id="EID4c16160f-9004-467d-bf49-72b7da258eff" type="LogFile">
    +
    <attachments>
    +  <Attachment id="EID4c16160f-9004-467d-bf49-72b7da258eff" type="LogFile">
         <label>Log file</label>
         <encoding>UTF-8</encoding>
         <mimeType>text/plain</mimeType>
    -    <referencedData href="http://demo-inspire-next.etf-validator.net/etf-webapp/v2/TestTaskResults/EIDfa95b457-0d69-458f-98f3-6eae9b7f388d/Attachments/EID4c16160f-9004-467d-bf49-72b7da258eff"/>
    +    <referencedData href="http://demo-inspire-next.etf-validator.net/etf-webapp/v2/TestTaskResults/EIDfa95b457-0d69-458f-98f3-6eae9b7f388d/Attachments/EID4c16160f-9004-467d-bf49-72b7da258eff"/>
       </Attachment>
    -  <Attachment id="EIDd9f69337-4ae0-4df2-a058-46b71e15135c" type="StatisticalReport">
    +  <Attachment id="EIDd9f69337-4ae0-4df2-a058-46b71e15135c" type="StatisticalReport">
         <label>Metadata record statistics</label>
         <encoding>UTF-8</encoding>
         <mimeType>application/xml</mimeType>
    -    <referencedData href="http://demo-inspire-next.etf-validator.net/etf-webapp/v2/TestTaskResults/EIDfa95b457-0d69-458f-98f3-6eae9b7f388d/Attachments/EIDd9f69337-4ae0-4df2-a058-46b71e15135c"/>
    +    <referencedData href="http://demo-inspire-next.etf-validator.net/etf-webapp/v2/TestTaskResults/EIDfa95b457-0d69-458f-98f3-6eae9b7f388d/Attachments/EIDd9f69337-4ae0-4df2-a058-46b71e15135c"/>
       </Attachment>
    -  <Attachment id="EID0fed0d42-39a3-4692-8e38-e78e2f87507a" type="Query">
    +  <Attachment id="EID0fed0d42-39a3-4692-8e38-e78e2f87507a" type="Query">
         <label>XQuery executed against the dataset</label>
         <encoding>UTF-8</encoding>
         <mimeType>text/plain</mimeType>
    -    <referencedData href="http://demo-inspire-next.etf-validator.net/etf-webapp/v2/TestTaskResults/EIDfa95b457-0d69-458f-98f3-6eae9b7f388d/Attachments/EID0fed0d42-39a3-4692-8e38-e78e2f87507a"/>
    +    <referencedData href="http://demo-inspire-next.etf-validator.net/etf-webapp/v2/TestTaskResults/EIDfa95b457-0d69-458f-98f3-6eae9b7f388d/Attachments/EID0fed0d42-39a3-4692-8e38-e78e2f87507a"/>
       </Attachment>
     </attachments>
    @@ -2272,7 +2323,7 @@

    3.14. Attachments

    -

    3.15. Schematron

    +

    3.16. Schematron

    The etf-ets-repository @@ -2545,7 +2596,7 @@

    4.4. Parameters and metadata proper

    Properties are used to parameterize an Executable Test Suite ('test project' in SoapUI terminology) as well as to associate it with other resources of ETF like Tags, Test Object Types etc. The standard properties are described in the following table. All properties are properties of the test project.

    - +
    @@ -3295,11 +3346,11 @@

    4.7. Attachments

    -
    <Attachment type="Message" id="EID6afae437-88f2-4a9d-970a-8255d3872588">
    +
    <Attachment type="Message" id="EID6afae437-88f2-4a9d-970a-8255d3872588">
               <label>Message.2</label>
               <encoding>UTF-8</encoding>
               <mimeType>text/plain</mimeType>
    -          <referencedData href="http://demo-inspire-next.etf-validator.net/etf-webapp/v2/TestTaskResults/EIDb8f61761-4b25-47b5-8851-038615231f54/Attachments/EID6afae437-88f2-4a9d-970a-8255d3872588"/>
    +          <referencedData href="http://demo-inspire-next.etf-validator.net/etf-webapp/v2/TestTaskResults/EIDb8f61761-4b25-47b5-8851-038615231f54/Attachments/EID6afae437-88f2-4a9d-970a-8255d3872588"/>
     </Attachment>
    @@ -3314,7 +3365,7 @@

    4.7. Attachments

    -
    <Attachment type="GetParameter" id="EID9294c44b-5650-48b3-a25c-27dfe6b35c0c">
    +
    <Attachment type="GetParameter" id="EID9294c44b-5650-48b3-a25c-27dfe6b35c0c">
               <label>Request Parameter</label>
               <encoding>UTF-8</encoding>
               <mimeType>text/plain</mimeType>
    @@ -3332,11 +3383,11 @@ 

    4.7. Attachments

    -
    <Attachment type="PostData" id="EID64f3f170-3833-4308-9c8c-d881641ccc75">
    +
    <Attachment type="PostData" id="EID64f3f170-3833-4308-9c8c-d881641ccc75">
       <label>Request Parameter</label>
       <encoding>UTF-8</encoding>
       <mimeType>text/xml</mimeType>
    -  <referencedData href="http://demo-inspire-next.etf-validator.net/etf-webapp/v2/TestTaskResults/EID929e32b2-286f-46af-a5cf-de557c36d146/Attachments/EID64f3f170-3833-4308-9c8c-d881641ccc75"/>
    +  <referencedData href="http://demo-inspire-next.etf-validator.net/etf-webapp/v2/TestTaskResults/EID929e32b2-286f-46af-a5cf-de557c36d146/Attachments/EID64f3f170-3833-4308-9c8c-d881641ccc75"/>
     </Attachment>
    @@ -3350,11 +3401,11 @@

    4.7. Attachments

    -
    <Attachment type="ServiceResponse" id="EID3d6d11e3-8d86-4880-b095-a851af095dec">
    +
    <Attachment type="ServiceResponse" id="EID3d6d11e3-8d86-4880-b095-a851af095dec">
             <label>Service Response</label>
             <encoding>UTF-8</encoding>
             <mimeType>application/gzip</mimeType>
    -<referencedData href="http://demo-inspire-next.etf-validator.net/etf-webapp/v2/TestTaskResults/EIDb8f61761-4b25-47b5-8851-038615231f54/Attachments/EID3d6d11e3-8d86-4880-b095-a851af095dec"/>
    +<referencedData href="http://demo-inspire-next.etf-validator.net/etf-webapp/v2/TestTaskResults/EIDb8f61761-4b25-47b5-8851-038615231f54/Attachments/EID3d6d11e3-8d86-4880-b095-a851af095dec"/>
    @@ -3370,7 +3421,7 @@

    4.8. Assertion library

    -
    import de.interactive_instruments.etf.suim.*
    +
    import de.interactive_instruments.etf.suim.*
     Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS)
    @@ -3419,102 +3470,102 @@

    4.9. Translation Templates

    -
    <TranslationTemplateBundle xmlns="http://www.interactive-instruments.de/etf/2.0" id="EIDxxxxxx"
    -    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    -    xsi:schemaLocation="http://www.interactive-instruments.de/etf/2.0 https://resources.etf-validator.net/schema/v2/val/ignoreRef.xsd">
    +
    <TranslationTemplateBundle xmlns="http://www.interactive-instruments.de/etf/2.0" id="EIDxxxxxx"
    +    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    +    xsi:schemaLocation="http://www.interactive-instruments.de/etf/2.0 https://resources.etf-validator.net/schema/v2/val/ignoreRef.xsd">
         <translationTemplateCollections>
    -        <LangTranslationTemplateCollection name="TR.noDataReturned">
    +        <LangTranslationTemplateCollection name="TR.noDataReturned">
                 <translationTemplates>
    -                <TranslationTemplate language="en" name="TR.noDataReturned">Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access.</TranslationTemplate>
    +                <TranslationTemplate language="en" name="TR.noDataReturned">Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access.</TranslationTemplate>
                 </translationTemplates>
             </LangTranslationTemplateCollection>
    -        <LangTranslationTemplateCollection name="TR.xmlExpected">
    +        <LangTranslationTemplateCollection name="TR.xmlExpected">
                 <translationTemplates>
    -                <TranslationTemplate language="en" name="TR.xmlExpected">Expected a XML response but the service returned unparseable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access.</TranslationTemplate>
    +                <TranslationTemplate language="en" name="TR.xmlExpected">Expected a XML response but the service returned unparseable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access.</TranslationTemplate>
                 </translationTemplates>
             </LangTranslationTemplateCollection>
    -        <LangTranslationTemplateCollection name="TR.unexpectedHtml">
    +        <LangTranslationTemplateCollection name="TR.unexpectedHtml">
                 <translationTemplates>
    -                <TranslationTemplate language="en" name="TR.unexpectedHtml">Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access.</TranslationTemplate>
    +                <TranslationTemplate language="en" name="TR.unexpectedHtml">Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access.</TranslationTemplate>
                 </translationTemplates>
             </LangTranslationTemplateCollection>
    -        <LangTranslationTemplateCollection name="TR.missingElement">
    +        <LangTranslationTemplateCollection name="TR.missingElement">
                 <translationTemplates>
    -                <TranslationTemplate language="en" name="TR.missingElement">The expected element '{element}' was not found in the response. XPath: {xpath}</TranslationTemplate>
    +                <TranslationTemplate language="en" name="TR.missingElement">The expected element '{element}' was not found in the response. XPath: {xpath}</TranslationTemplate>
                 </translationTemplates>
             </LangTranslationTemplateCollection>
    -        <LangTranslationTemplateCollection name="TR.elementNotExpected">
    +        <LangTranslationTemplateCollection name="TR.elementNotExpected">
                 <translationTemplates>
    -                <TranslationTemplate language="en" name="TR.elementNotExpected">'{element}' was NOT expected in the response. XPath: {xpath}</TranslationTemplate>
    +                <TranslationTemplate language="en" name="TR.elementNotExpected">'{element}' was NOT expected in the response. XPath: {xpath}</TranslationTemplate>
                 </translationTemplates>
             </LangTranslationTemplateCollection>
    -        <LangTranslationTemplateCollection name="TR.elementsNotExpected">
    +        <LangTranslationTemplateCollection name="TR.elementsNotExpected">
                 <translationTemplates>
    -                <TranslationTemplate language="en" name="TR.elementsNotExpected">'{elements}' were not expected in the response. XPath: {xpath}</TranslationTemplate>
    +                <TranslationTemplate language="en" name="TR.elementsNotExpected">'{elements}' were not expected in the response. XPath: {xpath}</TranslationTemplate>
                 </translationTemplates>
             </LangTranslationTemplateCollection>
    -        <LangTranslationTemplateCollection name="TR.invalidValue">
    +        <LangTranslationTemplateCollection name="TR.invalidValue">
                 <translationTemplates>
    -                <TranslationTemplate language="en" name="TR.invalidValue">Expected the value '{value}' instead of '{acutal}' in {name}. XPath: {xpath}</TranslationTemplate>
    +                <TranslationTemplate language="en" name="TR.invalidValue">Expected the value '{value}' instead of '{acutal}' in {name}. XPath: {xpath}</TranslationTemplate>
                 </translationTemplates>
             </LangTranslationTemplateCollection>
    -        <LangTranslationTemplateCollection name="TR.emptyValue">
    +        <LangTranslationTemplateCollection name="TR.emptyValue">
                 <translationTemplates>
    -                <TranslationTemplate language="en" name="TR.emptyValue">Expected a non-empty text value for '{element}'. XPath: {xpath}</TranslationTemplate>
    +                <TranslationTemplate language="en" name="TR.emptyValue">Expected a non-empty text value for '{element}'. XPath: {xpath}</TranslationTemplate>
                 </translationTemplates>
             </LangTranslationTemplateCollection>
    -        <LangTranslationTemplateCollection name="TR.elementWithValueNotExpected">
    +        <LangTranslationTemplateCollection name="TR.elementWithValueNotExpected">
                 <translationTemplates>
    -                <TranslationTemplate language="en" name="TR.elementWithValueNotExpected">An element '{name}' with the value '{value}' was NOT expected in the response. XPath: {xpath}</TranslationTemplate>
    +                <TranslationTemplate language="en" name="TR.elementWithValueNotExpected">An element '{name}' with the value '{value}' was NOT expected in the response. XPath: {xpath}</TranslationTemplate>
                 </translationTemplates>
             </LangTranslationTemplateCollection>
    -        <LangTranslationTemplateCollection name="TR.unexpectedException">
    +        <LangTranslationTemplateCollection name="TR.unexpectedException">
                 <translationTemplates>
    -                <TranslationTemplate language="en" name="TR.unexpectedException">The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilties and ensure that referenced data exist.</TranslationTemplate>
    +                <TranslationTemplate language="en" name="TR.unexpectedException">The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilties and ensure that referenced data exist.</TranslationTemplate>
                 </translationTemplates>
             </LangTranslationTemplateCollection>
    -        <LangTranslationTemplateCollection name="TR.preCondition.testStep.xmlExpected">
    +        <LangTranslationTemplateCollection name="TR.preCondition.testStep.xmlExpected">
                 <translationTemplates>
    -                <TranslationTemplate language="en" name="TR.preCondition.testStep.xmlExpected">The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned.</TranslationTemplate>
    +                <TranslationTemplate language="en" name="TR.preCondition.testStep.xmlExpected">The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned.</TranslationTemplate>
                 </translationTemplates>
             </LangTranslationTemplateCollection>
    -        <LangTranslationTemplateCollection name="TR.preCondition.testStep.unexpectedException">
    +        <LangTranslationTemplateCollection name="TR.preCondition.testStep.unexpectedException">
                 <translationTemplates>
    -                <TranslationTemplate language="en" name="TR.preCondition.testStep.unexpectedException">The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned.</TranslationTemplate>
    +                <TranslationTemplate language="en" name="TR.preCondition.testStep.unexpectedException">The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned.</TranslationTemplate>
                 </translationTemplates>
             </LangTranslationTemplateCollection>
    -        <LangTranslationTemplateCollection name="TR.preCondition.testStep.noDataReturned">
    +        <LangTranslationTemplateCollection name="TR.preCondition.testStep.noDataReturned">
                 <translationTemplates>
    -                <TranslationTemplate language="en" name="TR.preCondition.testStep.noDataReturned">The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned.</TranslationTemplate>
    +                <TranslationTemplate language="en" name="TR.preCondition.testStep.noDataReturned">The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned.</TranslationTemplate>
                 </translationTemplates>
             </LangTranslationTemplateCollection>
    -        <LangTranslationTemplateCollection name="TR.preCondition.testStep.missingElement">
    +        <LangTranslationTemplateCollection name="TR.preCondition.testStep.missingElement">
                 <translationTemplates>
    -                <TranslationTemplate language="en" name="TR.preCondition.testStep.missingElement">The test compares data from this response with data from another test step, however the element '{element}' could not be found or has an empty value in test step '{testStepName}'.</TranslationTemplate>
    +                <TranslationTemplate language="en" name="TR.preCondition.testStep.missingElement">The test compares data from this response with data from another test step, however the element '{element}' could not be found or has an empty value in test step '{testStepName}'.</TranslationTemplate>
                 </translationTemplates>
             </LangTranslationTemplateCollection>
    -        <LangTranslationTemplateCollection name="TR.missingSchemaLocation">
    +        <LangTranslationTemplateCollection name="TR.missingSchemaLocation">
                 <!-- Used by the schema validation assertion -->
                 <translationTemplates>
    -                <TranslationTemplate language="en" name="TR.missingSchemaLocation">The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated.</TranslationTemplate>
    +                <TranslationTemplate language="en" name="TR.missingSchemaLocation">The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated.</TranslationTemplate>
                 </translationTemplates>
             </LangTranslationTemplateCollection>
    -        <LangTranslationTemplateCollection name="TR.initializationAndBasicChecksFailed">
    +        <LangTranslationTemplateCollection name="TR.initializationAndBasicChecksFailed">
                 <!-- Thrown when a WFS is auto configured and the library initialization fails -->
                 <translationTemplates>
    -                <TranslationTemplate language="en" name="TR.initializationAndBasicChecksFailed">The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accesible from outside your organization.</TranslationTemplate>
    +                <TranslationTemplate language="en" name="TR.initializationAndBasicChecksFailed">The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accesible from outside your organization.</TranslationTemplate>
                 </translationTemplates>
             </LangTranslationTemplateCollection>
    -        <LangTranslationTemplateCollection name="TR.fallbackInfo">
    +        <LangTranslationTemplateCollection name="TR.fallbackInfo">
                 <!-- TR.fallbackInfo is used when messages are thrown and no translation name is provided -->
                 <translationTemplates>
    -                <TranslationTemplate language="en" name="TR.fallbackInfo">{INFO}</TranslationTemplate>
    +                <TranslationTemplate language="en" name="TR.fallbackInfo">{INFO}</TranslationTemplate>
                 </translationTemplates>
             </LangTranslationTemplateCollection>
    -        <LangTranslationTemplateCollection name="TR.internalError">
    +        <LangTranslationTemplateCollection name="TR.internalError">
                 <!-- Thrown when an internal error occurs in the Assertion library -->
                 <translationTemplates>
    -                <TranslationTemplate language="en" name="TR.internalError">Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}</TranslationTemplate>
    +                <TranslationTemplate language="en" name="TR.internalError">Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}</TranslationTemplate>
                 </translationTemplates>
             </LangTranslationTemplateCollection>
         </translationTemplateCollections>
    @@ -3673,7 +3724,7 @@ 

    5.2. TEAM Engine test suites

    TEAM Engine test suites that are currently registered in ETF as Executable Test Suite are listed in the following table:

    -

    Table 2. Description of standard properties on a SoapUI test project for ETF
    +
    @@ -3706,7 +3757,7 @@

    5.2. TEAM Engine test suites
    -
    <etf:Tag id="EID268af871-5cf0-443e-834a-ce40bed6c0e3">
    +
    <etf:Tag id="EID268af871-5cf0-443e-834a-ce40bed6c0e3">
       <label>OGC Test Suites (remote execution)</label>
       <description>Executable Test Suites that are executed on a remote OGC TEAM Engine instance</description>
       <priority>1000</priority>
    @@ -3857,11 +3908,11 @@ 

    5.4. Attachments

    -
    <Attachment id="EID02e4736f-d1a5-482a-966e-a94717f7f1d9" type="JunitXml">
    +
    <Attachment id="EID02e4736f-d1a5-482a-966e-a94717f7f1d9" type="JunitXml">
       <label>TEAM Engine result</label>
       <encoding>UTF-8</encoding>
       <mimeType>text/xml</mimeType>
    -  <referencedData href="http://demo-inspire-next.etf-validator.net/etf-webapp/v2/TestTaskResults/EID674c8b95-d447-4b91-aaae-21169657828f/Attachments/EID02e4736f-d1a5-482a-966e-a94717f7f1d9"/>
    +  <referencedData href="http://demo-inspire-next.etf-validator.net/etf-webapp/v2/TestTaskResults/EID674c8b95-d447-4b91-aaae-21169657828f/Attachments/EID02e4736f-d1a5-482a-966e-a94717f7f1d9"/>
     </Attachment>
    @@ -3879,11 +3930,11 @@

    5.4. Attachments

    -
    <Attachment id="EID0783aa0d-8cd4-476a-86b5-c5432a7c1b46" type="internalError">
    +
    <Attachment id="EID0783aa0d-8cd4-476a-86b5-c5432a7c1b46" type="internalError">
     <label>Internal error</label>
     <encoding>UTF-8</encoding>
     <mimeType>text/html</mimeType>
    -<referencedData href="http://demo-inspire-next.etf-validator.net/etf-webapp/v2/TestTaskResults/EIDc631dc5f-2bf8-4169-8b36-ccdc85da710c/Attachments/EID0783aa0d-8cd4-476a-86b5-c5432a7c1b46"/>
    +<referencedData href="http://demo-inspire-next.etf-validator.net/etf-webapp/v2/TestTaskResults/EIDc631dc5f-2bf8-4169-8b36-ccdc85da710c/Attachments/EID0783aa0d-8cd4-476a-86b5-c5432a7c1b46"/>
     </Attachment>
     </attachments>
     </Attachment>
    @@ -3897,7 +3948,7 @@

    5.4. Attachments

    Glossary

    -

    Table 3. TEAM Engine test suites registered in ETF
    +
    @@ -4036,8 +4087,9 @@

    Glossary

    + \ No newline at end of file
    Table 6. Glossary of key terms and definitions in ETF