summaryrefslogtreecommitdiff
path: root/xsd-tests/cxx/tree/enumeration/inheritance
diff options
context:
space:
mode:
authorKaren Arutyunov <karen@codesynthesis.com>2020-12-18 18:48:46 +0300
committerKaren Arutyunov <karen@codesynthesis.com>2021-02-25 13:45:48 +0300
commit5e527213a2430bb3018e5eebd909aef294edf9b5 (patch)
tree94de33c82080b53d9a9e300170f6d221d89078f4 /xsd-tests/cxx/tree/enumeration/inheritance
parent7420f85ea19b0562ffdd8123442f32bc8bac1267 (diff)
Switch to build2
Diffstat (limited to 'xsd-tests/cxx/tree/enumeration/inheritance')
-rw-r--r--xsd-tests/cxx/tree/enumeration/inheritance/buildfile23
-rw-r--r--xsd-tests/cxx/tree/enumeration/inheritance/driver.cxx53
-rw-r--r--xsd-tests/cxx/tree/enumeration/inheritance/output1
-rw-r--r--xsd-tests/cxx/tree/enumeration/inheritance/test.xml3
-rw-r--r--xsd-tests/cxx/tree/enumeration/inheritance/test.xsd22
5 files changed, 102 insertions, 0 deletions
diff --git a/xsd-tests/cxx/tree/enumeration/inheritance/buildfile b/xsd-tests/cxx/tree/enumeration/inheritance/buildfile
new file mode 100644
index 0000000..184c95c
--- /dev/null
+++ b/xsd-tests/cxx/tree/enumeration/inheritance/buildfile
@@ -0,0 +1,23 @@
+# file : cxx/tree/enumeration/inheritance/buildfile
+# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+import libs = libxsd%lib{xsd}
+import libs += libxerces-c%lib{xerces-c}
+
+exe{driver}: {hxx cxx}{* -test} {hxx ixx cxx}{test} $libs
+
+exe{driver}: xml{test}: test.input = true
+exe{driver}: file{output}: test.stdout = true
+
+<{hxx ixx cxx}{test}>: xsd{test} $xsd
+{{
+ diag xsd ($<[0]) # @@ TMP
+
+ $xsd cxx-tree --std c++11 \
+ --generate-inline \
+ --generate-ostream \
+ --output-dir $out_base \
+ $path($<[0])
+}}
+
+cxx.poptions =+ "-I$out_base"
diff --git a/xsd-tests/cxx/tree/enumeration/inheritance/driver.cxx b/xsd-tests/cxx/tree/enumeration/inheritance/driver.cxx
new file mode 100644
index 0000000..b517b1f
--- /dev/null
+++ b/xsd-tests/cxx/tree/enumeration/inheritance/driver.cxx
@@ -0,0 +1,53 @@
+// file : cxx/tree/enumeration/inheritance/driver.cxx
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+// Insert test description here.
+//
+
+#include <memory> // std::auto_ptr/unique_ptr
+#include <cassert>
+#include <iostream>
+
+#include "test.hxx"
+
+using namespace std;
+using namespace test;
+
+int
+main (int argc, char* argv[])
+{
+ if (argc != 2)
+ {
+ cerr << "usage: " << argv[0] << " test.xml" << endl;
+ return 1;
+ }
+
+ try
+ {
+ XSD_AUTO_PTR<top_bottom> r (root (argv[1]));
+
+ switch (*r)
+ {
+ case top_bottom::top:
+ {
+ cout << "top" << endl;
+ break;
+ }
+ case top_bottom::bottom:
+ {
+ cout << "bottom" << endl;
+ break;
+ }
+ default: // Suppress warning.
+ {
+ assert (false);
+ break;
+ }
+ }
+ }
+ catch (xml_schema::exception const& e)
+ {
+ cerr << e << endl;
+ return 1;
+ }
+}
diff --git a/xsd-tests/cxx/tree/enumeration/inheritance/output b/xsd-tests/cxx/tree/enumeration/inheritance/output
new file mode 100644
index 0000000..fef12e2
--- /dev/null
+++ b/xsd-tests/cxx/tree/enumeration/inheritance/output
@@ -0,0 +1 @@
+bottom
diff --git a/xsd-tests/cxx/tree/enumeration/inheritance/test.xml b/xsd-tests/cxx/tree/enumeration/inheritance/test.xml
new file mode 100644
index 0000000..1de9043
--- /dev/null
+++ b/xsd-tests/cxx/tree/enumeration/inheritance/test.xml
@@ -0,0 +1,3 @@
+<t:root xmlns:t="test"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="test test.xsd">bottom</t:root>
diff --git a/xsd-tests/cxx/tree/enumeration/inheritance/test.xsd b/xsd-tests/cxx/tree/enumeration/inheritance/test.xsd
new file mode 100644
index 0000000..cf2eeb1
--- /dev/null
+++ b/xsd-tests/cxx/tree/enumeration/inheritance/test.xsd
@@ -0,0 +1,22 @@
+<?xml version="1.0"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">
+
+ <simpleType name="side">
+ <restriction base="string">
+ <enumeration value="top"/>
+ <enumeration value="left"/>
+ <enumeration value="bottom"/>
+ <enumeration value="right"/>
+ </restriction>
+ </simpleType>
+
+ <simpleType name="top-bottom">
+ <restriction base="t:side">
+ <enumeration value="top"/>
+ <enumeration value="bottom"/>
+ </restriction>
+ </simpleType>
+
+ <element name="root" type="t:top-bottom"/>
+
+</schema>