swizzle2_test.cpp 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. //Copyright (c) 2008-2016 Emil Dotchevski and Reverge Studios, Inc.
  2. //Distributed under the Boost Software License, Version 1.0. (See accompanying
  3. //file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  4. #include <boost/qvm/vec_operations.hpp>
  5. #include <boost/qvm/vec_access.hpp>
  6. #include <boost/qvm/vec.hpp>
  7. #include <boost/qvm/swizzle.hpp>
  8. #include "test_qvm_vector.hpp"
  9. int
  10. main()
  11. {
  12. using namespace boost::qvm;
  13. test_qvm::vector<V1,4> v1;
  14. v1.a[0]=42.0f;
  15. v1.a[1]=43.0f;
  16. v1.a[2]=44.0f;
  17. v1.a[3]=45.0f;
  18. XX(v1) + XX(v1);
  19. -XX(v1);
  20. XX(42.0f) + XX(42.0f);
  21. -XX(42.0f);
  22. {
  23. test_qvm::vector<V2,2> v0=X0(42.0f);
  24. BOOST_TEST(v0.a[0]==42);
  25. BOOST_TEST(v0.a[1]==0);
  26. test_qvm::vector<V2,2> v2=_1X(42.0f);
  27. BOOST_TEST(v2.a[0]==1);
  28. BOOST_TEST(v2.a[1]==42);
  29. float s=42.0f;
  30. BOOST_TEST(&X(X1(s))==&s);
  31. }
  32. {
  33. test_qvm::vector<V2,2> r;
  34. r.a[0]=v1.a[0];
  35. r.a[1]=v1.a[0];
  36. test_qvm::vector<V2,2> v2=XX(v1);
  37. BOOST_QVM_TEST_EQ(v2,r);
  38. }
  39. {
  40. test_qvm::vector<V2,2> r;
  41. r.a[0]=v1.a[0];
  42. r.a[1]=v1.a[1];
  43. test_qvm::vector<V2,2> v2=XY(v1);
  44. BOOST_QVM_TEST_EQ(v2,r);
  45. }
  46. {
  47. test_qvm::vector<V2,2> r;
  48. r.a[0]=v1.a[0];
  49. r.a[1]=v1.a[2];
  50. test_qvm::vector<V2,2> v2=XZ(v1);
  51. BOOST_QVM_TEST_EQ(v2,r);
  52. }
  53. {
  54. test_qvm::vector<V2,2> r;
  55. r.a[0]=v1.a[0];
  56. r.a[1]=v1.a[3];
  57. test_qvm::vector<V2,2> v2=XW(v1);
  58. BOOST_QVM_TEST_EQ(v2,r);
  59. }
  60. {
  61. test_qvm::vector<V2,2> r;
  62. r.a[0]=v1.a[0];
  63. r.a[1]=0;
  64. test_qvm::vector<V2,2> v2=X0(v1);
  65. BOOST_QVM_TEST_EQ(v2,r);
  66. }
  67. {
  68. test_qvm::vector<V2,2> r;
  69. r.a[0]=v1.a[0];
  70. r.a[1]=1;
  71. test_qvm::vector<V2,2> v2=X1(v1);
  72. BOOST_QVM_TEST_EQ(v2,r);
  73. }
  74. {
  75. test_qvm::vector<V2,2> v2=XY(v1);
  76. test_qvm::vector<V3,2> v3;
  77. XY(v3)=XY(v2);
  78. BOOST_QVM_TEST_EQ(v2,v3);
  79. }
  80. {
  81. test_qvm::vector<V1,2> v=_00();
  82. BOOST_TEST(v.a[0]==0);
  83. BOOST_TEST(v.a[1]==0);
  84. }
  85. {
  86. test_qvm::vector<V1,2> v=_01();
  87. BOOST_TEST(v.a[0]==0);
  88. BOOST_TEST(v.a[1]==1);
  89. }
  90. {
  91. test_qvm::vector<V1,2> v=_10();
  92. BOOST_TEST(v.a[0]==1);
  93. BOOST_TEST(v.a[1]==0);
  94. }
  95. {
  96. test_qvm::vector<V1,2> v=_11();
  97. BOOST_TEST(v.a[0]==1);
  98. BOOST_TEST(v.a[1]==1);
  99. }
  100. return boost::report_errors();
  101. }