qtxmlpatterns.cpp 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. // (c) Copyright Juergen Hunold 2012
  2. // Use, modification and distribution is subject to the Boost Software
  3. // License, Version 1.0. (See accompanying file LICENSE.txt or copy at
  4. // https://www.bfgroup.xyz/b2/LICENSE.txt)
  5. #define BOOST_TEST_MODULE QtXmlPatterns
  6. #include <QXmlQuery>
  7. #include <QXmlSerializer>
  8. #include <QCoreApplication>
  9. #include <QString>
  10. #include <QTextStream>
  11. #include <QBuffer>
  12. #include <boost/test/unit_test.hpp>
  13. struct Fixture
  14. {
  15. Fixture()
  16. : application(boost::unit_test::framework::master_test_suite().argc,
  17. boost::unit_test::framework::master_test_suite().argv)
  18. {
  19. BOOST_TEST_MESSAGE( "setup QCoreApplication fixture" );
  20. }
  21. ~Fixture()
  22. {
  23. BOOST_TEST_MESSAGE( "teardown QCoreApplication fixture" );
  24. }
  25. QCoreApplication application;
  26. };
  27. BOOST_GLOBAL_FIXTURE( Fixture );
  28. QByteArray doc("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
  29. "<html xmlns=\"http://www.w3.org/1999/xhtml/\" xml:lang=\"en\" lang=\"en\">"
  30. " <head>"
  31. " <title>Global variables report for globals.gccxml</title>"
  32. " </head>"
  33. "<body><p>Some Test text</p></body></html>");
  34. BOOST_AUTO_TEST_CASE( defines)
  35. {
  36. BOOST_CHECK_EQUAL(BOOST_IS_DEFINED(QT_CORE_LIB), true);
  37. BOOST_CHECK_EQUAL(BOOST_IS_DEFINED(QT_XMLPATTERNS_LIB), true);
  38. BOOST_CHECK_EQUAL(BOOST_IS_DEFINED(QT_XML_LIB), false);
  39. }
  40. BOOST_AUTO_TEST_CASE( extract )
  41. {
  42. QBuffer buffer(&doc); // This is a QIODevice.
  43. buffer.open(QIODevice::ReadOnly);
  44. QXmlQuery query;
  45. query.bindVariable("myDocument", &buffer);
  46. query.setQuery("declare variable $myDocument external;"
  47. "doc($myDocument)");///p[1]");
  48. BOOST_CHECK_EQUAL(query.isValid(), true);
  49. QByteArray result;
  50. QBuffer out(&result);
  51. out.open(QIODevice::WriteOnly);
  52. QXmlSerializer serializer(query, &out);
  53. BOOST_CHECK_EQUAL(query.evaluateTo(&serializer), true);
  54. QTextStream stream(stdout);
  55. BOOST_CHECK_EQUAL(result.isEmpty(), false);
  56. stream << "hallo" << result << endl;
  57. }