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 }