Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'tests/gtests/blenlib/BLI_memory_utils_test.cc')
-rw-r--r--tests/gtests/blenlib/BLI_memory_utils_test.cc159
1 files changed, 0 insertions, 159 deletions
diff --git a/tests/gtests/blenlib/BLI_memory_utils_test.cc b/tests/gtests/blenlib/BLI_memory_utils_test.cc
deleted file mode 100644
index b99db5c5eca..00000000000
--- a/tests/gtests/blenlib/BLI_memory_utils_test.cc
+++ /dev/null
@@ -1,159 +0,0 @@
-/* Apache License, Version 2.0 */
-
-#include "BLI_float3.hh"
-#include "BLI_memory_utils.hh"
-#include "BLI_strict_flags.h"
-#include "testing/testing.h"
-
-namespace blender {
-
-struct MyValue {
- static inline int alive = 0;
-
- MyValue()
- {
- if (alive == 15) {
- throw std::exception();
- }
-
- alive++;
- }
-
- MyValue(const MyValue &other)
- {
- if (alive == 15) {
- throw std::exception();
- }
-
- alive++;
- }
-
- ~MyValue()
- {
- alive--;
- }
-};
-
-TEST(memory_utils, DefaultConstructN_ActuallyCallsConstructor)
-{
- constexpr int amount = 10;
- TypedBuffer<MyValue, amount> buffer;
-
- EXPECT_EQ(MyValue::alive, 0);
- default_construct_n(buffer.ptr(), amount);
- EXPECT_EQ(MyValue::alive, amount);
- destruct_n(buffer.ptr(), amount);
- EXPECT_EQ(MyValue::alive, 0);
-}
-
-TEST(memory_utils, DefaultConstructN_StrongExceptionSafety)
-{
- constexpr int amount = 20;
- TypedBuffer<MyValue, amount> buffer;
-
- EXPECT_EQ(MyValue::alive, 0);
- EXPECT_THROW(default_construct_n(buffer.ptr(), amount), std::exception);
- EXPECT_EQ(MyValue::alive, 0);
-}
-
-TEST(memory_utils, UninitializedCopyN_ActuallyCopies)
-{
- constexpr int amount = 5;
- TypedBuffer<MyValue, amount> buffer1;
- TypedBuffer<MyValue, amount> buffer2;
-
- EXPECT_EQ(MyValue::alive, 0);
- default_construct_n(buffer1.ptr(), amount);
- EXPECT_EQ(MyValue::alive, amount);
- uninitialized_copy_n(buffer1.ptr(), amount, buffer2.ptr());
- EXPECT_EQ(MyValue::alive, 2 * amount);
- destruct_n(buffer1.ptr(), amount);
- EXPECT_EQ(MyValue::alive, amount);
- destruct_n(buffer2.ptr(), amount);
- EXPECT_EQ(MyValue::alive, 0);
-}
-
-TEST(memory_utils, UninitializedCopyN_StrongExceptionSafety)
-{
- constexpr int amount = 10;
- TypedBuffer<MyValue, amount> buffer1;
- TypedBuffer<MyValue, amount> buffer2;
-
- EXPECT_EQ(MyValue::alive, 0);
- default_construct_n(buffer1.ptr(), amount);
- EXPECT_EQ(MyValue::alive, amount);
- EXPECT_THROW(uninitialized_copy_n(buffer1.ptr(), amount, buffer2.ptr()), std::exception);
- EXPECT_EQ(MyValue::alive, amount);
- destruct_n(buffer1.ptr(), amount);
- EXPECT_EQ(MyValue::alive, 0);
-}
-
-TEST(memory_utils, UninitializedFillN_ActuallyCopies)
-{
- constexpr int amount = 10;
- TypedBuffer<MyValue, amount> buffer;
-
- EXPECT_EQ(MyValue::alive, 0);
- {
- MyValue value;
- EXPECT_EQ(MyValue::alive, 1);
- uninitialized_fill_n(buffer.ptr(), amount, value);
- EXPECT_EQ(MyValue::alive, 1 + amount);
- destruct_n(buffer.ptr(), amount);
- EXPECT_EQ(MyValue::alive, 1);
- }
- EXPECT_EQ(MyValue::alive, 0);
-}
-
-TEST(memory_utils, UninitializedFillN_StrongExceptionSafety)
-{
- constexpr int amount = 20;
- TypedBuffer<MyValue, amount> buffer;
-
- EXPECT_EQ(MyValue::alive, 0);
- {
- MyValue value;
- EXPECT_EQ(MyValue::alive, 1);
- EXPECT_THROW(uninitialized_fill_n(buffer.ptr(), amount, value), std::exception);
- EXPECT_EQ(MyValue::alive, 1);
- }
- EXPECT_EQ(MyValue::alive, 0);
-}
-
-class TestBaseClass {
- virtual void mymethod(){};
-};
-
-class TestChildClass : public TestBaseClass {
- void mymethod() override
- {
- }
-};
-
-static_assert(is_convertible_pointer_v<int *, int *>);
-static_assert(is_convertible_pointer_v<int *, const int *>);
-static_assert(is_convertible_pointer_v<int *, int *const>);
-static_assert(is_convertible_pointer_v<int *, const int *const>);
-static_assert(!is_convertible_pointer_v<const int *, int *>);
-static_assert(!is_convertible_pointer_v<int, int *>);
-static_assert(!is_convertible_pointer_v<int *, int>);
-static_assert(is_convertible_pointer_v<TestBaseClass *, const TestBaseClass *>);
-static_assert(!is_convertible_pointer_v<const TestBaseClass *, TestBaseClass *>);
-static_assert(is_convertible_pointer_v<TestChildClass *, TestBaseClass *>);
-static_assert(!is_convertible_pointer_v<TestBaseClass *, TestChildClass *>);
-static_assert(is_convertible_pointer_v<const TestChildClass *, const TestBaseClass *>);
-static_assert(!is_convertible_pointer_v<TestBaseClass, const TestChildClass *>);
-static_assert(!is_convertible_pointer_v<float3, float *>);
-static_assert(!is_convertible_pointer_v<float *, float3>);
-static_assert(!is_convertible_pointer_v<int **, int *>);
-static_assert(!is_convertible_pointer_v<int *, int **>);
-static_assert(is_convertible_pointer_v<int **, int **>);
-static_assert(is_convertible_pointer_v<const int **, const int **>);
-static_assert(!is_convertible_pointer_v<const int **, int **>);
-static_assert(!is_convertible_pointer_v<int *const *, int **>);
-static_assert(!is_convertible_pointer_v<int *const *const, int **>);
-static_assert(is_convertible_pointer_v<int **, int **const>);
-static_assert(is_convertible_pointer_v<int **, int *const *>);
-static_assert(is_convertible_pointer_v<int **, int const *const *>);
-
-} // namespace blender