aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorKaren Arutyunov <karen@codesynthesis.com>2020-12-15 22:23:46 +0300
committerKaren Arutyunov <karen@codesynthesis.com>2021-02-25 13:39:56 +0300
commit949a9f572341b6cd07690f0b78b1b1941d320055 (patch)
treea4b9a32fb5a4cd6a46a17718cc854697df49c920 /tests
parent061b59ec50c40e8757c5e9237f45a2c7ade36d62 (diff)
Switch to build2
Diffstat (limited to 'tests')
-rw-r--r--tests/.gitignore3
-rw-r--r--tests/build/.gitignore3
-rw-r--r--tests/build/bootstrap.build8
-rw-r--r--tests/build/root.build23
-rw-r--r--tests/buildfile4
-rw-r--r--tests/dump/makefile54
-rw-r--r--tests/makefile15
-rw-r--r--tests/schema/annotation.testscript298
-rw-r--r--tests/schema/annotation/makefile33
-rw-r--r--tests/schema/annotation/test-000.std67
-rw-r--r--tests/schema/annotation/test-000.xsd120
-rw-r--r--tests/schema/annotation/test-001.std36
-rw-r--r--tests/schema/annotation/test-001.xsd53
-rw-r--r--tests/schema/anonymous.testscript181
-rw-r--r--tests/schema/anonymous/makefile33
-rw-r--r--tests/schema/anonymous/test-000.std30
-rw-r--r--tests/schema/anonymous/test-000.xsd42
-rw-r--r--tests/schema/anonymous/test-001.std38
-rw-r--r--tests/schema/anonymous/test-001.xsd47
-rw-r--r--tests/schema/attribute-group.testscript102
-rw-r--r--tests/schema/attribute-group/makefile33
-rw-r--r--tests/schema/attribute-group/test-000.std17
-rw-r--r--tests/schema/attribute-group/test-000.xsd31
-rw-r--r--tests/schema/attribute-group/test-001.std12
-rw-r--r--tests/schema/attribute-group/test-001.xsd20
-rw-r--r--tests/schema/buildfile6
-rw-r--r--tests/schema/default.testscript99
-rw-r--r--tests/schema/default/makefile33
-rw-r--r--tests/schema/default/test-000.std28
-rw-r--r--tests/schema/default/test-000.xsd23
-rw-r--r--tests/schema/default/test-001.std15
-rw-r--r--tests/schema/default/test-001.xsd11
-rw-r--r--tests/schema/driver.cxx (renamed from tests/dump/driver.cxx)20
-rw-r--r--tests/schema/element-group.testscript324
-rw-r--r--tests/schema/element-group/makefile33
-rw-r--r--tests/schema/element-group/test-000.std33
-rw-r--r--tests/schema/element-group/test-000.xsd39
-rw-r--r--tests/schema/element-group/test-001.std137
-rw-r--r--tests/schema/element-group/test-001.xsd33
-rw-r--r--tests/schema/element-group/test-002.std24
-rw-r--r--tests/schema/element-group/test-002.xsd26
-rw-r--r--tests/schema/enumeration.testscript148
-rw-r--r--tests/schema/enumeration/makefile33
-rw-r--r--tests/schema/enumeration/test-000.std62
-rw-r--r--tests/schema/enumeration/test-000.xsd72
-rw-r--r--tests/schema/makefile23
-rw-r--r--tests/schema/union.testscript135
-rw-r--r--tests/schema/union/makefile33
-rw-r--r--tests/schema/union/test-000.std37
-rw-r--r--tests/schema/union/test-000.xsd40
-rw-r--r--tests/schema/union/test-001.std15
-rw-r--r--tests/schema/union/test-001.xsd21
52 files changed, 1344 insertions, 1462 deletions
diff --git a/tests/.gitignore b/tests/.gitignore
new file mode 100644
index 0000000..2e508a9
--- /dev/null
+++ b/tests/.gitignore
@@ -0,0 +1,3 @@
+driver
+test/
+test-*/
diff --git a/tests/build/.gitignore b/tests/build/.gitignore
new file mode 100644
index 0000000..4a730a3
--- /dev/null
+++ b/tests/build/.gitignore
@@ -0,0 +1,3 @@
+config.build
+root/
+bootstrap/
diff --git a/tests/build/bootstrap.build b/tests/build/bootstrap.build
new file mode 100644
index 0000000..33c8d02
--- /dev/null
+++ b/tests/build/bootstrap.build
@@ -0,0 +1,8 @@
+# file : tests/build/bootstrap.build
+# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+project = # Unnamed subproject.
+
+using config
+using dist
+using test
diff --git a/tests/build/root.build b/tests/build/root.build
new file mode 100644
index 0000000..c062795
--- /dev/null
+++ b/tests/build/root.build
@@ -0,0 +1,23 @@
+# file : tests/build/root.build
+# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+cxx.std = latest
+
+using cxx
+
+hxx{*}: extension = hxx
+cxx{*}: extension = cxx
+
+if ($cxx.target.system == 'win32-msvc')
+ cxx.poptions += -D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_WARNINGS
+
+if ($cxx.class == 'msvc')
+ cxx.coptions += /wd4251 /wd4275 /wd4800
+
+# Every exe{} in this subproject is by default a test.
+#
+exe{*}: test = true
+
+# Specify the test target for cross-testing.
+#
+test.target = $cxx.target
diff --git a/tests/buildfile b/tests/buildfile
new file mode 100644
index 0000000..97a1f9c
--- /dev/null
+++ b/tests/buildfile
@@ -0,0 +1,4 @@
+# file : tests/buildfile
+# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+./: {*/ -build/}
diff --git a/tests/dump/makefile b/tests/dump/makefile
deleted file mode 100644
index 18f18de..0000000
--- a/tests/dump/makefile
+++ /dev/null
@@ -1,54 +0,0 @@
-# file : tests/dump/makefile
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-xsd-fe.l := $(out_root)/xsd-frontend/xsd-frontend.l
-xsd-fe.l.cpp-options := $(out_root)/xsd-frontend/xsd-frontend.l.cpp-options
-
-driver := $(out_base)/driver
-clean := $(out_base)/.clean
-
-# Build.
-#
-$(driver): $(cxx_obj) $(xsd-fe.l)
-
-$(cxx_obj) $(cxx_od): $(xsd-fe.l.cpp-options)
-
-$(call include-dep,$(cxx_od))
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Clean.
-#
-$(clean): $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/o-e.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/cxx-d.make)
-
-
-# Dependencies.
-#
-$(call import,$(src_root)/xsd-frontend/makefile)
diff --git a/tests/makefile b/tests/makefile
deleted file mode 100644
index 103accf..0000000
--- a/tests/makefile
+++ /dev/null
@@ -1,15 +0,0 @@
-# file : tests/makefile
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../build/bootstrap.make
-
-default := $(out_base)/
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-$(default): $(out_base)/dump/ $(out_base)/schema/
-$(test): $(out_base)/schema/.test
-$(clean): $(out_base)/dump/.clean $(out_base)/schema/.clean
-
-$(call import,$(src_base)/dump/makefile)
-$(call import,$(src_base)/schema/makefile)
diff --git a/tests/schema/annotation.testscript b/tests/schema/annotation.testscript
new file mode 100644
index 0000000..3f8a96b
--- /dev/null
+++ b/tests/schema/annotation.testscript
@@ -0,0 +1,298 @@
+# file : tests/schema/annotation.testscript
+# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+: basic
+:
+{
+ cat <<EOI >=test.xsd;
+ <?xml version="1.0"?>
+ <schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
+
+ <annotation>
+ <documentation>schema documentation</documentation>
+ </annotation>
+
+ <simpleType name="list">
+ <annotation>
+ <documentation>list type documentation</documentation>
+ </annotation>
+ <list itemType="string"/>
+ </simpleType>
+
+ <simpleType name="union">
+ <annotation>
+ <documentation>union type documentation</documentation>
+ </annotation>
+ <union memberTypes="int string"/>
+ </simpleType>
+
+ <simpleType name="enum">
+ <annotation>
+ <documentation>enumeration type documentation</documentation>
+ </annotation>
+ <restriction base="string">
+ <enumeration value="male">
+ <annotation>
+ <documentation>enumerator documentation (male)</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="female">
+ <annotation>
+ <documentation>enumerator documentation (female)</documentation>
+ </annotation>
+ </enumeration>
+ </restriction>
+ </simpleType>
+
+ <complexType name="type">
+ <annotation>
+ <documentation>complex type documentation</documentation>
+ </annotation>
+ <sequence>
+ <element name="efoo" type="string">
+ <annotation>
+ <documentation>local element efoo documentation</documentation>
+ </annotation>
+ </element>
+ <element name="ebar">
+ <annotation>
+ <documentation>local element ebar documentation</documentation>
+ </annotation>
+ <complexType>
+ <sequence>
+ <element name="efoo" type="string">
+ <annotation>
+ <documentation>nested local element efoo documentation</documentation>
+ </annotation>
+ </element>
+ </sequence>
+ <attribute name="afoo" type="string">
+ <annotation>
+ <documentation>nested local attribute afoo documentation</documentation>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+ <element ref="t:ebaz">
+ <annotation>
+ <documentation>local element ebaz documentation</documentation>
+ </annotation>
+ </element>
+ <any namespace="##other">
+ <annotation>
+ <documentation>any documentation</documentation>
+ </annotation>
+ </any>
+ </sequence>
+ <attribute name="afoo" type="string">
+ <annotation>
+ <documentation>local attribute afoo documentation</documentation>
+ </annotation>
+ </attribute>
+ <attribute name="abar">
+ <annotation>
+ <documentation>local attribute abar documentation</documentation>
+ </annotation>
+ <simpleType>
+ <annotation>
+ <documentation>list type documentation</documentation>
+ </annotation>
+ <list itemType="string"/>
+ </simpleType>
+ </attribute>
+ <attribute ref="t:abaz">
+ <annotation>
+ <documentation>local attribute abaz documentation</documentation>
+ </annotation>
+ </attribute>
+ <anyAttribute namespace="##other">
+ <annotation>
+ <documentation>anyAttribute documentation</documentation>
+ </annotation>
+ </anyAttribute>
+ </complexType>
+
+ <element name="ebaz" type="string">
+ <annotation>
+ <documentation>global element documentation</documentation>
+ </annotation>
+ </element>
+
+ <attribute name="abaz" type="string">
+ <annotation>
+ <documentation>global attribute documentation</documentation>
+ </annotation>
+ </attribute>
+
+ </schema>
+ EOI
+
+ $* test.xsd >>EOO
+ <schema documentation>
+ primary
+ {
+ namespace test
+ {
+ <list type documentation>
+ list list http://www.w3.org/2001/XMLSchema#string
+ <union type documentation>
+ union union http://www.w3.org/2001/XMLSchema#int http://www.w3.org/2001/XMLSchema#string
+ <enumeration type documentation>
+ enumeration enum: http://www.w3.org/2001/XMLSchema#string
+ {
+ <enumerator documentation (male)>
+ enumerator male
+ <enumerator documentation (female)>
+ enumerator female
+ }
+ <complex type documentation>
+ complex type
+ {
+ <local element efoo documentation>
+ element efoo
+ <local element ebar documentation>
+ element ebar
+ <local element ebaz documentation>
+ element ebaz
+ <any documentation>
+ any 'any #0'
+ <local attribute afoo documentation>
+ optional attribute afoo http://www.w3.org/2001/XMLSchema#string
+ <local attribute abar documentation>
+ optional attribute abar
+ {
+ <list type documentation>
+ list <anonymous> http://www.w3.org/2001/XMLSchema#string
+ }
+ <local attribute abaz documentation>
+ optional attribute abaz http://www.w3.org/2001/XMLSchema#string
+ <anyAttribute documentation>
+ any-attribute 'any-attribute #0'
+ [1, 1] sequence
+ {
+ [1, 1] element efoo http://www.w3.org/2001/XMLSchema#string
+ [1, 1] element ebar
+ {
+ complex <anonymous>
+ {
+ <nested local element efoo documentation>
+ element efoo
+ <nested local attribute afoo documentation>
+ optional attribute afoo http://www.w3.org/2001/XMLSchema#string
+ [1, 1] sequence
+ {
+ [1, 1] element efoo http://www.w3.org/2001/XMLSchema#string
+ }
+ }
+ }
+ [1, 1] element ebaz http://www.w3.org/2001/XMLSchema#string
+ [1, 1] any 'any #0'
+ }
+ }
+ <global element documentation>
+ element ebaz http://www.w3.org/2001/XMLSchema#string
+ <global attribute documentation>
+ attribute abaz http://www.w3.org/2001/XMLSchema#string
+ }
+ }
+ EOO
+}
+
+: refs
+:
+{
+ cat <<EOI >=refs.xsd;
+ <?xml version="1.0"?>
+ <schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
+
+ <!-- Test various ref constructs. -->
+
+ <complexType name="type">
+ <sequence>
+ <element ref="t:ebar"/>
+ <group ref="t:eg"/>
+ </sequence>
+ <attribute ref="t:abar"/>
+ <attributeGroup ref="t:ag"/>
+ </complexType>
+
+ <group name="eg">
+ <choice>
+ <element name="efoo" type="string">
+ <annotation>
+ <documentation>group element efoo documentation</documentation>
+ </annotation>
+ </element>
+ <element ref="t:ebar"/>
+ </choice>
+ </group>
+
+ <element name="ebar" type="string">
+ <annotation>
+ <documentation>global element ebar documentation</documentation>
+ </annotation>
+ </element>
+
+ <attributeGroup name="ag">
+ <attribute name="afoo" type="string">
+ <annotation>
+ <documentation>group attribute afoo documentation</documentation>
+ </annotation>
+ </attribute>
+ <attribute ref="t:abaz"/>
+ </attributeGroup>
+
+ <attribute name="abar" type="string">
+ <annotation>
+ <documentation>global attribute abar documentation</documentation>
+ </annotation>
+ </attribute>
+
+ <attribute name="abaz" type="string">
+ <annotation>
+ <documentation>global attribute abaz documentation</documentation>
+ </annotation>
+ </attribute>
+
+ </schema>
+ EOI
+
+ $* refs.xsd >>EOO
+ primary
+ {
+ namespace test
+ {
+ complex type
+ {
+ <global element ebar documentation>
+ element ebar
+ <group element efoo documentation>
+ element efoo
+ <global element ebar documentation>
+ element ebar
+ <global attribute abar documentation>
+ optional attribute abar http://www.w3.org/2001/XMLSchema#string
+ <group attribute afoo documentation>
+ optional attribute afoo http://www.w3.org/2001/XMLSchema#string
+ <global attribute abaz documentation>
+ optional attribute abaz http://www.w3.org/2001/XMLSchema#string
+ [1, 1] sequence
+ {
+ [1, 1] element ebar http://www.w3.org/2001/XMLSchema#string
+ [1, 1] choice
+ {
+ [1, 1] element efoo http://www.w3.org/2001/XMLSchema#string
+ [1, 1] element ebar http://www.w3.org/2001/XMLSchema#string
+ }
+ }
+ }
+ <global element ebar documentation>
+ element ebar http://www.w3.org/2001/XMLSchema#string
+ <global attribute abar documentation>
+ attribute abar http://www.w3.org/2001/XMLSchema#string
+ <global attribute abaz documentation>
+ attribute abaz http://www.w3.org/2001/XMLSchema#string
+ }
+ }
+ EOO
+}
diff --git a/tests/schema/annotation/makefile b/tests/schema/annotation/makefile
deleted file mode 100644
index 8c3d805..0000000
--- a/tests/schema/annotation/makefile
+++ /dev/null
@@ -1,33 +0,0 @@
-# file : tests/schema/annotation/makefile
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make
-
-tests := 000 001
-
-driver := $(out_root)/tests/dump/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Test.
-#
-test_targets := $(addprefix $(out_base)/.test-,$(tests))
-
-$(test): $(test_targets)
-$(test_targets): driver := $(driver)
-
-.PHONY: $(out_base)/.test-%
-$(out_base)/.test-%: $(driver) $(src_base)/test-%.xsd $(src_base)/test-%.std
- $(call message,test $(out_base)/$*,$(driver) $(src_base)/test-$*.xsd | diff -u $(src_base)/test-$*.std -)
-
-# Clean.
-#
-$(clean):
-
-# Dependencies.
-#
-$(call import,$(src_root)/tests/dump/makefile)
diff --git a/tests/schema/annotation/test-000.std b/tests/schema/annotation/test-000.std
deleted file mode 100644
index 15f3e89..0000000
--- a/tests/schema/annotation/test-000.std
+++ /dev/null
@@ -1,67 +0,0 @@
-<schema documentation>
-primary
-{
- namespace test
- {
- <list type documentation>
- list list http://www.w3.org/2001/XMLSchema#string
- <union type documentation>
- union union http://www.w3.org/2001/XMLSchema#int http://www.w3.org/2001/XMLSchema#string
- <enumeration type documentation>
- enumeration enum: http://www.w3.org/2001/XMLSchema#string
- {
- <enumerator documentation (male)>
- enumerator male
- <enumerator documentation (female)>
- enumerator female
- }
- <complex type documentation>
- complex type
- {
- <local element efoo documentation>
- element efoo
- <local element ebar documentation>
- element ebar
- <local element ebaz documentation>
- element ebaz
- <any documentation>
- any 'any #0'
- <local attribute afoo documentation>
- optional attribute afoo http://www.w3.org/2001/XMLSchema#string
- <local attribute abar documentation>
- optional attribute abar
- {
- <list type documentation>
- list <anonymous> http://www.w3.org/2001/XMLSchema#string
- }
- <local attribute abaz documentation>
- optional attribute abaz http://www.w3.org/2001/XMLSchema#string
- <anyAttribute documentation>
- any-attribute 'any-attribute #0'
- [1, 1] sequence
- {
- [1, 1] element efoo http://www.w3.org/2001/XMLSchema#string
- [1, 1] element ebar
- {
- complex <anonymous>
- {
- <nested local element efoo documentation>
- element efoo
- <nested local attribute afoo documentation>
- optional attribute afoo http://www.w3.org/2001/XMLSchema#string
- [1, 1] sequence
- {
- [1, 1] element efoo http://www.w3.org/2001/XMLSchema#string
- }
- }
- }
- [1, 1] element ebaz http://www.w3.org/2001/XMLSchema#string
- [1, 1] any 'any #0'
- }
- }
- <global element documentation>
- element ebaz http://www.w3.org/2001/XMLSchema#string
- <global attribute documentation>
- attribute abaz http://www.w3.org/2001/XMLSchema#string
- }
-}
diff --git a/tests/schema/annotation/test-000.xsd b/tests/schema/annotation/test-000.xsd
deleted file mode 100644
index f768b45..0000000
--- a/tests/schema/annotation/test-000.xsd
+++ /dev/null
@@ -1,120 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <annotation>
- <documentation>schema documentation</documentation>
- </annotation>
-
- <simpleType name="list">
- <annotation>
- <documentation>list type documentation</documentation>
- </annotation>
- <list itemType="string"/>
- </simpleType>
-
- <simpleType name="union">
- <annotation>
- <documentation>union type documentation</documentation>
- </annotation>
- <union memberTypes="int string"/>
- </simpleType>
-
- <simpleType name="enum">
- <annotation>
- <documentation>enumeration type documentation</documentation>
- </annotation>
- <restriction base="string">
- <enumeration value="male">
- <annotation>
- <documentation>enumerator documentation (male)</documentation>
- </annotation>
- </enumeration>
- <enumeration value="female">
- <annotation>
- <documentation>enumerator documentation (female)</documentation>
- </annotation>
- </enumeration>
- </restriction>
- </simpleType>
-
- <complexType name="type">
- <annotation>
- <documentation>complex type documentation</documentation>
- </annotation>
- <sequence>
- <element name="efoo" type="string">
- <annotation>
- <documentation>local element efoo documentation</documentation>
- </annotation>
- </element>
- <element name="ebar">
- <annotation>
- <documentation>local element ebar documentation</documentation>
- </annotation>
- <complexType>
- <sequence>
- <element name="efoo" type="string">
- <annotation>
- <documentation>nested local element efoo documentation</documentation>
- </annotation>
- </element>
- </sequence>
- <attribute name="afoo" type="string">
- <annotation>
- <documentation>nested local attribute afoo documentation</documentation>
- </annotation>
- </attribute>
- </complexType>
- </element>
- <element ref="t:ebaz">
- <annotation>
- <documentation>local element ebaz documentation</documentation>
- </annotation>
- </element>
- <any namespace="##other">
- <annotation>
- <documentation>any documentation</documentation>
- </annotation>
- </any>
- </sequence>
- <attribute name="afoo" type="string">
- <annotation>
- <documentation>local attribute afoo documentation</documentation>
- </annotation>
- </attribute>
- <attribute name="abar">
- <annotation>
- <documentation>local attribute abar documentation</documentation>
- </annotation>
- <simpleType>
- <annotation>
- <documentation>list type documentation</documentation>
- </annotation>
- <list itemType="string"/>
- </simpleType>
- </attribute>
- <attribute ref="t:abaz">
- <annotation>
- <documentation>local attribute abaz documentation</documentation>
- </annotation>
- </attribute>
- <anyAttribute namespace="##other">
- <annotation>
- <documentation>anyAttribute documentation</documentation>
- </annotation>
- </anyAttribute>
- </complexType>
-
- <element name="ebaz" type="string">
- <annotation>
- <documentation>global element documentation</documentation>
- </annotation>
- </element>
-
- <attribute name="abaz" type="string">
- <annotation>
- <documentation>global attribute documentation</documentation>
- </annotation>
- </attribute>
-
-</schema>
diff --git a/tests/schema/annotation/test-001.std b/tests/schema/annotation/test-001.std
deleted file mode 100644
index 9e2c99a..0000000
--- a/tests/schema/annotation/test-001.std
+++ /dev/null
@@ -1,36 +0,0 @@
-primary
-{
- namespace test
- {
- complex type
- {
- <global element ebar documentation>
- element ebar
- <group element efoo documentation>
- element efoo
- <global element ebar documentation>
- element ebar
- <global attribute abar documentation>
- optional attribute abar http://www.w3.org/2001/XMLSchema#string
- <group attribute afoo documentation>
- optional attribute afoo http://www.w3.org/2001/XMLSchema#string
- <global attribute abaz documentation>
- optional attribute abaz http://www.w3.org/2001/XMLSchema#string
- [1, 1] sequence
- {
- [1, 1] element ebar http://www.w3.org/2001/XMLSchema#string
- [1, 1] choice
- {
- [1, 1] element efoo http://www.w3.org/2001/XMLSchema#string
- [1, 1] element ebar http://www.w3.org/2001/XMLSchema#string
- }
- }
- }
- <global element ebar documentation>
- element ebar http://www.w3.org/2001/XMLSchema#string
- <global attribute abar documentation>
- attribute abar http://www.w3.org/2001/XMLSchema#string
- <global attribute abaz documentation>
- attribute abaz http://www.w3.org/2001/XMLSchema#string
- }
-}
diff --git a/tests/schema/annotation/test-001.xsd b/tests/schema/annotation/test-001.xsd
deleted file mode 100644
index 286f63a..0000000
--- a/tests/schema/annotation/test-001.xsd
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <!-- Test various ref constructs. -->
-
- <complexType name="type">
- <sequence>
- <element ref="t:ebar"/>
- <group ref="t:eg"/>
- </sequence>
- <attribute ref="t:abar"/>
- <attributeGroup ref="t:ag"/>
- </complexType>
-
- <group name="eg">
- <choice>
- <element name="efoo" type="string">
- <annotation>
- <documentation>group element efoo documentation</documentation>
- </annotation>
- </element>
- <element ref="t:ebar"/>
- </choice>
- </group>
-
- <element name="ebar" type="string">
- <annotation>
- <documentation>global element ebar documentation</documentation>
- </annotation>
- </element>
-
- <attributeGroup name="ag">
- <attribute name="afoo" type="string">
- <annotation>
- <documentation>group attribute afoo documentation</documentation>
- </annotation>
- </attribute>
- <attribute ref="t:abaz"/>
- </attributeGroup>
-
- <attribute name="abar" type="string">
- <annotation>
- <documentation>global attribute abar documentation</documentation>
- </annotation>
- </attribute>
-
- <attribute name="abaz" type="string">
- <annotation>
- <documentation>global attribute abaz documentation</documentation>
- </annotation>
- </attribute>
-
-</schema>
diff --git a/tests/schema/anonymous.testscript b/tests/schema/anonymous.testscript
new file mode 100644
index 0000000..2dbc184
--- /dev/null
+++ b/tests/schema/anonymous.testscript
@@ -0,0 +1,181 @@
+# file : tests/schema/anonymous.testscript
+# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+test.options += --anonymous
+
+: basic
+:
+{
+ cat <<EOI >=test.xsd;
+ <?xml version="1.0"?>
+ <schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
+
+ <simpleType name="named">
+ <list itemType="string"/>
+ </simpleType>
+
+ <simpleType name="anon_item">
+ <restriction base="string">
+ <enumeration value="male"/>
+ <enumeration value="female"/>
+ </restriction>
+ </simpleType>
+
+ <simpleType name="anon">
+ <list>
+ <simpleType>
+ <restriction base="string">
+ <enumeration value="male"/>
+ <enumeration value="female"/>
+ </restriction>
+ </simpleType>
+ </list>
+ </simpleType>
+
+ <simpleType name="anon_nested">
+ <list>
+ <simpleType>
+ <restriction>
+ <simpleType>
+ <restriction base="string">
+ <maxLength value="20"/>
+ </restriction>
+ </simpleType>
+ <enumeration value="male"/>
+ <enumeration value="female"/>
+ </restriction>
+ </simpleType>
+ </list>
+ </simpleType>
+
+ </schema>
+ EOI
+
+ $* test.xsd >>EOO
+ anonymous: test anon_item anon
+ anonymous: test anon_nested_item anon_nested
+ anonymous: test anon_nested_item_base anon_nested_item
+ primary
+ {
+ namespace test
+ {
+ list named http://www.w3.org/2001/XMLSchema#string
+ enumeration anon_item: http://www.w3.org/2001/XMLSchema#string
+ {
+ enumerator male
+ enumerator female
+ }
+ list anon test#anon_item1
+ list anon_nested test#anon_nested_item
+ enumeration anon_item1: http://www.w3.org/2001/XMLSchema#string
+ {
+ enumerator male
+ enumerator female
+ }
+ enumeration anon_nested_item: test#anon_nested_item_base
+ {
+ enumerator male
+ enumerator female
+ }
+ complex anon_nested_item_base: http://www.w3.org/2001/XMLSchema#string
+ {
+ }
+ }
+ }
+ EOO
+}
+
+: complex
+:
+{
+ cat <<EOI >=test.xsd;
+ <?xml version="1.0"?>
+ <schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
+
+ <simpleType name="named">
+ <restriction base="string">
+ <enumeration value="male"/>
+ <enumeration value="female"/>
+ </restriction>
+ </simpleType>
+
+ <simpleType name="anon_base">
+ <restriction base="string">
+ <enumeration value="male"/>
+ <enumeration value="female"/>
+ </restriction>
+ </simpleType>
+
+ <simpleType name="anon">
+ <restriction>
+ <simpleType>
+ <restriction base="string">
+ <maxLength value="20"/>
+ </restriction>
+ </simpleType>
+ <enumeration value="male"/>
+ <enumeration value="female"/>
+ </restriction>
+ </simpleType>
+
+ <simpleType name="anon_nested">
+ <restriction>
+ <simpleType>
+ <restriction>
+ <simpleType>
+ <restriction base="string">
+ <maxLength value="40"/>
+ </restriction>
+ </simpleType>
+ <maxLength value="20"/>
+ </restriction>
+ </simpleType>
+ <enumeration value="male"/>
+ <enumeration value="female"/>
+ </restriction>
+ </simpleType>
+
+ </schema>
+ EOI
+
+ $* test.xsd >>EOO
+ anonymous: test anon_base anon
+ anonymous: test anon_nested_base anon_nested
+ anonymous: test anon_nested_base_base anon_nested_base
+ primary
+ {
+ namespace test
+ {
+ enumeration named: http://www.w3.org/2001/XMLSchema#string
+ {
+ enumerator male
+ enumerator female
+ }
+ enumeration anon_base: http://www.w3.org/2001/XMLSchema#string
+ {
+ enumerator male
+ enumerator female
+ }
+ enumeration anon: test#anon_base1
+ {
+ enumerator male
+ enumerator female
+ }
+ enumeration anon_nested: test#anon_nested_base
+ {
+ enumerator male
+ enumerator female
+ }
+ complex anon_base1: http://www.w3.org/2001/XMLSchema#string
+ {
+ }
+ complex anon_nested_base: test#anon_nested_base_base
+ {
+ }
+ complex anon_nested_base_base: http://www.w3.org/2001/XMLSchema#string
+ {
+ }
+ }
+ }
+ EOO
+}
diff --git a/tests/schema/anonymous/makefile b/tests/schema/anonymous/makefile
deleted file mode 100644
index 345bf11..0000000
--- a/tests/schema/anonymous/makefile
+++ /dev/null
@@ -1,33 +0,0 @@
-# file : tests/schema/annotation/makefile
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make
-
-tests := 000 001
-
-driver := $(out_root)/tests/dump/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Test.
-#
-test_targets := $(addprefix $(out_base)/.test-,$(tests))
-
-$(test): $(test_targets)
-$(test_targets): driver := $(driver)
-
-.PHONY: $(out_base)/.test-%
-$(out_base)/.test-%: $(driver) $(src_base)/test-%.xsd $(src_base)/test-%.std
- $(call message,test $(out_base)/$*,$(driver) --anonymous $(src_base)/test-$*.xsd | diff -u $(src_base)/test-$*.std -)
-
-# Clean.
-#
-$(clean):
-
-# Dependencies.
-#
-$(call import,$(src_root)/tests/dump/makefile)
diff --git a/tests/schema/anonymous/test-000.std b/tests/schema/anonymous/test-000.std
deleted file mode 100644
index 1f33cb0..0000000
--- a/tests/schema/anonymous/test-000.std
+++ /dev/null
@@ -1,30 +0,0 @@
-anonymous: test anon_item anon
-anonymous: test anon_nested_item anon_nested
-anonymous: test anon_nested_item_base anon_nested_item
-primary
-{
- namespace test
- {
- list named http://www.w3.org/2001/XMLSchema#string
- enumeration anon_item: http://www.w3.org/2001/XMLSchema#string
- {
- enumerator male
- enumerator female
- }
- list anon test#anon_item1
- list anon_nested test#anon_nested_item
- enumeration anon_item1: http://www.w3.org/2001/XMLSchema#string
- {
- enumerator male
- enumerator female
- }
- enumeration anon_nested_item: test#anon_nested_item_base
- {
- enumerator male
- enumerator female
- }
- complex anon_nested_item_base: http://www.w3.org/2001/XMLSchema#string
- {
- }
- }
-}
diff --git a/tests/schema/anonymous/test-000.xsd b/tests/schema/anonymous/test-000.xsd
deleted file mode 100644
index ece8f4a..0000000
--- a/tests/schema/anonymous/test-000.xsd
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <simpleType name="named">
- <list itemType="string"/>
- </simpleType>
-
- <simpleType name="anon_item">
- <restriction base="string">
- <enumeration value="male"/>
- <enumeration value="female"/>
- </restriction>
- </simpleType>
-
- <simpleType name="anon">
- <list>
- <simpleType>
- <restriction base="string">
- <enumeration value="male"/>
- <enumeration value="female"/>
- </restriction>
- </simpleType>
- </list>
- </simpleType>
-
- <simpleType name="anon_nested">
- <list>
- <simpleType>
- <restriction>
- <simpleType>
- <restriction base="string">
- <maxLength value="20"/>
- </restriction>
- </simpleType>
- <enumeration value="male"/>
- <enumeration value="female"/>
- </restriction>
- </simpleType>
- </list>
- </simpleType>
-
-</schema>
diff --git a/tests/schema/anonymous/test-001.std b/tests/schema/anonymous/test-001.std
deleted file mode 100644
index cc3f2d1..0000000
--- a/tests/schema/anonymous/test-001.std
+++ /dev/null
@@ -1,38 +0,0 @@
-anonymous: test anon_base anon
-anonymous: test anon_nested_base anon_nested
-anonymous: test anon_nested_base_base anon_nested_base
-primary
-{
- namespace test
- {
- enumeration named: http://www.w3.org/2001/XMLSchema#string
- {
- enumerator male
- enumerator female
- }
- enumeration anon_base: http://www.w3.org/2001/XMLSchema#string
- {
- enumerator male
- enumerator female
- }
- enumeration anon: test#anon_base1
- {
- enumerator male
- enumerator female
- }
- enumeration anon_nested: test#anon_nested_base
- {
- enumerator male
- enumerator female
- }
- complex anon_base1: http://www.w3.org/2001/XMLSchema#string
- {
- }
- complex anon_nested_base: test#anon_nested_base_base
- {
- }
- complex anon_nested_base_base: http://www.w3.org/2001/XMLSchema#string
- {
- }
- }
-}
diff --git a/tests/schema/anonymous/test-001.xsd b/tests/schema/anonymous/test-001.xsd
deleted file mode 100644
index 4a8414f..0000000
--- a/tests/schema/anonymous/test-001.xsd
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <simpleType name="named">
- <restriction base="string">
- <enumeration value="male"/>
- <enumeration value="female"/>
- </restriction>
- </simpleType>
-
- <simpleType name="anon_base">
- <restriction base="string">
- <enumeration value="male"/>
- <enumeration value="female"/>
- </restriction>
- </simpleType>
-
- <simpleType name="anon">
- <restriction>
- <simpleType>
- <restriction base="string">
- <maxLength value="20"/>
- </restriction>
- </simpleType>
- <enumeration value="male"/>
- <enumeration value="female"/>
- </restriction>
- </simpleType>
-
- <simpleType name="anon_nested">
- <restriction>
- <simpleType>
- <restriction>
- <simpleType>
- <restriction base="string">
- <maxLength value="40"/>
- </restriction>
- </simpleType>
- <maxLength value="20"/>
- </restriction>
- </simpleType>
- <enumeration value="male"/>
- <enumeration value="female"/>
- </restriction>
- </simpleType>
-
-</schema>
diff --git a/tests/schema/attribute-group.testscript b/tests/schema/attribute-group.testscript
new file mode 100644
index 0000000..e2a64a6
--- /dev/null
+++ b/tests/schema/attribute-group.testscript
@@ -0,0 +1,102 @@
+# file : tests/schema/attribute-group.testscript
+# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+: multiple-ref-levels
+:
+{
+ cat <<EOI >=test.xsd;
+ <?xml version="1.0"?>
+ <schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
+
+ <!-- Multiple levels of forward reference. -->
+
+ <complexType name="type">
+ <attributeGroup ref="t:g1"/>
+ </complexType>
+
+ <attributeGroup name="g1">
+ <attributeGroup ref="t:g2"/>
+ <attributeGroup ref="t:g3"/>
+ </attributeGroup>
+
+ <attributeGroup name="g2">
+ <attribute ref="t:foo2"/>
+ <attribute ref="t:bar2" use="required"/>
+ </attributeGroup>
+
+ <attributeGroup name="g3">
+ <attribute ref="t:foo3"/>
+ <attribute ref="t:bar3" use="required"/>
+ </attributeGroup>
+
+ <attribute name="foo2" type="string"/>
+ <attribute name="bar2" type="string"/>
+
+ <attribute name="foo3" type="string"/>
+ <attribute name="bar3" type="string"/>
+
+ </schema>
+ EOI
+
+ $* test.xsd >>EOO
+ primary
+ {
+ namespace test
+ {
+ complex type
+ {
+ optional attribute foo2 http://www.w3.org/2001/XMLSchema#string
+ required attribute bar2 http://www.w3.org/2001/XMLSchema#string
+ optional attribute foo3 http://www.w3.org/2001/XMLSchema#string
+ required attribute bar3 http://www.w3.org/2001/XMLSchema#string
+ }
+ attribute foo2 http://www.w3.org/2001/XMLSchema#string
+ attribute bar2 http://www.w3.org/2001/XMLSchema#string
+ attribute foo3 http://www.w3.org/2001/XMLSchema#string
+ attribute bar3 http://www.w3.org/2001/XMLSchema#string
+ }
+ }
+ EOO
+}
+
+: any-attr
+:
+{
+ cat <<EOI >=test.xsd;
+ <?xml version="1.0"?>
+ <schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
+
+ <!-- AnyAttribute in attribute groups. -->
+
+ <complexType name="type">
+ <attributeGroup ref="t:g1"/>
+ <attributeGroup ref="t:g2"/>
+ </complexType>
+
+ <attributeGroup name="g1">
+ <anyAttribute namespace="http://www.foo.com"/>
+ </attributeGroup>
+
+ <attributeGroup name="g2">
+ <attribute name="foo" type="string"/>
+ <anyAttribute namespace="http://www.bar.com"/>
+ </attributeGroup>
+
+ </schema>
+ EOI
+
+ $* test.xsd >>EOO
+ primary
+ {
+ namespace test
+ {
+ complex type
+ {
+ any-attribute 'any-attribute #1'
+ optional attribute foo http://www.w3.org/2001/XMLSchema#string
+ any-attribute 'any-attribute #0'
+ }
+ }
+ }
+ EOO
+}
diff --git a/tests/schema/attribute-group/makefile b/tests/schema/attribute-group/makefile
deleted file mode 100644
index 2caa99f..0000000
--- a/tests/schema/attribute-group/makefile
+++ /dev/null
@@ -1,33 +0,0 @@
-# file : tests/schema/attribute-group/makefile
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make
-
-tests := 000 001
-
-driver := $(out_root)/tests/dump/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Test.
-#
-test_targets := $(addprefix $(out_base)/.test-,$(tests))
-
-$(test): $(test_targets)
-$(test_targets): driver := $(driver)
-
-.PHONY: $(out_base)/.test-%
-$(out_base)/.test-%: $(driver) $(src_base)/test-%.xsd $(src_base)/test-%.std
- $(call message,test $(out_base)/$*,$(driver) $(src_base)/test-$*.xsd | diff -u $(src_base)/test-$*.std -)
-
-# Clean.
-#
-$(clean):
-
-# Dependencies.
-#
-$(call import,$(src_root)/tests/dump/makefile)
diff --git a/tests/schema/attribute-group/test-000.std b/tests/schema/attribute-group/test-000.std
deleted file mode 100644
index 61ad802..0000000
--- a/tests/schema/attribute-group/test-000.std
+++ /dev/null
@@ -1,17 +0,0 @@
-primary
-{
- namespace test
- {
- complex type
- {
- optional attribute foo2 http://www.w3.org/2001/XMLSchema#string
- required attribute bar2 http://www.w3.org/2001/XMLSchema#string
- optional attribute foo3 http://www.w3.org/2001/XMLSchema#string
- required attribute bar3 http://www.w3.org/2001/XMLSchema#string
- }
- attribute foo2 http://www.w3.org/2001/XMLSchema#string
- attribute bar2 http://www.w3.org/2001/XMLSchema#string
- attribute foo3 http://www.w3.org/2001/XMLSchema#string
- attribute bar3 http://www.w3.org/2001/XMLSchema#string
- }
-}
diff --git a/tests/schema/attribute-group/test-000.xsd b/tests/schema/attribute-group/test-000.xsd
deleted file mode 100644
index 9087a2b..0000000
--- a/tests/schema/attribute-group/test-000.xsd
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <!-- Multiple levels of forward reference. -->
-
- <complexType name="type">
- <attributeGroup ref="t:g1"/>
- </complexType>
-
- <attributeGroup name="g1">
- <attributeGroup ref="t:g2"/>
- <attributeGroup ref="t:g3"/>
- </attributeGroup>
-
- <attributeGroup name="g2">
- <attribute ref="t:foo2"/>
- <attribute ref="t:bar2" use="required"/>
- </attributeGroup>
-
- <attributeGroup name="g3">
- <attribute ref="t:foo3"/>
- <attribute ref="t:bar3" use="required"/>
- </attributeGroup>
-
- <attribute name="foo2" type="string"/>
- <attribute name="bar2" type="string"/>
-
- <attribute name="foo3" type="string"/>
- <attribute name="bar3" type="string"/>
-
-</schema>
diff --git a/tests/schema/attribute-group/test-001.std b/tests/schema/attribute-group/test-001.std
deleted file mode 100644
index 54a1e96..0000000
--- a/tests/schema/attribute-group/test-001.std
+++ /dev/null
@@ -1,12 +0,0 @@
-primary
-{
- namespace test
- {
- complex type
- {
- any-attribute 'any-attribute #1'
- optional attribute foo http://www.w3.org/2001/XMLSchema#string
- any-attribute 'any-attribute #0'
- }
- }
-}
diff --git a/tests/schema/attribute-group/test-001.xsd b/tests/schema/attribute-group/test-001.xsd
deleted file mode 100644
index dc44a70..0000000
--- a/tests/schema/attribute-group/test-001.xsd
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <!-- AnyAttribute in attribute groups. -->
-
- <complexType name="type">
- <attributeGroup ref="t:g1"/>
- <attributeGroup ref="t:g2"/>
- </complexType>
-
- <attributeGroup name="g1">
- <anyAttribute namespace="http://www.foo.com"/>
- </attributeGroup>
-
- <attributeGroup name="g2">
- <attribute name="foo" type="string"/>
- <anyAttribute namespace="http://www.bar.com"/>
- </attributeGroup>
-
-</schema>
diff --git a/tests/schema/buildfile b/tests/schema/buildfile
new file mode 100644
index 0000000..f3e5b9c
--- /dev/null
+++ b/tests/schema/buildfile
@@ -0,0 +1,6 @@
+# file : tests/schema/buildfile
+# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+import libs = libxsd-frontend%lib{xsd-frontend}
+
+exe{driver}: {hxx cxx}{*} $libs testscript{*}
diff --git a/tests/schema/default.testscript b/tests/schema/default.testscript
new file mode 100644
index 0000000..e8bcd23
--- /dev/null
+++ b/tests/schema/default.testscript
@@ -0,0 +1,99 @@
+# file : tests/schema/default.testscript
+# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+: qual
+:
+{
+ cat <<EOI >=test.xsd;
+ <?xml version="1.0"?>
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:t="test" xmlns:x="foo" targetNamespace="test">
+
+ <xs:complexType name="type">
+ <xs:sequence>
+ <xs:element name="e1" type="xs:int" default="123"/>
+ <xs:element name="e2" type="xs:int" fixed="456"/>
+
+ <xs:element name="e3" type="xs:QName" default="unqual"/>
+ <xs:element name="e4" type="xs:QName" fixed="t:foo"/>
+ <xs:element name="e5" type="xs:QName" default="x:bar"/>
+ </xs:sequence>
+ <xs:attribute name="a1" type="xs:int" default="123"/>
+ <xs:attribute name="a2" type="xs:int" fixed="456"/>
+
+ <xs:attribute name="a3" type="t:qname" default="x:bar"/>
+ </xs:complexType>
+
+ <xs:simpleType name="qname">
+ <xs:restriction base="xs:QName"/>
+ </xs:simpleType>
+
+ </xs:schema>
+ EOI
+
+ $* test.xsd >>EOO
+ primary
+ {
+ namespace test
+ {
+ complex type
+ {
+ element e1=123
+ element e2==456
+ element e3=unqual
+ element e4==test#t:foo
+ element e5=foo#x:bar
+ optional attribute a1=123 http://www.w3.org/2001/XMLSchema#int
+ optional attribute a2==456 http://www.w3.org/2001/XMLSchema#int
+ optional attribute a3=foo#x:bar test#qname
+ [1, 1] sequence
+ {
+ [1, 1] element e1=123 http://www.w3.org/2001/XMLSchema#int
+ [1, 1] element e2==456 http://www.w3.org/2001/XMLSchema#int
+ [1, 1] element e3=unqual http://www.w3.org/2001/XMLSchema#QName
+ [1, 1] element e4==test#t:foo http://www.w3.org/2001/XMLSchema#QName
+ [1, 1] element e5=foo#x:bar http://www.w3.org/2001/XMLSchema#QName
+ }
+ }
+ complex qname: http://www.w3.org/2001/XMLSchema#QName
+ {
+ }
+ }
+ }
+ EOO
+}
+
+: unqual
+:
+{
+ cat <<EOI >=test.xsd;
+ <?xml version="1.0"?>
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:t="test" xmlns="foo" targetNamespace="test">
+
+ <xs:complexType name="type">
+ <xs:sequence>
+ <xs:element name="e" type="xs:QName" default="unqual"/>
+ </xs:sequence>
+ <xs:attribute name="a" type="xs:QName" default="unqual"/>
+ </xs:complexType>
+
+ </xs:schema>
+ EOI
+
+ $* test.xsd >>EOO
+ primary
+ {
+ namespace test
+ {
+ complex type
+ {
+ element e=foo#unqual
+ optional attribute a=foo#unqual http://www.w3.org/2001/XMLSchema#QName
+ [1, 1] sequence
+ {
+ [1, 1] element e=foo#unqual http://www.w3.org/2001/XMLSchema#QName
+ }
+ }
+ }
+ }
+ EOO
+}
diff --git a/tests/schema/default/makefile b/tests/schema/default/makefile
deleted file mode 100644
index 3f5f31e..0000000
--- a/tests/schema/default/makefile
+++ /dev/null
@@ -1,33 +0,0 @@
-# file : tests/schema/default/makefile
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make
-
-tests := 000 001
-
-driver := $(out_root)/tests/dump/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Test.
-#
-test_targets := $(addprefix $(out_base)/.test-,$(tests))
-
-$(test): $(test_targets)
-$(test_targets): driver := $(driver)
-
-.PHONY: $(out_base)/.test-%
-$(out_base)/.test-%: $(driver) $(src_base)/test-%.xsd $(src_base)/test-%.std
- $(call message,test $(out_base)/$*,$(driver) --anonymous $(src_base)/test-$*.xsd | diff -u $(src_base)/test-$*.std -)
-
-# Clean.
-#
-$(clean):
-
-# Dependencies.
-#
-$(call import,$(src_root)/tests/dump/makefile)
diff --git a/tests/schema/default/test-000.std b/tests/schema/default/test-000.std
deleted file mode 100644
index efa1140..0000000
--- a/tests/schema/default/test-000.std
+++ /dev/null
@@ -1,28 +0,0 @@
-primary
-{
- namespace test
- {
- complex type
- {
- element e1=123
- element e2==456
- element e3=unqual
- element e4==test#t:foo
- element e5=foo#x:bar
- optional attribute a1=123 http://www.w3.org/2001/XMLSchema#int
- optional attribute a2==456 http://www.w3.org/2001/XMLSchema#int
- optional attribute a3=foo#x:bar test#qname
- [1, 1] sequence
- {
- [1, 1] element e1=123 http://www.w3.org/2001/XMLSchema#int
- [1, 1] element e2==456 http://www.w3.org/2001/XMLSchema#int
- [1, 1] element e3=unqual http://www.w3.org/2001/XMLSchema#QName
- [1, 1] element e4==test#t:foo http://www.w3.org/2001/XMLSchema#QName
- [1, 1] element e5=foo#x:bar http://www.w3.org/2001/XMLSchema#QName
- }
- }
- complex qname: http://www.w3.org/2001/XMLSchema#QName
- {
- }
- }
-}
diff --git a/tests/schema/default/test-000.xsd b/tests/schema/default/test-000.xsd
deleted file mode 100644
index bfaedc5..0000000
--- a/tests/schema/default/test-000.xsd
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0"?>
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:t="test" xmlns:x="foo" targetNamespace="test">
-
- <xs:complexType name="type">
- <xs:sequence>
- <xs:element name="e1" type="xs:int" default="123"/>
- <xs:element name="e2" type="xs:int" fixed="456"/>
-
- <xs:element name="e3" type="xs:QName" default="unqual"/>
- <xs:element name="e4" type="xs:QName" fixed="t:foo"/>
- <xs:element name="e5" type="xs:QName" default="x:bar"/>
- </xs:sequence>
- <xs:attribute name="a1" type="xs:int" default="123"/>
- <xs:attribute name="a2" type="xs:int" fixed="456"/>
-
- <xs:attribute name="a3" type="t:qname" default="x:bar"/>
- </xs:complexType>
-
- <xs:simpleType name="qname">
- <xs:restriction base="xs:QName"/>
- </xs:simpleType>
-
-</xs:schema>
diff --git a/tests/schema/default/test-001.std b/tests/schema/default/test-001.std
deleted file mode 100644
index 1b84a07..0000000
--- a/tests/schema/default/test-001.std
+++ /dev/null
@@ -1,15 +0,0 @@
-primary
-{
- namespace test
- {
- complex type
- {
- element e=foo#unqual
- optional attribute a=foo#unqual http://www.w3.org/2001/XMLSchema#QName
- [1, 1] sequence
- {
- [1, 1] element e=foo#unqual http://www.w3.org/2001/XMLSchema#QName
- }
- }
- }
-}
diff --git a/tests/schema/default/test-001.xsd b/tests/schema/default/test-001.xsd
deleted file mode 100644
index 5ee0507..0000000
--- a/tests/schema/default/test-001.xsd
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0"?>
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:t="test" xmlns="foo" targetNamespace="test">
-
- <xs:complexType name="type">
- <xs:sequence>
- <xs:element name="e" type="xs:QName" default="unqual"/>
- </xs:sequence>
- <xs:attribute name="a" type="xs:QName" default="unqual"/>
- </xs:complexType>
-
-</xs:schema>
diff --git a/tests/dump/driver.cxx b/tests/schema/driver.cxx
index dc87d59..09ef2e5 100644
--- a/tests/dump/driver.cxx
+++ b/tests/schema/driver.cxx
@@ -1,13 +1,13 @@
-// file : tests/dump/driver.cxx
+// file : tests/schema/driver.cxx
// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-#include <xsd-frontend/types.hxx>
-#include <xsd-frontend/parser.hxx>
-#include <xsd-frontend/transformations/anonymous.hxx>
-#include <xsd-frontend/transformations/enum-synthesis.hxx>
+#include <libxsd-frontend/types.hxx>
+#include <libxsd-frontend/parser.hxx>
+#include <libxsd-frontend/transformations/anonymous.hxx>
+#include <libxsd-frontend/transformations/enum-synthesis.hxx>
-#include <xsd-frontend/semantic-graph.hxx>
-#include <xsd-frontend/traversal.hxx>
+#include <libxsd-frontend/semantic-graph.hxx>
+#include <libxsd-frontend/traversal.hxx>
#include <iostream>
@@ -77,7 +77,7 @@ namespace
<< endl;
wcout << ind << "union " <<
- (u.named_p () ? u.name () : String ("<anonymous>")) << " ";
+ (u.named_p () ? u.name () : String ("<anonymous>"));
for (Type::ArgumentedIterator i (u.argumented_begin ());
i != u.argumented_end (); ++i)
@@ -85,7 +85,7 @@ namespace
SemanticGraph::Type& t (i->type ());
if (t.named_p ())
- wcout << ref_name (t) << " ";
+ wcout << " " << ref_name (t);
else
{
wcout << endl
@@ -579,7 +579,7 @@ main (int argc, char* argv[])
SemanticGraph::Path path (argv[i]);
Parser parser (true, false, true);
- auto_ptr<SemanticGraph::Schema> tu (parser.parse (path));
+ unique_ptr<SemanticGraph::Schema> tu (parser.parse (path));
//
//
diff --git a/tests/schema/element-group.testscript b/tests/schema/element-group.testscript
new file mode 100644
index 0000000..5fb385f
--- /dev/null
+++ b/tests/schema/element-group.testscript
@@ -0,0 +1,324 @@
+# file : tests/schema/element-group.testscript
+# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+: multiple-ref-levels
+:
+{
+ cat <<EOI >=test.xsd;
+ <?xml version="1.0"?>
+ <schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
+
+ <!-- Multiple levels of forward reference. -->
+
+ <complexType name="type">
+ <sequence>
+ <group ref="t:g1" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+
+ <group name="g1">
+ <choice>
+ <group ref="t:g2" minOccurs="0"/>
+ <group ref="t:g3" maxOccurs="unbounded"/>
+ </choice>
+ </group>
+
+ <group name="g2">
+ <choice>
+ <element ref="t:foo2"/>
+ <element ref="t:bar2" minOccurs="0"/>
+ </choice>
+ </group>
+
+ <group name="g3">
+ <choice>
+ <element ref="t:foo3" maxOccurs="unbounded"/>
+ <element ref="t:bar3" minOccurs="0" maxOccurs="unbounded"/>
+ </choice>
+ </group>
+
+ <element name="foo2" type="string"/>
+ <element name="bar2" type="string"/>
+
+ <element name="foo3" type="string"/>
+ <element name="bar3" type="string"/>
+
+ </schema>
+ EOI
+
+ $* test.xsd >>EOO
+ primary
+ {
+ namespace test
+ {
+ complex type
+ {
+ element foo2
+ element bar2
+ element foo3
+ element bar3
+ [1, 1] sequence
+ {
+ [0, unbounded] choice
+ {
+ [0, 1] choice
+ {
+ [1, 1] element foo2 http://www.w3.org/2001/XMLSchema#string
+ [0, 1] element bar2 http://www.w3.org/2001/XMLSchema#string
+ }
+ [1, unbounded] choice
+ {
+ [1, unbounded] element foo3 http://www.w3.org/2001/XMLSchema#string
+ [0, unbounded] element bar3 http://www.w3.org/2001/XMLSchema#string
+ }
+ }
+ }
+ }
+ element foo2 http://www.w3.org/2001/XMLSchema#string
+ element bar2 http://www.w3.org/2001/XMLSchema#string
+ element foo3 http://www.w3.org/2001/XMLSchema#string
+ element bar3 http://www.w3.org/2001/XMLSchema#string
+ }
+ }
+ EOO
+}
+
+: recursive-refs
+:
+{
+ cat <<EOI >=test.xsd;
+ <?xml version="1.0"?>
+ <schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
+
+ <!-- Recursive reference: g1->element->type->g1 -->
+
+ <complexType name="type">
+ <sequence>
+ <group ref="t:g1"/>
+ </sequence>
+ </complexType>
+
+ <group name="g1">
+ <choice>
+ <element name="foo">
+ <complexType>
+ <sequence>
+ <group ref="t:g1"/>
+ </sequence>
+ </complexType>
+ </element>
+ <element ref="t:bar"/>
+ </choice>
+ </group>
+
+ <element name="bar">
+ <complexType>
+ <sequence>
+ <group ref="t:g1"/>
+ </sequence>
+ </complexType>
+ </element>
+
+ </schema>
+ EOI
+
+ $* test.xsd >>EOO
+ primary
+ {
+ namespace test
+ {
+ complex type
+ {
+ element foo
+ element bar
+ [1, 1] sequence
+ {
+ [1, 1] choice
+ {
+ [1, 1] element foo
+ {
+ complex <anonymous>
+ {
+ element foo
+ element bar
+ [1, 1] sequence
+ {
+ [1, 1] choice
+ {
+ [1, 1] element foo
+ {
+ complex <recursive-anonymous>
+ }
+ [1, 1] element bar
+ {
+ complex <anonymous>
+ {
+ element foo
+ element bar
+ [1, 1] sequence
+ {
+ [1, 1] choice
+ {
+ [1, 1] element foo
+ {
+ complex <recursive-anonymous>
+ }
+ [1, 1] element bar
+ {
+ complex <recursive-anonymous>
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ [1, 1] element bar
+ {
+ complex <anonymous>
+ {
+ element foo
+ element bar
+ [1, 1] sequence
+ {
+ [1, 1] choice
+ {
+ [1, 1] element foo
+ {
+ complex <anonymous>
+ {
+ element foo
+ element bar
+ [1, 1] sequence
+ {
+ [1, 1] choice
+ {
+ [1, 1] element foo
+ {
+ complex <recursive-anonymous>
+ }
+ [1, 1] element bar
+ {
+ complex <recursive-anonymous>
+ }
+ }
+ }
+ }
+ }
+ [1, 1] element bar
+ {
+ complex <recursive-anonymous>
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ element bar
+ {
+ complex <anonymous>
+ {
+ element foo
+ element bar
+ [1, 1] sequence
+ {
+ [1, 1] choice
+ {
+ [1, 1] element foo
+ {
+ complex <anonymous>
+ {
+ element foo
+ element bar
+ [1, 1] sequence
+ {
+ [1, 1] choice
+ {
+ [1, 1] element foo
+ {
+ complex <recursive-anonymous>
+ }
+ [1, 1] element bar
+ {
+ complex <recursive-anonymous>
+ }
+ }
+ }
+ }
+ }
+ [1, 1] element bar
+ {
+ complex <recursive-anonymous>
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ EOO
+}
+
+: any
+:
+{
+ cat <<EOI >=test.xsd;
+ <?xml version="1.0"?>
+ <schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
+
+ <!-- Any in groups. -->
+
+ <complexType name="type">
+ <sequence>
+ <group ref="t:g1" minOccurs="0" maxOccurs="unbounded"/>
+ <group ref="t:g2" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+
+ <group name="g1">
+ <sequence>
+ <any namespace="http://www.foo.com"/>
+ </sequence>
+ </group>
+
+ <group name="g2">
+ <sequence>
+ <element name="foo" type="int"/>
+ <any namespace="http://www.bar.com"/>
+ </sequence>
+ </group>
+
+ </schema>
+ EOI
+
+ $* test.xsd >>EOO
+ primary
+ {
+ namespace test
+ {
+ complex type
+ {
+ any 'any #1'
+ element foo
+ any 'any #0'
+ [1, 1] sequence
+ {
+ [0, unbounded] sequence
+ {
+ [1, 1] any 'any #1'
+ }
+ [0, unbounded] sequence
+ {
+ [1, 1] element foo http://www.w3.org/2001/XMLSchema#int
+ [1, 1] any 'any #0'
+ }
+ }
+ }
+ }
+ }
+ EOO
+}
diff --git a/tests/schema/element-group/makefile b/tests/schema/element-group/makefile
deleted file mode 100644
index 41c9afe..0000000
--- a/tests/schema/element-group/makefile
+++ /dev/null
@@ -1,33 +0,0 @@
-# file : tests/schema/element-group/makefile
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make
-
-tests := 000 001 002
-
-driver := $(out_root)/tests/dump/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Test.
-#
-test_targets := $(addprefix $(out_base)/.test-,$(tests))
-
-$(test): $(test_targets)
-$(test_targets): driver := $(driver)
-
-.PHONY: $(out_base)/.test-%
-$(out_base)/.test-%: $(driver) $(src_base)/test-%.xsd $(src_base)/test-%.std
- $(call message,test $(out_base)/$*,$(driver) $(src_base)/test-$*.xsd | diff -u $(src_base)/test-$*.std -)
-
-# Clean.
-#
-$(clean):
-
-# Dependencies.
-#
-$(call import,$(src_root)/tests/dump/makefile)
diff --git a/tests/schema/element-group/test-000.std b/tests/schema/element-group/test-000.std
deleted file mode 100644
index 1652b68..0000000
--- a/tests/schema/element-group/test-000.std
+++ /dev/null
@@ -1,33 +0,0 @@
-primary
-{
- namespace test
- {
- complex type
- {
- element foo2
- element bar2
- element foo3
- element bar3
- [1, 1] sequence
- {
- [0, unbounded] choice
- {
- [0, 1] choice
- {
- [1, 1] element foo2 http://www.w3.org/2001/XMLSchema#string
- [0, 1] element bar2 http://www.w3.org/2001/XMLSchema#string
- }
- [1, unbounded] choice
- {
- [1, unbounded] element foo3 http://www.w3.org/2001/XMLSchema#string
- [0, unbounded] element bar3 http://www.w3.org/2001/XMLSchema#string
- }
- }
- }
- }
- element foo2 http://www.w3.org/2001/XMLSchema#string
- element bar2 http://www.w3.org/2001/XMLSchema#string
- element foo3 http://www.w3.org/2001/XMLSchema#string
- element bar3 http://www.w3.org/2001/XMLSchema#string
- }
-}
diff --git a/tests/schema/element-group/test-000.xsd b/tests/schema/element-group/test-000.xsd
deleted file mode 100644
index 1864b28..0000000
--- a/tests/schema/element-group/test-000.xsd
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <!-- Multiple levels of forward reference. -->
-
- <complexType name="type">
- <sequence>
- <group ref="t:g1" minOccurs="0" maxOccurs="unbounded"/>
- </sequence>
- </complexType>
-
- <group name="g1">
- <choice>
- <group ref="t:g2" minOccurs="0"/>
- <group ref="t:g3" maxOccurs="unbounded"/>
- </choice>
- </group>
-
- <group name="g2">
- <choice>
- <element ref="t:foo2"/>
- <element ref="t:bar2" minOccurs="0"/>
- </choice>
- </group>
-
- <group name="g3">
- <choice>
- <element ref="t:foo3" maxOccurs="unbounded"/>
- <element ref="t:bar3" minOccurs="0" maxOccurs="unbounded"/>
- </choice>
- </group>
-
- <element name="foo2" type="string"/>
- <element name="bar2" type="string"/>
-
- <element name="foo3" type="string"/>
- <element name="bar3" type="string"/>
-
-</schema>
diff --git a/tests/schema/element-group/test-001.std b/tests/schema/element-group/test-001.std
deleted file mode 100644
index ae8c1fc..0000000
--- a/tests/schema/element-group/test-001.std
+++ /dev/null
@@ -1,137 +0,0 @@
-primary
-{
- namespace test
- {
- complex type
- {
- element foo
- element bar
- [1, 1] sequence
- {
- [1, 1] choice
- {
- [1, 1] element foo
- {
- complex <anonymous>
- {
- element foo
- element bar
- [1, 1] sequence
- {
- [1, 1] choice
- {
- [1, 1] element foo
- {
- complex <recursive-anonymous>
- }
- [1, 1] element bar
- {
- complex <anonymous>
- {
- element foo
- element bar
- [1, 1] sequence
- {
- [1, 1] choice
- {
- [1, 1] element foo
- {
- complex <recursive-anonymous>
- }
- [1, 1] element bar
- {
- complex <recursive-anonymous>
- }
- }
- }
- }
- }
- }
- }
- }
- }
- [1, 1] element bar
- {
- complex <anonymous>
- {
- element foo
- element bar
- [1, 1] sequence
- {
- [1, 1] choice
- {
- [1, 1] element foo
- {
- complex <anonymous>
- {
- element foo
- element bar
- [1, 1] sequence
- {
- [1, 1] choice
- {
- [1, 1] element foo
- {
- complex <recursive-anonymous>
- }
- [1, 1] element bar
- {
- complex <recursive-anonymous>
- }
- }
- }
- }
- }
- [1, 1] element bar
- {
- complex <recursive-anonymous>
- }
- }
- }
- }
- }
- }
- }
- }
- element bar
- {
- complex <anonymous>
- {
- element foo
- element bar
- [1, 1] sequence
- {
- [1, 1] choice
- {
- [1, 1] element foo
- {
- complex <anonymous>
- {
- element foo
- element bar
- [1, 1] sequence
- {
- [1, 1] choice
- {
- [1, 1] element foo
- {
- complex <recursive-anonymous>
- }
- [1, 1] element bar
- {
- complex <recursive-anonymous>
- }
- }
- }
- }
- }
- [1, 1] element bar
- {
- complex <recursive-anonymous>
- }
- }
- }
- }
- }
- }
-}
diff --git a/tests/schema/element-group/test-001.xsd b/tests/schema/element-group/test-001.xsd
deleted file mode 100644
index c6059af..0000000
--- a/tests/schema/element-group/test-001.xsd
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <!-- Recursive reference: g1->element->type->g1 -->
-
- <complexType name="type">
- <sequence>
- <group ref="t:g1"/>
- </sequence>
- </complexType>
-
- <group name="g1">
- <choice>
- <element name="foo">
- <complexType>
- <sequence>
- <group ref="t:g1"/>
- </sequence>
- </complexType>
- </element>
- <element ref="t:bar"/>
- </choice>
- </group>
-
- <element name="bar">
- <complexType>
- <sequence>
- <group ref="t:g1"/>
- </sequence>
- </complexType>
- </element>
-
-</schema>
diff --git a/tests/schema/element-group/test-002.std b/tests/schema/element-group/test-002.std
deleted file mode 100644
index d2c60fe..0000000
--- a/tests/schema/element-group/test-002.std
+++ /dev/null
@@ -1,24 +0,0 @@
-primary
-{
- namespace test
- {
- complex type
- {
- any 'any #1'
- element foo
- any 'any #0'
- [1, 1] sequence
- {
- [0, unbounded] sequence
- {
- [1, 1] any 'any #1'
- }
- [0, unbounded] sequence
- {
- [1, 1] element foo http://www.w3.org/2001/XMLSchema#int
- [1, 1] any 'any #0'
- }
- }
- }
- }
-}
diff --git a/tests/schema/element-group/test-002.xsd b/tests/schema/element-group/test-002.xsd
deleted file mode 100644
index bc1bd70..0000000
--- a/tests/schema/element-group/test-002.xsd
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <!-- Any in groups. -->
-
- <complexType name="type">
- <sequence>
- <group ref="t:g1" minOccurs="0" maxOccurs="unbounded"/>
- <group ref="t:g2" minOccurs="0" maxOccurs="unbounded"/>
- </sequence>
- </complexType>
-
- <group name="g1">
- <sequence>
- <any namespace="http://www.foo.com"/>
- </sequence>
- </group>
-
- <group name="g2">
- <sequence>
- <element name="foo" type="int"/>
- <any namespace="http://www.bar.com"/>
- </sequence>
- </group>
-
-</schema>
diff --git a/tests/schema/enumeration.testscript b/tests/schema/enumeration.testscript
new file mode 100644
index 0000000..5313611
--- /dev/null
+++ b/tests/schema/enumeration.testscript
@@ -0,0 +1,148 @@
+# file : tests/schema/enumeration.testscript
+# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+test.options += --enum-synthesis
+
+: synthesis
+:
+{
+ cat <<EOI >=test.xsd;
+ <?xml version="1.0"?>
+ <schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
+
+ <!-- Enumeration synthesis -->
+
+ <simpleType name="common-base">
+ <restriction base="string"/>
+ </simpleType>
+
+ <simpleType name="base">
+ <restriction base="t:common-base"/>
+ </simpleType>
+
+ <simpleType name="one">
+ <restriction base="t:base">
+ <enumeration value="romance">
+ <annotation>
+ <documentation>romance documentation</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="fiction"/>
+ <enumeration value="horror"/>
+ </restriction>
+ </simpleType>
+
+ <simpleType name="two">
+ <restriction base="t:common-base">
+ <enumeration value="horror"/>
+ <enumeration value="history"/>
+ <enumeration value="philosophy"/>
+ </restriction>
+ </simpleType>
+
+ <simpleType name="three">
+ <restriction base="anyURI">
+ <enumeration value="foo"/>
+ <enumeration value="bar"/>
+ </restriction>
+ </simpleType>
+
+ <simpleType name="union0">
+ <union memberTypes="t:one t:two t:union1"/>
+ </simpleType>
+
+ <simpleType name="union1">
+ <annotation>
+ <documentation>union1 documentation</documentation>
+ </annotation>
+ <union memberTypes="t:one t:two"/>
+ </simpleType>
+
+ <simpleType name="union2">
+ <union memberTypes="t:one t:union1 t:common-base"/>
+ </simpleType>
+
+ <simpleType name="union3">
+ <union memberTypes="t:one t:three"/>
+ </simpleType>
+
+ <complexType name="complex1">
+ <sequence>
+ <element name="a" type="t:union1"/>
+ </sequence>
+ </complexType>
+
+ <complexType name="complex2">
+ <simpleContent>
+ <extension base="t:union1"/>
+ </simpleContent>
+ </complexType>
+
+ </schema>
+ EOI
+
+ $* test.xsd >>EOO
+ primary
+ {
+ namespace test
+ {
+ complex common-base: http://www.w3.org/2001/XMLSchema#string
+ {
+ }
+ complex base: test#common-base
+ {
+ }
+ enumeration one: test#base
+ {
+ <romance documentation>
+ enumerator romance
+ enumerator fiction
+ enumerator horror
+ }
+ enumeration two: test#common-base
+ {
+ enumerator horror
+ enumerator history
+ enumerator philosophy
+ }
+ enumeration three: http://www.w3.org/2001/XMLSchema#anyURI
+ {
+ enumerator foo
+ enumerator bar
+ }
+ enumeration union0: test#common-base
+ {
+ <romance documentation>
+ enumerator romance
+ enumerator fiction
+ enumerator horror
+ enumerator history
+ enumerator philosophy
+ }
+ <union1 documentation>
+ enumeration union1: test#common-base
+ {
+ <romance documentation>
+ enumerator romance
+ enumerator fiction
+ enumerator horror
+ enumerator history
+ enumerator philosophy
+ }
+ union union2 test#one test#union1 test#common-base
+ union union3 test#one test#three
+ complex complex1
+ {
+ element a
+ [1, 1] sequence
+ {
+ [1, 1] element a test#union1
+ }
+ }
+ complex complex2: test#union1
+ {
+ }
+ }
+ }
+ EOO
+}
diff --git a/tests/schema/enumeration/makefile b/tests/schema/enumeration/makefile
deleted file mode 100644
index 8981773..0000000
--- a/tests/schema/enumeration/makefile
+++ /dev/null
@@ -1,33 +0,0 @@
-# file : tests/schema/enumeration/makefile
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make
-
-tests := 000
-
-driver := $(out_root)/tests/dump/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Test.
-#
-test_targets := $(addprefix $(out_base)/.test-,$(tests))
-
-$(test): $(test_targets)
-$(test_targets): driver := $(driver)
-
-.PHONY: $(out_base)/.test-%
-$(out_base)/.test-%: $(driver) $(src_base)/test-%.xsd $(src_base)/test-%.std
- $(call message,test $(out_base)/$*,$(driver) --enum-synthesis $(src_base)/test-$*.xsd | diff -u $(src_base)/test-$*.std -)
-
-# Clean.
-#
-$(clean):
-
-# Dependencies.
-#
-$(call import,$(src_root)/tests/dump/makefile)
diff --git a/tests/schema/enumeration/test-000.std b/tests/schema/enumeration/test-000.std
deleted file mode 100644
index 64e3065..0000000
--- a/tests/schema/enumeration/test-000.std
+++ /dev/null
@@ -1,62 +0,0 @@
-primary
-{
- namespace test
- {
- complex common-base: http://www.w3.org/2001/XMLSchema#string
- {
- }
- complex base: test#common-base
- {
- }
- enumeration one: test#base
- {
- <romance documentation>
- enumerator romance
- enumerator fiction
- enumerator horror
- }
- enumeration two: test#common-base
- {
- enumerator horror
- enumerator history
- enumerator philosophy
- }
- enumeration three: http://www.w3.org/2001/XMLSchema#anyURI
- {
- enumerator foo
- enumerator bar
- }
- enumeration union0: test#common-base
- {
- <romance documentation>
- enumerator romance
- enumerator fiction
- enumerator horror
- enumerator history
- enumerator philosophy
- }
- <union1 documentation>
- enumeration union1: test#common-base
- {
- <romance documentation>
- enumerator romance
- enumerator fiction
- enumerator horror
- enumerator history
- enumerator philosophy
- }
- union union2 test#one test#union1 test#common-base
- union union3 test#one test#three
- complex complex1
- {
- element a
- [1, 1] sequence
- {
- [1, 1] element a test#union1
- }
- }
- complex complex2: test#union1
- {
- }
- }
-}
diff --git a/tests/schema/enumeration/test-000.xsd b/tests/schema/enumeration/test-000.xsd
deleted file mode 100644
index 08539bf..0000000
--- a/tests/schema/enumeration/test-000.xsd
+++ /dev/null
@@ -1,72 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <!-- Enumeration synthesis -->
-
- <simpleType name="common-base">
- <restriction base="string"/>
- </simpleType>
-
- <simpleType name="base">
- <restriction base="t:common-base"/>
- </simpleType>
-
- <simpleType name="one">
- <restriction base="t:base">
- <enumeration value="romance">
- <annotation>
- <documentation>romance documentation</documentation>
- </annotation>
- </enumeration>
- <enumeration value="fiction"/>
- <enumeration value="horror"/>
- </restriction>
- </simpleType>
-
- <simpleType name="two">
- <restriction base="t:common-base">
- <enumeration value="horror"/>
- <enumeration value="history"/>
- <enumeration value="philosophy"/>
- </restriction>
- </simpleType>
-
- <simpleType name="three">
- <restriction base="anyURI">
- <enumeration value="foo"/>
- <enumeration value="bar"/>
- </restriction>
- </simpleType>
-
- <simpleType name="union0">
- <union memberTypes="t:one t:two t:union1"/>
- </simpleType>
-
- <simpleType name="union1">
- <annotation>
- <documentation>union1 documentation</documentation>
- </annotation>
- <union memberTypes="t:one t:two"/>
- </simpleType>
-
- <simpleType name="union2">
- <union memberTypes="t:one t:union1 t:common-base"/>
- </simpleType>
-
- <simpleType name="union3">
- <union memberTypes="t:one t:three"/>
- </simpleType>
-
- <complexType name="complex1">
- <sequence>
- <element name="a" type="t:union1"/>
- </sequence>
- </complexType>
-
- <complexType name="complex2">
- <simpleContent>
- <extension base="t:union1"/>
- </simpleContent>
- </complexType>
-
-</schema>
diff --git a/tests/schema/makefile b/tests/schema/makefile
deleted file mode 100644
index b2c2fc3..0000000
--- a/tests/schema/makefile
+++ /dev/null
@@ -1,23 +0,0 @@
-# file : tests/schema
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../build/bootstrap.make
-
-tests := \
-annotation \
-anonymous \
-attribute-group \
-default \
-element-group \
-enumeration \
-union
-
-default := $(out_base)/
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-$(default): $(addprefix $(out_base)/,$(addsuffix /,$(tests)))
-$(test): $(addprefix $(out_base)/,$(addsuffix /.test,$(tests)))
-$(clean): $(addprefix $(out_base)/,$(addsuffix /.clean,$(tests)))
-
-$(foreach t,$(tests),$(call import,$(src_base)/$t/makefile))
diff --git a/tests/schema/union.testscript b/tests/schema/union.testscript
new file mode 100644
index 0000000..3294ee8
--- /dev/null
+++ b/tests/schema/union.testscript
@@ -0,0 +1,135 @@
+# file : tests/schema/union.testscript
+# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+: basic
+:
+{
+ cat <<EOI >=test.xsd;
+ <?xml version="1.0"?>
+ <schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
+
+ <simpleType name="u1">
+ <union memberTypes="int string"/>
+ </simpleType>
+
+ <simpleType name="u2">
+ <union>
+ <simpleType>
+ <restriction base="token">
+ <enumeration value="one"/>
+ </restriction>
+ </simpleType>
+ <simpleType>
+ <restriction base="string">
+ <enumeration value="two"/>
+ </restriction>
+ </simpleType>
+ </union>
+ </simpleType>
+
+ <simpleType name="u3">
+ <union memberTypes=" int
+
+ t:u1 ">
+ <simpleType>
+ <restriction base="token">
+ <enumeration value="one"/>
+ </restriction>
+ </simpleType>
+ <simpleType>
+ <restriction base="string">
+ <enumeration value="two"/>
+ </restriction>
+ </simpleType>
+ </union>
+ </simpleType>
+
+ </schema>
+ EOI
+
+ $* test.xsd >>EOO
+ primary
+ {
+ namespace test
+ {
+ union u1 http://www.w3.org/2001/XMLSchema#int http://www.w3.org/2001/XMLSchema#string
+ union u2
+ {
+ enumeration <anonymous>: http://www.w3.org/2001/XMLSchema#token
+ {
+ enumerator one
+ }
+ }
+
+ {
+ enumeration <anonymous>: http://www.w3.org/2001/XMLSchema#string
+ {
+ enumerator two
+ }
+ }
+
+ union u3 http://www.w3.org/2001/XMLSchema#int test#u1
+ {
+ enumeration <anonymous>: http://www.w3.org/2001/XMLSchema#token
+ {
+ enumerator one
+ }
+ }
+
+ {
+ enumeration <anonymous>: http://www.w3.org/2001/XMLSchema#string
+ {
+ enumerator two
+ }
+ }
+
+ }
+ }
+ EOO
+}
+
+: anonymous
+:
+{
+ cat <<EOI >=test.xsd;
+ <?xml version="1.0"?>
+ <schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
+
+ <!-- Test resolution of anonymous argument types. -->
+
+ <simpleType name="list">
+ <list>
+ <simpleType>
+ <union memberTypes="int t:enum"/>
+ </simpleType>
+ </list>
+ </simpleType>
+
+ <simpleType name="enum">
+ <restriction base="string">
+ <enumeration value="male"/>
+ <enumeration value="female"/>
+ </restriction>
+ </simpleType>
+
+ </schema>
+ EOI
+
+ $* test.xsd >>EOO
+ primary
+ {
+ namespace test
+ {
+ list list
+ {
+ union <anonymous> http://www.w3.org/2001/XMLSchema#int test#enum
+ }
+ enumeration enum: http://www.w3.org/2001/XMLSchema#string
+ {
+ enumerator male
+ enumerator female
+ }
+ }
+ }
+ EOO
+}
diff --git a/tests/schema/union/makefile b/tests/schema/union/makefile
deleted file mode 100644
index a8a1ca6..0000000
--- a/tests/schema/union/makefile
+++ /dev/null
@@ -1,33 +0,0 @@
-# file : tests/schema/union/makefile
-# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make
-
-tests := 000 001
-
-driver := $(out_root)/tests/dump/driver
-test := $(out_base)/.test
-clean := $(out_base)/.clean
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Test.
-#
-test_targets := $(addprefix $(out_base)/.test-,$(tests))
-
-$(test): $(test_targets)
-$(test_targets): driver := $(driver)
-
-.PHONY: $(out_base)/.test-%
-$(out_base)/.test-%: $(driver) $(src_base)/test-%.xsd $(src_base)/test-%.std
- $(call message,test $(out_base)/$*,$(driver) $(src_base)/test-$*.xsd | diff -u $(src_base)/test-$*.std -)
-
-# Clean.
-#
-$(clean):
-
-# Dependencies.
-#
-$(call import,$(src_root)/tests/dump/makefile)
diff --git a/tests/schema/union/test-000.std b/tests/schema/union/test-000.std
deleted file mode 100644
index 6f95b0c..0000000
--- a/tests/schema/union/test-000.std
+++ /dev/null
@@ -1,37 +0,0 @@
-primary
-{
- namespace test
- {
- union u1 http://www.w3.org/2001/XMLSchema#int http://www.w3.org/2001/XMLSchema#string
- union u2
- {
- enumeration <anonymous>: http://www.w3.org/2001/XMLSchema#token
- {
- enumerator one
- }
- }
-
- {
- enumeration <anonymous>: http://www.w3.org/2001/XMLSchema#string
- {
- enumerator two
- }
- }
-
- union u3 http://www.w3.org/2001/XMLSchema#int test#u1
- {
- enumeration <anonymous>: http://www.w3.org/2001/XMLSchema#token
- {
- enumerator one
- }
- }
-
- {
- enumeration <anonymous>: http://www.w3.org/2001/XMLSchema#string
- {
- enumerator two
- }
- }
-
- }
-}
diff --git a/tests/schema/union/test-000.xsd b/tests/schema/union/test-000.xsd
deleted file mode 100644
index 99535de..0000000
--- a/tests/schema/union/test-000.xsd
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <simpleType name="u1">
- <union memberTypes="int string"/>
- </simpleType>
-
- <simpleType name="u2">
- <union>
- <simpleType>
- <restriction base="token">
- <enumeration value="one"/>
- </restriction>
- </simpleType>
- <simpleType>
- <restriction base="string">
- <enumeration value="two"/>
- </restriction>
- </simpleType>
- </union>
- </simpleType>
-
- <simpleType name="u3">
- <union memberTypes=" int
-
-t:u1 ">
- <simpleType>
- <restriction base="token">
- <enumeration value="one"/>
- </restriction>
- </simpleType>
- <simpleType>
- <restriction base="string">
- <enumeration value="two"/>
- </restriction>
- </simpleType>
- </union>
- </simpleType>
-
-</schema>
diff --git a/tests/schema/union/test-001.std b/tests/schema/union/test-001.std
deleted file mode 100644
index f407b30..0000000
--- a/tests/schema/union/test-001.std
+++ /dev/null
@@ -1,15 +0,0 @@
-primary
-{
- namespace test
- {
- list list
- {
- union <anonymous> http://www.w3.org/2001/XMLSchema#int test#enum
- }
- enumeration enum: http://www.w3.org/2001/XMLSchema#string
- {
- enumerator male
- enumerator female
- }
- }
-}
diff --git a/tests/schema/union/test-001.xsd b/tests/schema/union/test-001.xsd
deleted file mode 100644
index 00fd8ce..0000000
--- a/tests/schema/union/test-001.xsd
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
-
- <!-- Test resolution of anonymous argument types. -->
-
- <simpleType name="list">
- <list>
- <simpleType>
- <union memberTypes="int t:enum"/>
- </simpleType>
- </list>
- </simpleType>
-
- <simpleType name="enum">
- <restriction base="string">
- <enumeration value="male"/>
- <enumeration value="female"/>
- </restriction>
- </simpleType>
-
-</schema>