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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
|
/*******************************************************************************
* Copyright (c) 2016 protos software gmbh (http://www.protos.de).
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* CONTRIBUTORS:
* Thomas Schuetz (initial contribution)
*
*******************************************************************************/
#include "StaticArrayTest.h"
#include "common/containers/StaticArray.h"
#include "common/messaging/Address.h"
#include "util/etAssert.h"
using namespace etRuntime;
void StaticArrayTest::testConstructors(void) {
// default constructors for simple types
StaticArray<int32, 5> intArray1; // nothing happens, but should not crash
StaticArray<int32, 5> intArray2(3);
StaticArray<int32, 5> intArray3(intArray2);
EXPECT_EQUAL_INT32(m_caseId, "default value for intArray2 wrong", 3,
intArray2[0]);
EXPECT_EQUAL_INT32(m_caseId, "default value for intArray2 wrong", 3,
intArray2[2]);
EXPECT_EQUAL_INT32(m_caseId, "default value for intArray2 wrong", 3,
intArray2[4]);
EXPECT_EQUAL_INT32(m_caseId, "copy constructor for intArray3 wrong", 3,
intArray3[0]);
EXPECT_EQUAL_INT32(m_caseId, "copy constructor for intArray3 wrong", 3,
intArray3[2]);
EXPECT_EQUAL_INT32(m_caseId, "copy constructor for intArray3 wrong", 3,
intArray3[4]);
// default constructors for classes
StaticArray<Address, 10> addressArray1; // nothing happens, but should not crash
StaticArray<Address, 10> addressArray2(Address(1, 2, 3));
StaticArray<Address, 10> addressArray3(addressArray2);
EXPECT_EQUAL_INT32(m_caseId, "default value for addressArray2 wrong", 1,
addressArray2[0].m_nodeID);
EXPECT_EQUAL_INT32(m_caseId, "default value for addressArray2 wrong", 2,
addressArray2[2].m_threadID);
EXPECT_EQUAL_INT32(m_caseId, "default value for addressArray2 wrong", 3,
addressArray2[9].m_objectID);
EXPECT_EQUAL_INT32(m_caseId, "copy constructor for intArray3 wrong", 1,
addressArray3[9].m_nodeID);
EXPECT_EQUAL_INT32(m_caseId, "copy constructor for intArray3 wrong", 2,
addressArray3[2].m_threadID);
EXPECT_EQUAL_INT32(m_caseId, "copy constructor for intArray3 wrong", 3,
addressArray3[0].m_objectID);
}
void StaticArrayTest::testSettersAndGetters(void) {
StaticArray<int32, 5> intArray1(99); // nothing happens, but should not crash
StaticArray<Address, 10> addressArray1(Address(11, 22, 33)); // nothing happens, but should not crash
// getSize
EXPECT_EQUAL_INT32(m_caseId, "getSize wrong", 5, intArray1.getSize());
EXPECT_EQUAL_INT32(m_caseId, "getSize wrong", 10, addressArray1.getSize());
// getData
EXPECT_EQUAL_INT32(m_caseId, "getData wrong", 99, intArray1.getData()[3]);
EXPECT_EQUAL_INT32(m_caseId, "getData wrong", 33, addressArray1.getData()[7].m_objectID);
}
void StaticArrayTest::testOperators(void) {
StaticArray<int32, 5> intArray1(999);
StaticArray<Address, 10> addressArray1(Address(11, 22, 33));
// set some values with index operator
intArray1[0]=0;
intArray1[2]=22;
intArray1[4]=44;
addressArray1[0]=Address(0,1,2);
addressArray1[7]=Address(7,8,9);
addressArray1[9]=Address(9,10,11);
// check index operator
EXPECT_EQUAL_INT32(m_caseId, "index operator wrong", 0, intArray1.getData()[0]);
EXPECT_EQUAL_INT32(m_caseId, "index operator wrong", 22, intArray1.getData()[2]);
EXPECT_EQUAL_INT32(m_caseId, "index operator wrong", 44, intArray1.getData()[4]);
EXPECT_EQUAL_INT32(m_caseId, "index operator wrong", 0, intArray1[0]);
EXPECT_EQUAL_INT32(m_caseId, "index operator wrong", 22, intArray1[2]);
EXPECT_EQUAL_INT32(m_caseId, "index operator wrong", 44, intArray1[4]);
EXPECT_EQUAL_INT32(m_caseId, "index operator wrong", 0, addressArray1.getData()[0].m_nodeID);
EXPECT_EQUAL_INT32(m_caseId, "index operator wrong", 8, addressArray1.getData()[7].m_threadID);
EXPECT_EQUAL_INT32(m_caseId, "index operator wrong", 11, addressArray1.getData()[9].m_objectID);
EXPECT_EQUAL_INT32(m_caseId, "index operator wrong", 0, addressArray1[0].m_nodeID);
EXPECT_EQUAL_INT32(m_caseId, "index operator wrong", 8, addressArray1[7].m_threadID);
EXPECT_EQUAL_INT32(m_caseId, "index operator wrong", 11, addressArray1[9].m_objectID);
// check copy operator
StaticArray<int32, 5> intArray2, intArray3;
StaticArray<Address, 10> addressArray2, addressArray3;
// checking for primitive datatypes
intArray2 = intArray3 = intArray1;
EXPECT_EQUAL_INT32(m_caseId, "copy operator wrong", 0, intArray2[0]);
EXPECT_EQUAL_INT32(m_caseId, "copy operator wrong", 22, intArray2[2]);
EXPECT_EQUAL_INT32(m_caseId, "copy operator wrong", 44, intArray2[4]);
EXPECT_EQUAL_INT32(m_caseId, "copy operator wrong", 0, intArray3[0]);
EXPECT_EQUAL_INT32(m_caseId, "copy operator wrong", 22, intArray3[2]);
EXPECT_EQUAL_INT32(m_caseId, "copy operator wrong", 44, intArray3[4]);
// checking for classes
addressArray2 = addressArray3 = addressArray1;
EXPECT_EQUAL_INT32(m_caseId, "copy operator wrong", 0, addressArray2[0].m_nodeID);
EXPECT_EQUAL_INT32(m_caseId, "copy operator wrong", 8, addressArray2[7].m_threadID);
EXPECT_EQUAL_INT32(m_caseId, "copy operator wrong", 11, addressArray2[9].m_objectID);
EXPECT_EQUAL_INT32(m_caseId, "copy operator wrong", 0, addressArray3[0].m_nodeID);
EXPECT_EQUAL_INT32(m_caseId, "copy operator wrong", 8, addressArray3[7].m_threadID);
EXPECT_EQUAL_INT32(m_caseId, "copy operator wrong", 11, addressArray3[9].m_objectID);
// Compare Operator
EXPECT_TRUE(m_caseId, "compare operator wrong", intArray2 == intArray3);
intArray2[4] = 99;
EXPECT_FALSE(m_caseId, "compare operator wrong", intArray2 == intArray3);
EXPECT_TRUE(m_caseId, "compare operator wrong", addressArray2 == addressArray3);
addressArray2[9] = Address(99, 88, 77);
EXPECT_FALSE(m_caseId, "compare operator wrong", addressArray2 == addressArray3);
}
void StaticArrayTest::runAllTestCases() {
ADD_TESTCASE_CPP(testConstructors)
ADD_TESTCASE_CPP(testSettersAndGetters)
ADD_TESTCASE_CPP(testOperators)
}
|