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:
authorJulian Eisel <julian@blender.org>2020-07-01 18:25:04 +0300
committerJulian Eisel <julian@blender.org>2020-07-01 18:25:04 +0300
commit889c4ca9c26d770af02cedef972d65eb173bdb5e (patch)
tree6f46156146db1b3f09d92c6eaa1f44ba8a584ed4 /tests/gtests/blenlib/BLI_array_test.cc
parent87df15190210eb84ef52e5dccc2932918f912da5 (diff)
parent0829cebeb024095c268f190c34daa8ae9a5a224c (diff)
Merge branch 'asset-uuid--archived' into asset-engine--archivedasset-engine--archived
Diffstat (limited to 'tests/gtests/blenlib/BLI_array_test.cc')
-rw-r--r--tests/gtests/blenlib/BLI_array_test.cc69
1 files changed, 53 insertions, 16 deletions
diff --git a/tests/gtests/blenlib/BLI_array_test.cc b/tests/gtests/blenlib/BLI_array_test.cc
index fc3c15fe813..9c77c69e296 100644
--- a/tests/gtests/blenlib/BLI_array_test.cc
+++ b/tests/gtests/blenlib/BLI_array_test.cc
@@ -2,26 +2,26 @@
#include "BLI_strict_flags.h"
#include "testing/testing.h"
-using namespace blender;
+namespace blender {
TEST(array, DefaultConstructor)
{
Array<int> array;
- EXPECT_EQ(array.size(), 0);
+ EXPECT_EQ(array.size(), 0u);
EXPECT_TRUE(array.is_empty());
}
TEST(array, SizeConstructor)
{
Array<int> array(5);
- EXPECT_EQ(array.size(), 5);
+ EXPECT_EQ(array.size(), 5u);
EXPECT_FALSE(array.is_empty());
}
TEST(array, FillConstructor)
{
Array<int> array(5, 8);
- EXPECT_EQ(array.size(), 5);
+ EXPECT_EQ(array.size(), 5u);
EXPECT_EQ(array[0], 8);
EXPECT_EQ(array[1], 8);
EXPECT_EQ(array[2], 8);
@@ -32,7 +32,7 @@ TEST(array, FillConstructor)
TEST(array, InitializerListConstructor)
{
Array<int> array = {4, 5, 6, 7};
- EXPECT_EQ(array.size(), 4);
+ EXPECT_EQ(array.size(), 4u);
EXPECT_EQ(array[0], 4);
EXPECT_EQ(array[1], 5);
EXPECT_EQ(array[2], 6);
@@ -44,7 +44,7 @@ TEST(array, SpanConstructor)
int stackarray[4] = {6, 7, 8, 9};
Span<int> span(stackarray, ARRAY_SIZE(stackarray));
Array<int> array(span);
- EXPECT_EQ(array.size(), 4);
+ EXPECT_EQ(array.size(), 4u);
EXPECT_EQ(array[0], 6);
EXPECT_EQ(array[1], 7);
EXPECT_EQ(array[2], 8);
@@ -56,8 +56,8 @@ TEST(array, CopyConstructor)
Array<int> array = {5, 6, 7, 8};
Array<int> new_array(array);
- EXPECT_EQ(array.size(), 4);
- EXPECT_EQ(new_array.size(), 4);
+ EXPECT_EQ(array.size(), 4u);
+ EXPECT_EQ(new_array.size(), 4u);
EXPECT_NE(array.data(), new_array.data());
EXPECT_EQ(new_array[0], 5);
EXPECT_EQ(new_array[1], 6);
@@ -70,8 +70,8 @@ TEST(array, MoveConstructor)
Array<int> array = {5, 6, 7, 8};
Array<int> new_array(std::move(array));
- EXPECT_EQ(array.size(), 0);
- EXPECT_EQ(new_array.size(), 4);
+ EXPECT_EQ(array.size(), 0u);
+ EXPECT_EQ(new_array.size(), 4u);
EXPECT_EQ(new_array[0], 5);
EXPECT_EQ(new_array[1], 6);
EXPECT_EQ(new_array[2], 7);
@@ -82,10 +82,10 @@ TEST(array, CopyAssignment)
{
Array<int> array = {1, 2, 3};
Array<int> new_array = {4};
- EXPECT_EQ(new_array.size(), 1);
+ EXPECT_EQ(new_array.size(), 1u);
new_array = array;
- EXPECT_EQ(new_array.size(), 3);
- EXPECT_EQ(array.size(), 3);
+ EXPECT_EQ(new_array.size(), 3u);
+ EXPECT_EQ(array.size(), 3u);
EXPECT_NE(array.data(), new_array.data());
EXPECT_EQ(new_array[0], 1);
EXPECT_EQ(new_array[1], 2);
@@ -96,10 +96,10 @@ TEST(array, MoveAssignment)
{
Array<int> array = {1, 2, 3};
Array<int> new_array = {4};
- EXPECT_EQ(new_array.size(), 1);
+ EXPECT_EQ(new_array.size(), 1u);
new_array = std::move(array);
- EXPECT_EQ(new_array.size(), 3);
- EXPECT_EQ(array.size(), 0);
+ EXPECT_EQ(new_array.size(), 3u);
+ EXPECT_EQ(array.size(), 0u);
EXPECT_EQ(new_array[0], 1);
EXPECT_EQ(new_array[1], 2);
EXPECT_EQ(new_array[2], 3);
@@ -124,3 +124,40 @@ TEST(array, TrivialTypeSizeConstructor)
EXPECT_EQ(*ptr, magic);
delete array;
}
+
+struct ConstructibleType {
+ char value;
+
+ ConstructibleType()
+ {
+ value = 42;
+ }
+};
+
+TEST(array, NoInitializationSizeConstructor)
+{
+ using MyArray = Array<ConstructibleType>;
+
+ AlignedBuffer<sizeof(MyArray), alignof(MyArray)> buffer;
+ char *buffer_ptr = (char *)buffer.ptr();
+ memset(buffer_ptr, 100, sizeof(MyArray));
+
+ /* Doing this to avoid some compiler optimization. */
+ for (uint i : IndexRange(sizeof(MyArray))) {
+ EXPECT_EQ(buffer_ptr[i], 100);
+ }
+
+ {
+ MyArray &array = *new (buffer.ptr()) MyArray(1, NoInitialization());
+ EXPECT_EQ(array[0].value, 100);
+ array.clear_without_destruct();
+ array.~Array();
+ }
+ {
+ MyArray &array = *new (buffer.ptr()) MyArray(1);
+ EXPECT_EQ(array[0].value, 42);
+ array.~Array();
+ }
+}
+
+} // namespace blender