-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathContainerTest.cpp
More file actions
80 lines (70 loc) · 2.42 KB
/
ContainerTest.cpp
File metadata and controls
80 lines (70 loc) · 2.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#include "Interface/Container.h"
#include <gtest/gtest.h>
template <typename T>
void ASSERT_ARRAY_EQ(const T *x, const T *y, const size_t n) {
if (std::is_integral<T>::value) {
for (size_t i = 0; i < n; i++) {
ASSERT_EQ(x[i], y[i]);
}
} else if (std::is_same<T, float>::value) {
for (size_t i = 0; i < n; i++) {
ASSERT_FLOAT_EQ(x[i], y[i]);
}
} else if (std::is_same<T, double>::value) {
for (size_t i = 0; i < n; i++) {
ASSERT_DOUBLE_EQ(x[i], y[i]);
}
}
}
class MemRefTest : public ::testing::Test {
protected:
void SetUp() override {}
void TearDown() override {}
};
// Copy constructor.
TEST_F(MemRefTest, CopyConstructor2DMemref) {
// new hard codede MemRef object.
float aligned[] = {0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0,
0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0};
intptr_t sizes[2] = {6, 6};
MemRef<float, 2> m(aligned, sizes, 0);
MemRef<float, 2> copy(m);
EXPECT_EQ(m == copy, true);
}
// Copy assignment operator.
TEST_F(MemRefTest, CopyAssignment2DMemref) {
// new hard codede MemRef object.
float aligned[] = {0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0,
0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0};
intptr_t sizes[2] = {6, 6};
MemRef<float, 2> m(aligned, sizes, 0);
MemRef<float, 2> copy = m;
EXPECT_EQ(m == copy, true);
}
// Move constructor.
TEST_F(MemRefTest, MoveConstructor2DMemref) {
// new hard codede MemRef object.
float aligned[] = {0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0,
0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0};
intptr_t sizes[2] = {6, 6};
MemRef<float, 2> m(aligned, sizes, 0);
// create a copy of the the hardcoded MemRef and compare it with the stolen
// memref
MemRef<float, 2> m_copy = m;
MemRef<float, 2> move = std::move(m);
// test
EXPECT_EQ(m_copy == move, true);
}
// Move assignment operator.
TEST_F(MemRefTest, MoveAssignment2DMemref) {
// new hard codede MemRef object.
float aligned[] = {0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0,
0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0};
intptr_t sizes[2] = {6, 6};
MemRef<float, 2> m(aligned, sizes, 0);
// create a copy of the hardcoded MemRef and compare it with the stolen MemRef
MemRef<float, 2> m_copy = m;
MemRef<float, 2> move = std::move(m);
// test
EXPECT_EQ(m_copy == move, true);
}