From 5e527213a2430bb3018e5eebd909aef294edf9b5 Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Fri, 18 Dec 2020 18:48:46 +0300 Subject: Switch to build2 --- libxsd-tests/cxx/parser/expat/basic/buildfile | 7 ++ libxsd-tests/cxx/parser/expat/basic/driver.cxx | 124 ++++++++++++++++++++++++ libxsd-tests/cxx/parser/expat/basic/testscript | 41 ++++++++ libxsd-tests/cxx/parser/xerces/basic/buildfile | 7 ++ libxsd-tests/cxx/parser/xerces/basic/driver.cxx | 124 ++++++++++++++++++++++++ libxsd-tests/cxx/parser/xerces/basic/testscript | 41 ++++++++ libxsd-tests/cxx/tree/basic/buildfile | 7 ++ libxsd-tests/cxx/tree/basic/driver.cxx | 65 +++++++++++++ libxsd-tests/cxx/tree/basic/testscript | 73 ++++++++++++++ 9 files changed, 489 insertions(+) create mode 100644 libxsd-tests/cxx/parser/expat/basic/buildfile create mode 100644 libxsd-tests/cxx/parser/expat/basic/driver.cxx create mode 100644 libxsd-tests/cxx/parser/expat/basic/testscript create mode 100644 libxsd-tests/cxx/parser/xerces/basic/buildfile create mode 100644 libxsd-tests/cxx/parser/xerces/basic/driver.cxx create mode 100644 libxsd-tests/cxx/parser/xerces/basic/testscript create mode 100644 libxsd-tests/cxx/tree/basic/buildfile create mode 100644 libxsd-tests/cxx/tree/basic/driver.cxx create mode 100644 libxsd-tests/cxx/tree/basic/testscript (limited to 'libxsd-tests/cxx') diff --git a/libxsd-tests/cxx/parser/expat/basic/buildfile b/libxsd-tests/cxx/parser/expat/basic/buildfile new file mode 100644 index 0000000..86279d4 --- /dev/null +++ b/libxsd-tests/cxx/parser/expat/basic/buildfile @@ -0,0 +1,7 @@ +# file : cxx/parser/expat/basic/buildfile +# license : GNU GPL v2 + exceptions; see accompanying LICENSE file + +import libs = libxsd%lib{xsd} +import libs += libexpat%lib{expat} + +exe{driver}: cxx{driver} $libs testscript diff --git a/libxsd-tests/cxx/parser/expat/basic/driver.cxx b/libxsd-tests/cxx/parser/expat/basic/driver.cxx new file mode 100644 index 0000000..f601e7a --- /dev/null +++ b/libxsd-tests/cxx/parser/expat/basic/driver.cxx @@ -0,0 +1,124 @@ +// file : cxx/parser/expat/basic/driver.cxx +// copyright : GNU GPL v2 + exceptions; see accompanying LICENSE file + +#include +#include + +// Define XSD_CXX11 since we include libxsd headers directly. +// +#ifdef _MSC_VER +# if _MSC_VER >= 1600 // VC++10 and later have C++11 always enabled. +# define XSD_CXX11 +# endif +#else +# if defined(__GXX_EXPERIMENTAL_CXX0X__) || __cplusplus >= 201103L +# define XSD_CXX11 +# endif +#endif + +#include // XSD_UNUSED +#include + +#include + +#include +#include +#include + +using namespace std; +using namespace xsd::cxx; + +typedef parser::non_validating::string_pskel string_pskel; + +class hello_pimpl: public parser::non_validating::complex_content +{ +public: + hello_pimpl (string_pskel& greeting, string_pskel& name) + : greeting_parser_ (&greeting), + name_parser_ (&name) {} + +private: + virtual bool + _start_element_impl (const ro_string&, + const ro_string&, + const ro_string*); + + virtual bool + _end_element_impl (const ro_string&, const ro_string&); + + string_pskel* greeting_parser_; + string_pskel* name_parser_; +}; + +bool hello_pimpl:: +_start_element_impl (const ro_string& ns, + const ro_string& n, + const ro_string* t) +{ + XSD_UNUSED (t); + + if (complex_content::_start_element_impl (ns, n, t)) + return true; + + if (n == "greeting" && ns.empty ()) + { + context_.top ().parser_ = greeting_parser_; + + if (greeting_parser_) + greeting_parser_->pre (); + + return true; + } + + if (n == "name" && ns.empty ()) + { + context_.top ().parser_ = name_parser_; + + if (name_parser_) + name_parser_->pre (); + + return true; + } + + return false; +} + +bool hello_pimpl:: +_end_element_impl (const ro_string& ns, const ro_string& n) +{ + if (complex_content::_end_element_impl (ns, n)) + return true; + + if (n == "greeting" && ns.empty ()) + { + cout << n << ' ' << greeting_parser_->post_string () << endl; + return true; + } + + if (n == "name" && ns.empty ()) + { + cout << n << ' ' << name_parser_->post_string () << endl; + return true; + } + + return false; +} + + +// Usage: argv[0] +// +// Parse the specified XML file using the event-driven skeleton-based parser +// and print the element names and values to stdout. +// +int +main (int argc, char* argv[]) +{ + assert (argc == 2); + + parser::non_validating::string_pimpl string_p; + hello_pimpl hello_p (string_p, string_p); + + parser::expat::document doc_p (hello_p, "hello"); + + doc_p.parse (argv[1]); +} diff --git a/libxsd-tests/cxx/parser/expat/basic/testscript b/libxsd-tests/cxx/parser/expat/basic/testscript new file mode 100644 index 0000000..7e78e73 --- /dev/null +++ b/libxsd-tests/cxx/parser/expat/basic/testscript @@ -0,0 +1,41 @@ +# file : cxx/parser/expat/basic/testscript +# license : GNU GPL v2 + exceptions; see accompanying LICENSE file + +: basic +: +{ + cat <=hello.xsd; + + + + + + + + + + + + + EOI + + cat <=hello.xml; + + + + Hello + + sun + moon + world + + EOI + + $* hello.xml >>EOO + greeting Hello + name sun + name moon + name world + EOO +} diff --git a/libxsd-tests/cxx/parser/xerces/basic/buildfile b/libxsd-tests/cxx/parser/xerces/basic/buildfile new file mode 100644 index 0000000..237629d --- /dev/null +++ b/libxsd-tests/cxx/parser/xerces/basic/buildfile @@ -0,0 +1,7 @@ +# file : cxx/parser/xerces/basic/buildfile +# license : GNU GPL v2 + exceptions; see accompanying LICENSE file + +import libs = libxsd%lib{xsd} +import libs += libxerces-c%lib{xerces-c} + +exe{driver}: cxx{driver} $libs testscript diff --git a/libxsd-tests/cxx/parser/xerces/basic/driver.cxx b/libxsd-tests/cxx/parser/xerces/basic/driver.cxx new file mode 100644 index 0000000..b7dfd1d --- /dev/null +++ b/libxsd-tests/cxx/parser/xerces/basic/driver.cxx @@ -0,0 +1,124 @@ +// file : cxx/parser/xerces/basic/driver.cxx +// copyright : GNU GPL v2 + exceptions; see accompanying LICENSE file + +#include +#include + +// Define XSD_CXX11 since we include libxsd headers directly. +// +#ifdef _MSC_VER +# if _MSC_VER >= 1600 // VC++10 and later have C++11 always enabled. +# define XSD_CXX11 +# endif +#else +# if defined(__GXX_EXPERIMENTAL_CXX0X__) || __cplusplus >= 201103L +# define XSD_CXX11 +# endif +#endif + +#include // XSD_UNUSED +#include + +#include + +#include +#include +#include + +using namespace std; +using namespace xsd::cxx; + +typedef parser::non_validating::string_pskel string_pskel; + +class hello_pimpl: public parser::non_validating::complex_content +{ +public: + hello_pimpl (string_pskel& greeting, string_pskel& name) + : greeting_parser_ (&greeting), + name_parser_ (&name) {} + +private: + virtual bool + _start_element_impl (const ro_string&, + const ro_string&, + const ro_string*); + + virtual bool + _end_element_impl (const ro_string&, const ro_string&); + + string_pskel* greeting_parser_; + string_pskel* name_parser_; +}; + +bool hello_pimpl:: +_start_element_impl (const ro_string& ns, + const ro_string& n, + const ro_string* t) +{ + XSD_UNUSED (t); + + if (complex_content::_start_element_impl (ns, n, t)) + return true; + + if (n == "greeting" && ns.empty ()) + { + context_.top ().parser_ = greeting_parser_; + + if (greeting_parser_) + greeting_parser_->pre (); + + return true; + } + + if (n == "name" && ns.empty ()) + { + context_.top ().parser_ = name_parser_; + + if (name_parser_) + name_parser_->pre (); + + return true; + } + + return false; +} + +bool hello_pimpl:: +_end_element_impl (const ro_string& ns, const ro_string& n) +{ + if (complex_content::_end_element_impl (ns, n)) + return true; + + if (n == "greeting" && ns.empty ()) + { + cout << n << ' ' << greeting_parser_->post_string () << endl; + return true; + } + + if (n == "name" && ns.empty ()) + { + cout << n << ' ' << name_parser_->post_string () << endl; + return true; + } + + return false; +} + + +// Usage: argv[0] +// +// Parse the specified XML file using the event-driven skeleton-based parser +// and print the element names and values to stdout. +// +int +main (int argc, char* argv[]) +{ + assert (argc == 2); + + parser::non_validating::string_pimpl string_p; + hello_pimpl hello_p (string_p, string_p); + + parser::xerces::document doc_p (hello_p, "hello"); + + doc_p.parse (argv[1]); +} diff --git a/libxsd-tests/cxx/parser/xerces/basic/testscript b/libxsd-tests/cxx/parser/xerces/basic/testscript new file mode 100644 index 0000000..f11fb10 --- /dev/null +++ b/libxsd-tests/cxx/parser/xerces/basic/testscript @@ -0,0 +1,41 @@ +# file : cxx/parser/xerces/basic/testscript +# license : GNU GPL v2 + exceptions; see accompanying LICENSE file + +: basic +: +{ + cat <=hello.xsd; + + + + + + + + + + + + + EOI + + cat <=hello.xml; + + + + Hello + + sun + moon + world + + EOI + + $* hello.xml >>EOO + greeting Hello + name sun + name moon + name world + EOO +} diff --git a/libxsd-tests/cxx/tree/basic/buildfile b/libxsd-tests/cxx/tree/basic/buildfile new file mode 100644 index 0000000..1bf94b0 --- /dev/null +++ b/libxsd-tests/cxx/tree/basic/buildfile @@ -0,0 +1,7 @@ +# file : cxx/tree/basic/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}{*} $libs testscript diff --git a/libxsd-tests/cxx/tree/basic/driver.cxx b/libxsd-tests/cxx/tree/basic/driver.cxx new file mode 100644 index 0000000..d36d31e --- /dev/null +++ b/libxsd-tests/cxx/tree/basic/driver.cxx @@ -0,0 +1,65 @@ +// file : cxx/tree/basic/driver.cxx +// copyright : GNU GPL v2 + exceptions; see accompanying LICENSE file + +#include +#include + +#include +#include +#include + +// Define XSD_CXX11 since we include libxsd headers directly. +// +#ifdef _MSC_VER +# if _MSC_VER >= 1600 // VC++10 and later have C++11 always enabled. +# define XSD_CXX11 +# endif +#else +# if defined(__GXX_EXPERIMENTAL_CXX0X__) || __cplusplus >= 201103L +# define XSD_CXX11 +# endif +#endif + +#include + +#include // XSD_DOM_AUTO_PTR +#include // name() +#include // parser, parse() + +#include // text_content() +#include +#include // auto_initializer, properties +#include // parsing +#include + +using namespace std; +using namespace xsd::cxx; + +// Usage: argv[0] +// +// Parse the specified XML file using the XML DOM parser and print the element +// names and values to stdout. +// +int +main (int argc, char* argv[]) +{ + assert (argc == 2); + + xml::auto_initializer ai; + + tree::error_handler h; + tree::properties ps; + + XSD_DOM_AUTO_PTR d ( + xml::dom::parse (argv[1], h, ps, 0 /* flags */)); + + h.throw_if_failed> (); // Abort on error. + + xml::dom::parser p (*d->getDocumentElement (), true, false, false); + for (; p.more_content (); p.next_content (false /* text */)) + { + const xercesc::DOMElement& i (p.cur_element ()); + const xml::qualified_name n (xml::dom::name (i)); + cout << n.name () << ' ' << tree::text_content (i) << endl; + } +} diff --git a/libxsd-tests/cxx/tree/basic/testscript b/libxsd-tests/cxx/tree/basic/testscript new file mode 100644 index 0000000..2606688 --- /dev/null +++ b/libxsd-tests/cxx/tree/basic/testscript @@ -0,0 +1,73 @@ +# file : cxx/tree/basic/testscript +# license : GNU GPL v2 + exceptions; see accompanying LICENSE file + +: basic +: +{ + cat <=hello.xsd; + + + + + + + + The hello_t type consists of a greeting phrase and a + collection of names to which this greeting applies. + + + + + + + + + The greeting element contains the greeting phrase + for this hello object. + + + + + + + + The name elements contains names to be greeted. + + + + + + + + + + + The hello element is a root of the Hello XML vocabulary. + Every conforming document should start with this element. + + + + + EOI + + cat <=hello.xml; + + + + Hello + + sun + moon + world + + + EOI + + $* hello.xml >>EOO + greeting Hello + name sun + name moon + name world + EOO +} -- cgit v1.1