test_types.cpp 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  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 TestTypes
  11. #include <boost/test/unit_test.hpp>
  12. #include <string>
  13. #include <sstream>
  14. #include <boost/compute/types/fundamental.hpp>
  15. BOOST_AUTO_TEST_CASE(vector_ctor)
  16. {
  17. boost::compute::int4_ i4(1, 2, 3, 4);
  18. BOOST_CHECK(i4 == boost::compute::int4_(1, 2, 3, 4));
  19. BOOST_CHECK_EQUAL(i4, boost::compute::int4_(1, 2, 3, 4));
  20. BOOST_CHECK_EQUAL(i4[0], 1);
  21. BOOST_CHECK_EQUAL(i4[1], 2);
  22. BOOST_CHECK_EQUAL(i4[2], 3);
  23. BOOST_CHECK_EQUAL(i4[3], 4);
  24. i4 = boost::compute::int4_(1);
  25. BOOST_CHECK(i4 == boost::compute::int4_(1, 1, 1, 1));
  26. BOOST_CHECK(i4 == (boost::compute::vector_type<int, size_t(4)>(1)));
  27. BOOST_CHECK_EQUAL(i4, boost::compute::int4_(1, 1, 1, 1));
  28. BOOST_CHECK_EQUAL(i4[0], 1);
  29. BOOST_CHECK_EQUAL(i4[1], 1);
  30. BOOST_CHECK_EQUAL(i4[2], 1);
  31. BOOST_CHECK_EQUAL(i4[3], 1);
  32. }
  33. BOOST_AUTO_TEST_CASE(vector_string)
  34. {
  35. std::stringstream stream;
  36. stream << boost::compute::int2_(1, 2);
  37. BOOST_CHECK_EQUAL(stream.str(), std::string("int2(1, 2)"));
  38. }
  39. BOOST_AUTO_TEST_CASE(vector_accessors_basic)
  40. {
  41. boost::compute::float4_ v;
  42. v.x = 1;
  43. v.y = 2;
  44. v.z = 3;
  45. v.w = 4;
  46. BOOST_CHECK(v == boost::compute::float4_(1, 2, 3, 4));
  47. }
  48. BOOST_AUTO_TEST_CASE(vector_accessors_all)
  49. {
  50. boost::compute::int2_ i2(1, 2);
  51. BOOST_CHECK_EQUAL(i2.x, 1);
  52. BOOST_CHECK_EQUAL(i2.y, 2);
  53. boost::compute::int4_ i4(1, 2, 3, 4);
  54. BOOST_CHECK_EQUAL(i4.x, 1);
  55. BOOST_CHECK_EQUAL(i4.y, 2);
  56. BOOST_CHECK_EQUAL(i4.z, 3);
  57. BOOST_CHECK_EQUAL(i4.w, 4);
  58. boost::compute::int8_ i8(1, 2, 3, 4, 5, 6, 7, 8);
  59. BOOST_CHECK_EQUAL(i8.s0, 1);
  60. BOOST_CHECK_EQUAL(i8.s1, 2);
  61. BOOST_CHECK_EQUAL(i8.s2, 3);
  62. BOOST_CHECK_EQUAL(i8.s3, 4);
  63. BOOST_CHECK_EQUAL(i8.s4, 5);
  64. BOOST_CHECK_EQUAL(i8.s5, 6);
  65. BOOST_CHECK_EQUAL(i8.s6, 7);
  66. BOOST_CHECK_EQUAL(i8.s7, 8);
  67. boost::compute::int16_ i16(
  68. 1, 2, 3, 4, 5, 6, 7, 8,
  69. 9, 10, 11, 12, 13, 14, 15, 16);
  70. BOOST_CHECK_EQUAL(i16.s0, 1);
  71. BOOST_CHECK_EQUAL(i16.s1, 2);
  72. BOOST_CHECK_EQUAL(i16.s2, 3);
  73. BOOST_CHECK_EQUAL(i16.s3, 4);
  74. BOOST_CHECK_EQUAL(i16.s4, 5);
  75. BOOST_CHECK_EQUAL(i16.s5, 6);
  76. BOOST_CHECK_EQUAL(i16.s6, 7);
  77. BOOST_CHECK_EQUAL(i16.s7, 8);
  78. BOOST_CHECK_EQUAL(i16.s8, 9);
  79. BOOST_CHECK_EQUAL(i16.s9, 10);
  80. BOOST_CHECK_EQUAL(i16.sa, 11);
  81. BOOST_CHECK_EQUAL(i16.sb, 12);
  82. BOOST_CHECK_EQUAL(i16.sc, 13);
  83. BOOST_CHECK_EQUAL(i16.sd, 14);
  84. BOOST_CHECK_EQUAL(i16.se, 15);
  85. BOOST_CHECK_EQUAL(i16.sf, 16);
  86. }