any_tests.cpp 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. // This file is part of OpenCV project.
  2. // It is subject to the license terms in the LICENSE file found in the top-level directory
  3. // of this distribution and at http://opencv.org/license.html.
  4. //
  5. // Copyright (C) 2018 Intel Corporation
  6. #include "../test_precomp.hpp"
  7. #include <opencv2/gapi/util/any.hpp>
  8. namespace opencv_test
  9. {
  10. TEST(Any, basic)
  11. {
  12. using namespace util;
  13. any a(8);
  14. auto casted_pointer = any_cast<int>(&a);
  15. ASSERT_NE(nullptr, casted_pointer);
  16. ASSERT_EQ(8, *casted_pointer);
  17. *casted_pointer = 7;
  18. ASSERT_EQ(7, any_cast<int>(a));
  19. }
  20. TEST(Any, any_cast_ref_throws_on_empty)
  21. {
  22. using namespace util;
  23. any a;
  24. ASSERT_THROW(util::any_cast<int>(a), bad_any_cast);
  25. }
  26. TEST(Any, copy)
  27. {
  28. using namespace util;
  29. any a(8);
  30. ASSERT_EQ(8, any_cast<int>(a));
  31. any b (a);
  32. ASSERT_NE(nullptr, any_cast<int>(&b));
  33. ASSERT_EQ(8, any_cast<int>(b));
  34. ASSERT_EQ(8, any_cast<int>(a));
  35. }
  36. TEST(Any, copy_empty)
  37. {
  38. using namespace util;
  39. any a;
  40. ASSERT_EQ(nullptr, any_cast<int>(&a));
  41. any b (a);
  42. ASSERT_EQ(nullptr, any_cast<int>(&a));
  43. ASSERT_EQ(nullptr, any_cast<int>(&b));
  44. }
  45. TEST(Any, move)
  46. {
  47. using namespace util;
  48. any a(8);
  49. ASSERT_EQ(8, any_cast<int>(a));
  50. any b (std::move(a));
  51. ASSERT_NE(nullptr, any_cast<int>(&b));
  52. ASSERT_EQ(8, any_cast<int>(b));
  53. ASSERT_EQ(nullptr, any_cast<int>(&a));
  54. }
  55. TEST(Any, swap)
  56. {
  57. using namespace util;
  58. any a(8);
  59. any b(7);
  60. ASSERT_EQ(7, any_cast<int>(b));
  61. ASSERT_EQ(8, any_cast<int>(a));
  62. swap(a,b);
  63. ASSERT_EQ(8, any_cast<int>(b));
  64. ASSERT_EQ(7, any_cast<int>(a));
  65. }
  66. TEST(Any, move_assign)
  67. {
  68. using namespace util;
  69. any a(8);
  70. any b;
  71. ASSERT_EQ(8, any_cast<int>(a));
  72. b = (std::move(a));
  73. ASSERT_NE(nullptr, any_cast<int>(&b));
  74. ASSERT_EQ(8, any_cast<int>(b));
  75. ASSERT_EQ(nullptr, any_cast<int>(&a));
  76. }
  77. TEST(Any, copy_assign)
  78. {
  79. using namespace util;
  80. any a(8);
  81. any b;
  82. ASSERT_EQ(8, any_cast<int>(a));
  83. ASSERT_EQ(nullptr, any_cast<int>(&b));
  84. b = a;
  85. ASSERT_NE(nullptr, any_cast<int>(&b));
  86. ASSERT_EQ(8, any_cast<int>(b));
  87. ASSERT_EQ(8, any_cast<int>(a));
  88. }
  89. TEST(Any, get_ref_to_val_from_any)
  90. {
  91. using namespace util;
  92. int x = 8;
  93. any a(x);
  94. int& casted_ref = any_cast<int>(a);
  95. ASSERT_EQ(8, casted_ref);
  96. }
  97. TEST(Any, update_val_via_ref)
  98. {
  99. using namespace util;
  100. int x = 8;
  101. any a(x);
  102. int& casted_ref = any_cast<int>(a);
  103. ASSERT_EQ(8, casted_ref);
  104. casted_ref = 7;
  105. ASSERT_EQ(7, any_cast<int>(a));
  106. }
  107. } // namespace opencv_test