source: mauRepo/ISO19136-AnxE/test-014.xq @ 8191

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/mauRepo/ISO19136-AnxE/test-014.xq@8406
Revision 8191, 3.2 KB checked in by mnagni, 8 years ago (diff)

#{ROOT_URL}ISO19136-AnxE parametrized the import URLs

Line 
1xquery version "1.0";
2(:~~~~~~~~~~~~~~~~~~~~~~~~~~ Conformance Test  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3Test Number:    014
4Description:    Asserts that codeSpace, dictionaryIdentifier,
5                                memberIdentifierStem tagged values present if
6                                asDictionary="true" on <<CodeList>> classes.
7Reference:              GML 3.2 E.2.4.9 Example 2.
8                                https://cgsrv1.arrc.csiro.au/jira/browse/AUS-772
9~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:)
10
11import module namespace mod-fr = "urn:local-module:ISO19136-V3.2-AnxE_XMI-V1.1:framework"
12at "#{ROOT_URL}ISO19136-AnxE/modules/module-framework-functions.xq";
13
14declare namespace UML   = "omg.org/UML1.3";
15declare namespace cr    = "http://ndg.service.newmoon.conftest-result/1.0";
16
17(: Declare local variables, particular to this test :)
18declare variable $test-num as xs:integer := 14;
19declare variable $pass-msg as xs:string := "Each CodeList class where asDictionary=&quot;true&quot; also has the required &quot;codeSpace&quot;, &quot;dictionaryIdentifier&quot;, &quot;memberIdentifierStem&quot; tagged-values.";
20declare variable $fail-msg as xs:string := "The test has failed because:";
21
22(:
23        #Date:          2008-11-10
24        #Author:        Pavel Golodoniuc
25
26        Declare the local assert function which defines a positive condition for pass.
27
28        #Update:        2009-06-15
29        #Author:        Pavel Golodoniuc
30        #Note:          Fixed a bug that caused execution failure when duplicated tagged
31                                values are present in the model.
32:)
33declare function local:assert($doc-root as node()?) as node()?
34{
35        let
36                $root-tagged-values := $doc-root/XMI/XMI.content/UML:TaggedValue,
37                $fail := (
38                        for $class in $doc-root//UML:Class[./UML:ModelElement.stereotype/UML:Stereotype[@name = ("CodeList", "codeList")]]
39                        where boolean($root-tagged-values[@tag eq "asDictionary" and @modelElement eq $class/string(@xmi.id)]/starts-with(@value, "true"))
40                        return
41                        (
42                                if (normalize-space($root-tagged-values[@tag eq "codeSpace" and @modelElement eq $class/string(@xmi.id)][1]/string(@value)) eq "") then
43                                (
44                                        <cr:message>
45                                        {
46                                                concat("Class &quot;", $class/@name, "&quot; is tagged asDictionary=&quot;true&quot; but the &quot;codeSpace&quot; tagged value is not present.")
47                                        }
48                                        </cr:message>
49                                )
50                                else (),
51                                if (normalize-space($root-tagged-values[@tag eq "dictionaryIdentifier" and @modelElement eq $class/string(@xmi.id)][1]/string(@value)) eq "") then
52                                (
53                                        <cr:message>
54                                        {
55                                                concat("Class &quot;", $class/@name, "&quot; is tagged asDictionary=&quot;true&quot; but the &quot;dictionaryIdentifier&quot; tagged value is not present.")
56                                        }
57                                        </cr:message>
58                                )
59                                else (),
60                                if (normalize-space($root-tagged-values[@tag eq "memberIdentifierStem" and @modelElement eq $class/string(@xmi.id)][1]/string(@value)) eq "") then
61                                (
62                                        <cr:message>
63                                        {
64                                                concat("Class &quot;", $class/@name, "&quot; is tagged asDictionary=&quot;true&quot; but the &quot;memberIdentifierStem&quot; tagged value is not present.")
65                                        }
66                                        </cr:message>
67                                )
68                                else ()
69                        )
70                )
71        return
72                if (empty($fail)) then ()
73                else
74                        <cr:fail>
75                                <cr:messages>{ $fail }</cr:messages>
76                        </cr:fail>
77};
78
79(: Create a new result element :)
80mod-fr:new-result($test-num, $pass-msg, $fail-msg, local:assert(/))
Note: See TracBrowser for help on using the repository browser.