1 #include "gtest/gtest.h"
2 #include "multiarr.hpp"
3
4 using namespace libecpint;
5
6 class ThreeIndexTest : public testing::Test {
7 protected:
8 ThreeIndex<double> matrix_;
9
SetUp()10 void SetUp() override {
11 matrix_ = ThreeIndex<double>(3, 2, 5);
12 for (int i = 0; i < 3; i++)
13 for (int j = 0; j < 2; j++)
14 for (int k = 0; k < 5; k++)
15 matrix_(i, j, k) = 2.5;
16 }
17 };
18
TEST_F(ThreeIndexTest,Accessor)19 TEST_F(ThreeIndexTest, Accessor) {
20 EXPECT_DOUBLE_EQ(matrix_(1, 1, 1), 2.5);
21 matrix_(1, 1, 1) = 5.4;
22 EXPECT_DOUBLE_EQ(matrix_(1, 1, 1), 5.4);
23 EXPECT_DOUBLE_EQ(matrix_(0, 0, 4), 2.5);
24 }
25
TEST_F(ThreeIndexTest,Fill)26 TEST_F(ThreeIndexTest, Fill) {
27 EXPECT_DOUBLE_EQ(matrix_(0, 0, 0), 2.5);
28 matrix_.fill(-3.91);
29 EXPECT_DOUBLE_EQ(matrix_(0, 0, 0), -3.91);
30 }
31
TEST_F(ThreeIndexTest,CopyCtor)32 TEST_F(ThreeIndexTest, CopyCtor) {
33 ThreeIndex<double> tmp;
34 EXPECT_EQ(tmp.dims[0], 0);
35 EXPECT_EQ(tmp.dims[1], 0);
36 EXPECT_EQ(tmp.dims[2], 0);
37
38 tmp = matrix_;
39 EXPECT_EQ(tmp.dims[0], 3);
40 EXPECT_EQ(tmp.dims[1], 2);
41 EXPECT_EQ(tmp.dims[2], 5);
42
43 tmp(2, 1, 1) = 4.4;
44 EXPECT_DOUBLE_EQ(tmp(2, 1, 1), 4.4);
45 EXPECT_DOUBLE_EQ(matrix_(0, 0, 3), 2.5);
46 }