blob: fb09ad473b752b3e72ebbc979e5420ad5f47e067 [file] [log] [blame]
/*******************************************************************************
* 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 v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* 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)
}