test_string.cpp 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. //---------------------------------------------------------------------------//
  2. // Copyright (c) 2013 Kyle Lutz <kyle.r.lutz@gmail.com>
  3. //
  4. // Distributed under the Boost Software License, Version 1.0
  5. // See accompanying file LICENSE_1_0.txt or copy at
  6. // http://www.boost.org/LICENSE_1_0.txt
  7. //
  8. // See http://boostorg.github.com/compute for more information.
  9. //---------------------------------------------------------------------------//
  10. #define BOOST_TEST_MODULE TestString
  11. #include <boost/test/unit_test.hpp>
  12. #include <boost/compute/container/string.hpp>
  13. #include <boost/compute/container/basic_string.hpp>
  14. #include <boost/test/output_test_stream.hpp>
  15. #include "context_setup.hpp"
  16. #include "check_macros.hpp"
  17. using boost::test_tools::output_test_stream;
  18. BOOST_AUTO_TEST_CASE(empty)
  19. {
  20. boost::compute::string str;
  21. BOOST_VERIFY(str.empty());
  22. }
  23. BOOST_AUTO_TEST_CASE(swap)
  24. {
  25. // boost::compute::string currently uses only default_queue, default_context,
  26. // default_device so this overrides queue variable set in
  27. // BOOST_FIXTURE_TEST_SUITE(compute_test, Context) in context_setup.hpp
  28. // in case it is not the default_queue
  29. boost::compute::command_queue& queue =
  30. boost::compute::system::default_queue();
  31. boost::compute::string str1 = "compute";
  32. boost::compute::string str2 = "boost";
  33. BOOST_VERIFY(!str2.empty());
  34. BOOST_VERIFY(!str2.empty());
  35. str1.swap(str2);
  36. // this macro uses queue variable and it must be default_queue
  37. CHECK_STRING_EQUAL(str1, "boost");
  38. CHECK_STRING_EQUAL(str2, "compute");
  39. str1.clear();
  40. str1.swap(str2);
  41. CHECK_STRING_EQUAL(str1, "compute");
  42. CHECK_STRING_EQUAL(str2, "");
  43. str2.swap(str1);
  44. CHECK_STRING_EQUAL(str1, "");
  45. CHECK_STRING_EQUAL(str2, "compute");
  46. str1.swap(str1);
  47. CHECK_STRING_EQUAL(str1, "");
  48. }
  49. BOOST_AUTO_TEST_CASE(size)
  50. {
  51. boost::compute::string str = "string";
  52. BOOST_VERIFY(!str.empty());
  53. BOOST_CHECK_EQUAL(str.size(), size_t(6));
  54. BOOST_CHECK_EQUAL(str.length(), size_t(6));
  55. }
  56. BOOST_AUTO_TEST_CASE(find_doctest)
  57. {
  58. //! [string_find]
  59. boost::compute::string str = "boost::compute::string";
  60. int pos = str.find("::");
  61. //! [string_find]
  62. boost::compute::string pattern = "string";
  63. BOOST_VERIFY(!str.empty());
  64. BOOST_CHECK_EQUAL(str.find('o'), 1);
  65. BOOST_CHECK_NE(str.find('o'), 2);
  66. BOOST_CHECK_EQUAL(str.find(pattern), 16);
  67. BOOST_CHECK_EQUAL(pos, 5);
  68. BOOST_CHECK_EQUAL(str.find("@#$"), size_t(-1));
  69. }
  70. BOOST_AUTO_TEST_CASE(outStream)
  71. {
  72. output_test_stream output;
  73. boost::compute::string str = "string";
  74. output<<str;
  75. BOOST_CHECK(output.is_equal("string"));
  76. BOOST_VERIFY(!output.is_equal("!@$%"));
  77. }
  78. BOOST_AUTO_TEST_SUITE_END()