2
0

gtc_epsilon.cpp 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. ///////////////////////////////////////////////////////////////////////////////////////////////////
  2. // OpenGL Mathematics Copyright (c) 2005 - 2014 G-Truc Creation (www.g-truc.net)
  3. ///////////////////////////////////////////////////////////////////////////////////////////////////
  4. // Created : 2012-09-19
  5. // Updated : 2012-09-19
  6. // Licence : This source is under MIT licence
  7. // File : test/gtc/epsilon.cpp
  8. ///////////////////////////////////////////////////////////////////////////////////////////////////
  9. #include <glm/gtc/epsilon.hpp>
  10. #include <glm/gtc/constants.hpp>
  11. #include <glm/vector_relational.hpp>
  12. int test_defined()
  13. {
  14. glm::epsilonEqual(glm::vec2(), glm::vec2(), glm::vec2());
  15. glm::epsilonEqual(glm::vec3(), glm::vec3(), glm::vec3());
  16. glm::epsilonEqual(glm::vec4(), glm::vec4(), glm::vec4());
  17. glm::epsilonNotEqual(glm::vec2(), glm::vec2(), glm::vec2());
  18. glm::epsilonNotEqual(glm::vec3(), glm::vec3(), glm::vec3());
  19. glm::epsilonNotEqual(glm::vec4(), glm::vec4(), glm::vec4());
  20. glm::epsilonEqual(glm::vec2(), glm::vec2(), 0.0f);
  21. glm::epsilonEqual(glm::vec3(), glm::vec3(), 0.0f);
  22. glm::epsilonEqual(glm::vec4(), glm::vec4(), 0.0f);
  23. glm::epsilonEqual(glm::quat(), glm::quat(), 0.0f);
  24. glm::epsilonNotEqual(glm::vec2(), glm::vec2(), 0.0f);
  25. glm::epsilonNotEqual(glm::vec3(), glm::vec3(), 0.0f);
  26. glm::epsilonNotEqual(glm::vec4(), glm::vec4(), 0.0f);
  27. glm::epsilonNotEqual(glm::quat(), glm::quat(), 0.0f);
  28. return 0;
  29. }
  30. template <typename T>
  31. int test_equal()
  32. {
  33. int Error(0);
  34. {
  35. T A = glm::epsilon<T>();
  36. T B = glm::epsilon<T>();
  37. Error += glm::epsilonEqual(A, B, glm::epsilon<T>() * T(2)) ? 0 : 1;
  38. }
  39. {
  40. T A(0);
  41. T B = static_cast<T>(0) + glm::epsilon<T>();
  42. Error += glm::epsilonEqual(A, B, glm::epsilon<T>() * T(2)) ? 0 : 1;
  43. }
  44. {
  45. T A(0);
  46. T B = static_cast<T>(0) - glm::epsilon<T>();
  47. Error += glm::epsilonEqual(A, B, glm::epsilon<T>() * T(2)) ? 0 : 1;
  48. }
  49. {
  50. T A = static_cast<T>(0) + glm::epsilon<T>();
  51. T B = static_cast<T>(0);
  52. Error += glm::epsilonEqual(A, B, glm::epsilon<T>() * T(2)) ? 0 : 1;
  53. }
  54. {
  55. T A = static_cast<T>(0) - glm::epsilon<T>();
  56. T B = static_cast<T>(0);
  57. Error += glm::epsilonEqual(A, B, glm::epsilon<T>() * T(2)) ? 0 : 1;
  58. }
  59. return Error;
  60. }
  61. int main()
  62. {
  63. int Error(0);
  64. Error += test_defined();
  65. Error += test_equal<float>();
  66. Error += test_equal<double>();
  67. return Error;
  68. }