956 lines
35 KiB
C++
956 lines
35 KiB
C++
/**
|
|
*
|
|
* Test functions for <template>
|
|
*
|
|
* @file
|
|
* Copyright © Audi Electronics Venture GmbH. All rights reserved
|
|
*
|
|
* $Author$
|
|
* $Date$
|
|
* $Revision$
|
|
*
|
|
* @remarks
|
|
*
|
|
*/
|
|
|
|
#include <ddl.h>
|
|
#include <gtest/gtest.h>
|
|
#include "../../_common/adtf_compat.h"
|
|
#include "../../_common/compat.h"
|
|
#include "ddl_definitions.h"
|
|
#include "header_importer.h"
|
|
#include "header_header.h"
|
|
#include "header_printer.h"
|
|
#include "header_to_ddl_converter.h"
|
|
#include "ddl_to_header_converter.h"
|
|
|
|
using namespace ddl;
|
|
#ifdef WIN32
|
|
#pragma warning(disable : 4355) // 'this' used in initializer list
|
|
#endif
|
|
|
|
#define LOG_POS LOG_INFO(a_util::strings::format("Starting Test '%s' (Line %d)", __FUNCTION__, __LINE__).c_str());
|
|
|
|
HeaderTypesVec* m_pVecADTFTypes;
|
|
|
|
const ddl::HeaderType* getType(const char* strName)
|
|
{
|
|
for (ddl::HeaderTypesVec::const_iterator pIter = m_pVecADTFTypes->begin(); pIter != m_pVecADTFTypes->end(); pIter++)
|
|
{
|
|
if ((*pIter)->getName().compare(strName) == 0)
|
|
{
|
|
return (*pIter);
|
|
}
|
|
}
|
|
return NULL;
|
|
}
|
|
|
|
void TestHeader(ddl::Header* pHeader, const char* strName, size_t szStructs, size_t szTypedefs, size_t szConstants)
|
|
{
|
|
ASSERT_TRUE(pHeader);
|
|
ASSERT_TRUE(pHeader->getName().compare(strName) == 0);
|
|
ASSERT_TRUE(pHeader->getStructs().size() == szStructs);
|
|
ASSERT_TRUE(pHeader->getTypedefs().size() == szTypedefs);
|
|
ASSERT_TRUE(pHeader->getConstants().size() == szConstants);
|
|
}
|
|
|
|
void TestStruct(Header* pHeader, size_t szStructIndex, size_t szElements, bool bCanContainMoreElements /* = false */)
|
|
{
|
|
ASSERT_TRUE(pHeader);
|
|
ASSERT_TRUE(pHeader->getStructs().size() > szStructIndex);
|
|
HeaderStruct* pStruct = pHeader->getStructs()[szStructIndex];
|
|
ASSERT_TRUE(pStruct);
|
|
if (bCanContainMoreElements)
|
|
{
|
|
ASSERT_TRUE(pStruct->getElements().size() >= szElements);
|
|
}
|
|
else
|
|
{
|
|
ASSERT_TRUE(pStruct->getElements().size() == szElements);
|
|
}
|
|
}
|
|
|
|
|
|
void TestStruct(Header* pHeader, size_t szStructIndex, size_t szElements, const char* strName, size_t szPacking, bool bCanContainMoreElements = false)
|
|
{
|
|
TestStruct(pHeader, szStructIndex, szElements, bCanContainMoreElements);
|
|
ASSERT_TRUE(pHeader->getStructs().size() > 0);
|
|
HeaderStruct* pStruct = pHeader->getStructs()[szStructIndex];
|
|
ASSERT_TRUE(pStruct->getName().compare(strName) == 0);
|
|
size_t test = pStruct->getPacking();
|
|
size_t test2 = szPacking;
|
|
ASSERT_TRUE(pStruct->getPacking() == szPacking);
|
|
}
|
|
|
|
void TestStructElement(Header* pHeader, size_t szStructIndex, size_t szElementIndex, const HeaderType *pType, const char* strName, size_t szArraySize)
|
|
{
|
|
TestStruct(pHeader, szStructIndex, szElementIndex, true);
|
|
ASSERT_TRUE(pHeader->getStructs().size() > 0);
|
|
HeaderStruct* pStruct = pHeader->getStructs()[szStructIndex];
|
|
HeaderStructElement* pElement = pStruct->getElements()[szElementIndex];
|
|
ASSERT_TRUE(pElement);
|
|
ASSERT_TRUE(pElement->getType() == pType);
|
|
ASSERT_TRUE(pElement->getName().compare(strName) == 0);
|
|
ASSERT_TRUE(pElement->getArraySize() == szArraySize);
|
|
}
|
|
|
|
void TestTypedef(Header* pHeader, size_t szTypedefIndex, const HeaderType* pOriginalType, const char* strName, size_t szPacking)
|
|
{
|
|
ASSERT_TRUE(pHeader);
|
|
ASSERT_TRUE(pHeader->getTypedefs().size() > szTypedefIndex);
|
|
HeaderTypedef* pTypedef = pHeader->getTypedefs()[szTypedefIndex];
|
|
ASSERT_TRUE(pTypedef);
|
|
ASSERT_TRUE(pTypedef->getOriginalType() == pOriginalType);
|
|
ASSERT_TRUE(pTypedef->getName().compare(strName) == 0);
|
|
ASSERT_TRUE(pTypedef->getPacking() == szPacking);
|
|
}
|
|
|
|
void TestConstant(Header* pHeader, size_t szConstantIndex, const HeaderType* pType, int64_t i64Value, const char* strName)
|
|
{
|
|
ASSERT_TRUE(pHeader);
|
|
ASSERT_TRUE(pHeader->getConstants().size() > szConstantIndex);
|
|
HeaderConstant* pConstant = pHeader->getConstants()[szConstantIndex];
|
|
ASSERT_TRUE(pConstant);
|
|
ASSERT_TRUE(pConstant->getName().compare(strName) == 0);
|
|
ASSERT_TRUE(pConstant->getType() == pType);
|
|
ASSERT_TRUE(pConstant->asInt64() == i64Value);
|
|
}
|
|
|
|
void TestDDL(DDLDescription* pDescription, const a_util::filesystem::Path &oReferenceFile)
|
|
{
|
|
DDLPrinter oPrinter;
|
|
pDescription->accept(&oPrinter);
|
|
std::string strXML = oPrinter.getXML();
|
|
ASSERT_TRUE(strXML.find("description") != std::string::npos);
|
|
ASSERT_TRUE(pDescription->getHeader()->getLanguageVersion() == ddl::DDLVersion::ddl_version_40);
|
|
ASSERT_TRUE(pDescription->getBaseunits().size() > 0);
|
|
ASSERT_TRUE(pDescription->getDatatypes().size() > 0);
|
|
}
|
|
|
|
|
|
|
|
void test_set_up()
|
|
{
|
|
m_pVecADTFTypes = HeaderImporter::getDefaultTypes();
|
|
}
|
|
|
|
void test_tear_down()
|
|
{
|
|
if (m_pVecADTFTypes)
|
|
{
|
|
for (HeaderTypesVec::iterator pIter = m_pVecADTFTypes->begin(); pIter != m_pVecADTFTypes->end(); pIter++)
|
|
{
|
|
delete *pIter;
|
|
}
|
|
delete m_pVecADTFTypes;
|
|
m_pVecADTFTypes = NULL;
|
|
}
|
|
}
|
|
|
|
struct Testinitializer
|
|
{
|
|
Testinitializer()
|
|
{
|
|
test_set_up();
|
|
}
|
|
~Testinitializer()
|
|
{
|
|
test_tear_down();
|
|
}
|
|
};
|
|
|
|
/**
|
|
* @detail This test makes sure that basic structures can be read.
|
|
*/
|
|
TEST(cTesterHeaderRepresentation,
|
|
SimpleHeaders)
|
|
{
|
|
TEST_REQ("");
|
|
|
|
Testinitializer oTestSetup;
|
|
HeaderImporter oHeaderImporter;
|
|
ASSERT_EQ(a_util::result::SUCCESS, oHeaderImporter.setFileName("files/simple_header.h"));
|
|
ASSERT_EQ(a_util::result::SUCCESS, oHeaderImporter.setKnownTypes(m_pVecADTFTypes));
|
|
ASSERT_EQ(a_util::result::SUCCESS, oHeaderImporter.createNew());
|
|
Header* pHeader = oHeaderImporter.getHeader();
|
|
|
|
TestHeader(pHeader, "simple_header.h", 3, 1, 0);
|
|
|
|
TestStruct(pHeader, 0, 1, "simple_struct1", getType("uint8_t")->getPacking());
|
|
TestStructElement(pHeader, 0, 0, getType("uint8_t"), "a", 1);
|
|
|
|
TestStruct(pHeader, 1, 1, "simple_struct2", getType("tUInt16")->getPacking());
|
|
TestStructElement(pHeader, 1, 0, getType("tUInt16"), "b", 1);
|
|
|
|
TestStruct(pHeader, 2, 1, "simple_struct3", getType("unsigned int")->getPacking());
|
|
TestStructElement(pHeader, 2, 0, getType("unsigned int"), "c", 1);
|
|
|
|
if (pHeader->getStructs().size() >= 2)
|
|
{
|
|
TestTypedef(pHeader, 0, pHeader->getStructs()[2], "simple_struct4", pHeader->getStructs()[2]->getPacking());
|
|
}
|
|
|
|
delete pHeader;
|
|
TearDown();
|
|
}
|
|
|
|
/**
|
|
* @detail This test makes sure typedefs can be read.
|
|
*/
|
|
TEST(cTesterHeaderRepresentation,
|
|
Typedefs)
|
|
{
|
|
TEST_REQ("ACORE-6822");
|
|
|
|
Testinitializer oTestSetup;
|
|
HeaderImporter oHeaderImporter;
|
|
ASSERT_EQ(a_util::result::SUCCESS, oHeaderImporter.setFileName("files/typedef_header.h"));
|
|
ASSERT_EQ(a_util::result::SUCCESS, oHeaderImporter.setKnownTypes(m_pVecADTFTypes));
|
|
ASSERT_EQ(a_util::result::SUCCESS, oHeaderImporter.createNew());
|
|
Header* pHeader = oHeaderImporter.getHeader();
|
|
|
|
TestHeader(pHeader, "typedef_header.h", 0, 5, 0);
|
|
|
|
TestTypedef(pHeader, 0, getType("tUInt32"), "UINT_32", getType("tUInt32")->getPacking());
|
|
TestTypedef(pHeader, 1, getType("tUInt16"), "UINT_16", getType("tUInt16")->getPacking());
|
|
TestTypedef(pHeader, 2, getType("tUInt64"), "UINT_64", getType("tUInt64")->getPacking());
|
|
|
|
if (pHeader->getTypedefs().size() >= 3)
|
|
{
|
|
TestTypedef(pHeader, 3, pHeader->getTypedefs()[2], "uint64", getType("tUInt64")->getPacking());
|
|
TestTypedef(pHeader, 4, pHeader->getTypedefs()[3], "supergross", getType("tUInt64")->getPacking());
|
|
}
|
|
delete pHeader;
|
|
}
|
|
|
|
/**
|
|
* @detail This test makes sure that constants can be read.
|
|
*/
|
|
TEST(cTesterHeaderRepresentation,
|
|
Constants)
|
|
{
|
|
TEST_REQ("ACORE-6822");
|
|
|
|
Testinitializer oTestSetup;
|
|
HeaderImporter oHeaderImporter;
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.setFileName("files/constants_header.h"));
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.setKnownTypes(m_pVecADTFTypes));
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.createNew());
|
|
Header* pHeader = oHeaderImporter.getHeader();
|
|
|
|
TestHeader(pHeader, "constants_header.h", 0, 0, 2);
|
|
|
|
TestConstant(pHeader, 0, getType("tInt16"), 42, "d");
|
|
TestConstant(pHeader, 1, getType("tInt32"), 43, "e");
|
|
delete pHeader;
|
|
}
|
|
|
|
/**
|
|
* @detail This test makes sure that defines can be read.
|
|
*/
|
|
TEST(cTesterHeaderRepresentation,
|
|
Defines)
|
|
{
|
|
TEST_REQ("ACORE-6822, ACORE-7188");
|
|
|
|
Testinitializer oTestSetup;
|
|
HeaderImporter oHeaderImporter;
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.setFileName("files/defines_header.h"));
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.setKnownTypes(m_pVecADTFTypes));
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.createNew());
|
|
Header* pHeader = oHeaderImporter.getHeader();
|
|
|
|
TestHeader(pHeader, "defines_header.h", 0, 0, 7);
|
|
TestConstant(pHeader, 0, getType("tUInt64"), 5, "FIRST_CONSTANT");
|
|
TestConstant(pHeader, 1, getType("tUInt64"), 6, "OTHER_CONSTANT");
|
|
TestConstant(pHeader, 2, getType("tUInt64"), 7, "LAST_CONSTANT");
|
|
TestConstant(pHeader, 3, getType("tUInt64"), 32, "RDB_SIZE_OBJECT_NAME");
|
|
TestConstant(pHeader, 4, getType("tUInt64"), 64, "RDB_SIZE_SCP_NAME");
|
|
TestConstant(pHeader, 5, getType("tUInt64"), 1024, "RDB_SIZE_FILENAME");
|
|
TestConstant(pHeader, 6, getType("tUInt64"), 8, "RDB_SIZE_TRLIGHT_PHASES");
|
|
|
|
delete pHeader;
|
|
|
|
// Now check if a explicitly set default type is used
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.setDefaultIntegerType(getType("tUInt32")));
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.createNew());
|
|
pHeader = oHeaderImporter.getHeader();
|
|
|
|
TestHeader(pHeader, "defines_header.h", 0, 0, 7);
|
|
TestConstant(pHeader, 0, getType("tUInt32"), 5, "FIRST_CONSTANT");
|
|
TestConstant(pHeader, 1, getType("tUInt32"), 6, "OTHER_CONSTANT");
|
|
TestConstant(pHeader, 2, getType("tUInt32"), 7, "LAST_CONSTANT");
|
|
TestConstant(pHeader, 3, getType("tUInt32"), 32, "RDB_SIZE_OBJECT_NAME");
|
|
TestConstant(pHeader, 4, getType("tUInt32"), 64, "RDB_SIZE_SCP_NAME");
|
|
TestConstant(pHeader, 5, getType("tUInt32"), 1024, "RDB_SIZE_FILENAME");
|
|
TestConstant(pHeader, 6, getType("tUInt32"), 8, "RDB_SIZE_TRLIGHT_PHASES");
|
|
delete pHeader;
|
|
}
|
|
|
|
/**
|
|
* @detail This test makes sure that wrong structures, typedefs and defines not parsed.
|
|
*/
|
|
TEST(cTesterHeaderRepresentation,
|
|
FaultyHeader)
|
|
{
|
|
TEST_REQ("ACORE-6822");
|
|
|
|
Testinitializer oTestSetup;
|
|
// Correct defines will be ignored
|
|
HeaderImporter oHeaderImporter;
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.setFileName("files/faulty_header1.h"));
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.setKnownTypes(m_pVecADTFTypes));
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.createNew());
|
|
Header* pHeader = oHeaderImporter.getHeader();
|
|
TestHeader(pHeader, "faulty_header1.h", 0, 0, 0);
|
|
delete pHeader;
|
|
|
|
// Unnamed struct
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.setFileName("files/faulty_header2.h"));
|
|
ASSERT_NE(a_util::result::SUCCESS,oHeaderImporter.createNew());
|
|
pHeader = oHeaderImporter.getHeader();
|
|
delete pHeader;
|
|
|
|
// Member has unknown type
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.setFileName("files/faulty_header3.h"));
|
|
ASSERT_NE(a_util::result::SUCCESS,oHeaderImporter.createNew());
|
|
pHeader = oHeaderImporter.getHeader();
|
|
delete pHeader;
|
|
|
|
// Unnamed struct
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.setFileName("files/faulty_header4.h"));
|
|
ASSERT_NE(a_util::result::SUCCESS,oHeaderImporter.createNew());
|
|
pHeader = oHeaderImporter.getHeader();
|
|
delete pHeader;
|
|
|
|
// Weird typedefs
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.setFileName("files/faulty_header5.h"));
|
|
ASSERT_NE(a_util::result::SUCCESS,oHeaderImporter.createNew());
|
|
pHeader = oHeaderImporter.getHeader();
|
|
delete pHeader;
|
|
}
|
|
|
|
/**
|
|
* @detail This test makes sure that wrong settings will lead to structures,
|
|
* typedefs and defines not being parsed.
|
|
*/
|
|
TEST(cTesterHeaderRepresentation,
|
|
FaultySettings)
|
|
{
|
|
TEST_REQ("ACORE-6822");
|
|
|
|
Testinitializer oTestSetup;
|
|
// Test if define will not be parsed when no default type is set and tUInt64 is not a known type
|
|
// Remove tUInt64 from known types
|
|
for (ddl::HeaderTypesVec::iterator pIter = m_pVecADTFTypes->begin(); pIter != m_pVecADTFTypes->end(); pIter++)
|
|
{
|
|
if ((*pIter)->getName().compare("tUInt64") == 0)
|
|
{
|
|
delete *pIter;
|
|
m_pVecADTFTypes->erase(pIter);
|
|
break;
|
|
}
|
|
}
|
|
HeaderImporter oHeaderImporter;
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.setFileName("files/defines_header.h"));
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.setKnownTypes(m_pVecADTFTypes));
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.setDefaultIntegerType(NULL));
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.createNew());
|
|
Header* pHeader = oHeaderImporter.getHeader();
|
|
TestHeader(pHeader, "defines_header.h", 0, 0, 0);
|
|
delete pHeader;
|
|
// Check importer with faulty filename
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.setFileName("files/does_not_exist_header.h"));
|
|
ASSERT_TRUE(a_util::result::isFailed(oHeaderImporter.createNew()));
|
|
}
|
|
|
|
/**
|
|
* @detail This test makes sure that comments in and around structures,
|
|
* typedefs and defines will be ignored and everything is parsed successfully.
|
|
*/
|
|
TEST(cTesterHeaderRepresentation,
|
|
CommentedHeader)
|
|
{
|
|
TEST_REQ("ACORE-6822");
|
|
|
|
Testinitializer oTestSetup;
|
|
HeaderImporter oHeaderImporter;
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.setFileName("files/commented_header.h"));
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.setKnownTypes(m_pVecADTFTypes));
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.createNew());
|
|
Header* pHeader = oHeaderImporter.getHeader();
|
|
TestHeader(pHeader, "commented_header.h", 3, 3, 3);
|
|
|
|
//Check structures
|
|
TestStruct(pHeader, 0, 1, "simple_struct1", getType("tUInt8")->getPacking());
|
|
TestStructElement(pHeader, 0, 0, getType("tUInt8"), "a", 1);
|
|
|
|
TestStruct(pHeader, 1, 1, "simple_struct2", getType("tUInt16")->getPacking());
|
|
TestStructElement(pHeader, 1, 0, getType("tUInt16"), "b", 1);
|
|
|
|
TestStruct(pHeader, 2, 1, "simple_struct3", getType("tUInt32")->getPacking());
|
|
TestStructElement(pHeader, 2, 0, getType("tUInt32"), "c", 1);
|
|
|
|
// Check typedefs
|
|
TestTypedef(pHeader, 0, getType("tUInt32"), "UINT_32", getType("tUInt32")->getPacking());
|
|
TestTypedef(pHeader, 1, getType("tUInt16"), "UINT_16", getType("tUInt16")->getPacking());
|
|
if (pHeader->getStructs().size() >= 2)
|
|
{
|
|
TestTypedef(pHeader, 2, pHeader->getStructs()[2], "simple_struct4", pHeader->getStructs()[2]->getPacking());
|
|
}
|
|
|
|
// Check constants
|
|
TestConstant(pHeader, 0, getType("tInt16"), 42, "d");
|
|
TestConstant(pHeader, 1, getType("tInt32"), 43, "e");
|
|
TestConstant(pHeader, 2, getType("tUInt64"), 6, "constant1");
|
|
delete pHeader;
|
|
}
|
|
|
|
/**
|
|
* @detail This test makes sure that complex (nested) structures can be parsed successfully.
|
|
*/
|
|
TEST(cTesterHeaderRepresentation,
|
|
ComplexStructs)
|
|
{
|
|
TEST_REQ("ACORE-6822");
|
|
|
|
Testinitializer oTestSetup;
|
|
HeaderImporter oHeaderImporter;
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.setFileName("files/complex_header.h"));
|
|
ASSERT_TRUE(a_util::result::isOk(oHeaderImporter.setKnownTypes(m_pVecADTFTypes)));
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.setDefaultIntegerType(NULL));
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.createNew());
|
|
Header* pHeader = oHeaderImporter.getHeader();
|
|
|
|
TestHeader(pHeader, "complex_header.h", 5, 1, 0);
|
|
|
|
TestStruct(pHeader, 0, 1, "simple_struct1", getType("tUInt8")->getPacking());
|
|
TestStructElement(pHeader, 0, 0, getType("tUInt8"), "a", 1);
|
|
|
|
TestStruct(pHeader, 1, 1, "simple_struct2", getType("tUInt16")->getPacking());
|
|
TestStructElement(pHeader, 1, 0, getType("tUInt16"), "b", 1);
|
|
|
|
TestStruct(pHeader, 2, 1, "simple_struct3", getType("tUInt32")->getPacking());
|
|
TestStructElement(pHeader, 2, 0, getType("tUInt32"), "c", 1);
|
|
|
|
if (pHeader->getStructs().size() >= 2)
|
|
{
|
|
TestStruct(pHeader, 3, 3, "complex_struct1", pHeader->getStructs()[2]->getPacking());
|
|
TestStructElement(pHeader, 3, 0, getType("tUInt16"), "a", 1);
|
|
TestStructElement(pHeader, 3, 1, pHeader->getStructs()[0], "b", 1);
|
|
TestStructElement(pHeader, 3, 2, pHeader->getStructs()[2], "c", 1);
|
|
|
|
TestStruct(pHeader, 4, 3, "complex_struct2", pHeader->getStructs()[2]->getPacking());
|
|
TestStructElement(pHeader, 4, 0, pHeader->getStructs()[0], "d", 1);
|
|
TestStructElement(pHeader, 4, 1, pHeader->getStructs()[2], "e", 1);
|
|
TestStructElement(pHeader, 4, 2, pHeader->getStructs()[3], "f", 1);
|
|
|
|
TestTypedef(pHeader, 0, pHeader->getStructs()[2], "simple_struct4", pHeader->getStructs()[2]->getPacking());
|
|
}
|
|
delete pHeader;
|
|
}
|
|
|
|
/**
|
|
* @detail This test makes sure that structures containing array elements can be parsed successfully.
|
|
*/
|
|
TEST(cTesterHeaderRepresentation,
|
|
ArrayStructs)
|
|
{
|
|
TEST_REQ("ACORE-6822");
|
|
|
|
Testinitializer oTestSetup;
|
|
HeaderImporter oHeaderImporter;
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.setFileName("files/array_header.h"));
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.setKnownTypes(m_pVecADTFTypes));
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.setDefaultIntegerType(NULL));
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.createNew());
|
|
Header* pHeader = oHeaderImporter.getHeader();
|
|
|
|
TestHeader(pHeader, "array_header.h", 4, 0, 2);
|
|
TestConstant(pHeader, 0, getType("tUInt64"), 8, "count1");
|
|
TestConstant(pHeader, 1, getType("tUInt8"), 9, "count2");
|
|
|
|
TestStruct(pHeader, 0, 1, "simple_array_struct", getType("tUInt8")->getPacking());
|
|
TestStructElement(pHeader, 0, 0, getType("tUInt8"), "a", 5);
|
|
|
|
TestStruct(pHeader, 1, 1, "simple_struct1", getType("tUInt8")->getPacking());
|
|
TestStructElement(pHeader, 1, 0, getType("tUInt8"), "b", 1);
|
|
|
|
TestStruct(pHeader, 2, 5, "complex_array_struct1", getType("tUInt8")->getPacking());
|
|
TestStructElement(pHeader, 2, 0, getType("tUInt8"), "c", 1);
|
|
|
|
if (pHeader->getStructs().size() >= 1)
|
|
{
|
|
TestStructElement(pHeader, 2, 1, pHeader->getStructs()[1], "d", 1);
|
|
TestStructElement(pHeader, 2, 2, pHeader->getStructs()[0], "f", 1);
|
|
TestStructElement(pHeader, 2, 3, pHeader->getStructs()[1], "g", 6);
|
|
TestStructElement(pHeader, 2, 4, pHeader->getStructs()[0], "h", 7);
|
|
|
|
TestStruct(pHeader, 3, 5, "complex_array_struct2", getType("tUInt8")->getPacking());
|
|
TestStructElement(pHeader, 3, 0, getType("tUInt8"), "i", 8);
|
|
TestStructElement(pHeader, 3, 1, pHeader->getStructs()[1], "j", 1);
|
|
TestStructElement(pHeader, 3, 2, pHeader->getStructs()[0], "k", 1);
|
|
TestStructElement(pHeader, 3, 3, pHeader->getStructs()[1], "l", 9);
|
|
TestStructElement(pHeader, 3, 4, pHeader->getStructs()[0], "m", 10);
|
|
}
|
|
delete pHeader;
|
|
}
|
|
|
|
/**
|
|
* @detail This test makes sure that the packing information stated by #pragma pack can be parsed successfully.
|
|
*/
|
|
TEST(cTesterHeaderRepresentation,
|
|
StructsPacking)
|
|
{
|
|
TEST_REQ("ACORE-6822");
|
|
|
|
Testinitializer oTestSetup;
|
|
HeaderImporter oHeaderImporter;
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.setFileName("files/packing_header.h"));
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.setKnownTypes(m_pVecADTFTypes));
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.setDefaultIntegerType(NULL));
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.createNew());
|
|
Header* pHeader = oHeaderImporter.getHeader();
|
|
|
|
TestHeader(pHeader, "packing_header.h", 5, 1, 0);
|
|
|
|
TestStruct(pHeader, 0, 1, "simple_struct1", getType("tUInt8")->getPacking());
|
|
TestStructElement(pHeader, 0, 0, getType("tUInt8"), "a", 1);
|
|
|
|
TestStruct(pHeader, 1, 1, "simple_struct2", 1);
|
|
TestStructElement(pHeader, 1, 0, getType("tUInt16"), "b", 1);
|
|
|
|
TestStruct(pHeader, 2, 1, "simple_struct3", 2);
|
|
TestStructElement(pHeader, 2, 0, getType("tUInt32"), "c", 1);
|
|
|
|
TestStruct(pHeader, 3, 1, "simple_struct5", 2);
|
|
TestStructElement(pHeader, 3, 0, getType("tUInt64"), "d", 1);
|
|
|
|
TestStruct(pHeader, 4, 1, "simple_struct6", 1);
|
|
TestStructElement(pHeader, 4, 0, getType("tUInt64"), "e", 1);
|
|
|
|
if (pHeader->getStructs().size() >= 2)
|
|
{
|
|
TestTypedef(pHeader, 0, pHeader->getStructs()[2], "simple_struct4", pHeader->getStructs()[2]->getPacking());
|
|
}
|
|
delete pHeader;
|
|
}
|
|
|
|
/**
|
|
* @detail This test makes sure that a simple header can be printed.
|
|
*/
|
|
TEST(cTesterHeaderRepresentation,
|
|
PrintSimpleHeaders)
|
|
{
|
|
TEST_REQ("ACORE-6822");
|
|
|
|
Testinitializer oTestSetup;
|
|
HeaderImporter oHeaderImporter;
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.setFileName("files/simple_header.h"));
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.setKnownTypes(m_pVecADTFTypes));
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.createNew());
|
|
Header* pHeader = oHeaderImporter.getHeader();
|
|
HeaderPrinter oPrinter;
|
|
pHeader->accept(&oPrinter);
|
|
std::string strExpected;
|
|
a_util::filesystem::readTextFile(a_util::filesystem::Path("files/simple_header_expected.h"), strExpected);
|
|
strExpected.erase(std::remove(strExpected.begin(), strExpected.end(), '\r'), strExpected.end());
|
|
std::string test = oPrinter.getHeader();
|
|
ASSERT_TRUE(strExpected.compare(oPrinter.getHeader()) == 0);
|
|
delete pHeader;
|
|
}
|
|
|
|
/**
|
|
* @detail This test makes sure that a complex header can be printed.
|
|
*/
|
|
TEST(cTesterHeaderRepresentation,
|
|
PrintComplexStructs)
|
|
{
|
|
TEST_REQ("ACORE-6822");
|
|
|
|
Testinitializer oTestSetup;
|
|
HeaderImporter oHeaderImporter;
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.setFileName("files/complex_header.h"));
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.setKnownTypes(m_pVecADTFTypes));
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.createNew());
|
|
Header* pHeader = oHeaderImporter.getHeader();
|
|
HeaderPrinter oPrinter;
|
|
pHeader->accept(&oPrinter);
|
|
std::string strExpected;
|
|
a_util::filesystem::readTextFile(a_util::filesystem::Path("files/complex_header_expected.h"), strExpected);
|
|
strExpected.erase(std::remove(strExpected.begin(), strExpected.end(), '\r'), strExpected.end());
|
|
ASSERT_TRUE(strExpected.compare(oPrinter.getHeader()) == 0);
|
|
delete pHeader;
|
|
}
|
|
|
|
/**
|
|
* @detail This test makes sure that a header with arrays can be printed.
|
|
*/
|
|
TEST(cTesterHeaderRepresentation,
|
|
PrintArrayStructs)
|
|
{
|
|
TEST_REQ("ACORE-6822");
|
|
|
|
Testinitializer oTestSetup;
|
|
HeaderImporter oHeaderImporter;
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.setFileName("files/array_header.h"));
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.setKnownTypes(m_pVecADTFTypes));
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.createNew());
|
|
Header* pHeader = oHeaderImporter.getHeader();
|
|
HeaderPrinter oPrinter;
|
|
pHeader->accept(&oPrinter);
|
|
std::string strExpected;
|
|
a_util::filesystem::readTextFile(a_util::filesystem::Path("files/array_header_expected.h"), strExpected);
|
|
strExpected.erase(std::remove(strExpected.begin(), strExpected.end(), '\r'), strExpected.end());
|
|
ASSERT_TRUE(strExpected.compare(oPrinter.getHeader()) == 0);
|
|
delete pHeader;
|
|
}
|
|
|
|
/**
|
|
* @detail This test makes sure that a header with packing can be printed.
|
|
*/
|
|
TEST(cTesterHeaderRepresentation,
|
|
PrintPackingStructs)
|
|
{
|
|
TEST_REQ("ACORE-6822");
|
|
|
|
Testinitializer oTestSetup;
|
|
HeaderImporter oHeaderImporter;
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.setFileName("files/packing_header.h"));
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.setKnownTypes(m_pVecADTFTypes));
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.createNew());
|
|
Header* pHeader = oHeaderImporter.getHeader();
|
|
HeaderPrinter oPrinter;
|
|
pHeader->accept(&oPrinter);
|
|
std::string strExpected;
|
|
a_util::filesystem::readTextFile(a_util::filesystem::Path("files/packing_header_expected.h"), strExpected);
|
|
strExpected.erase(std::remove(strExpected.begin(), strExpected.end(), '\r'), strExpected.end());
|
|
ASSERT_TRUE(strExpected.compare(oPrinter.getHeader()) == 0);
|
|
delete pHeader;
|
|
}
|
|
|
|
/**
|
|
* @detail This test makes sure that a header with typedefs can be printed.
|
|
*/
|
|
TEST(cTesterHeaderRepresentation,
|
|
PrintTypedefs)
|
|
{
|
|
TEST_REQ("ACORE-6822");
|
|
|
|
Testinitializer oTestSetup;
|
|
HeaderImporter oHeaderImporter;
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.setFileName("files/typedef_header.h"));
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.setKnownTypes(m_pVecADTFTypes));
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.createNew());
|
|
Header* pHeader = oHeaderImporter.getHeader();
|
|
HeaderPrinter oPrinter;
|
|
pHeader->accept(&oPrinter);
|
|
std::string strExpected;
|
|
a_util::filesystem::readTextFile(a_util::filesystem::Path("files/typedef_header_expected.h"), strExpected);
|
|
strExpected.erase(std::remove(strExpected.begin(), strExpected.end(), '\r'), strExpected.end());
|
|
ASSERT_TRUE(strExpected.compare(oPrinter.getHeader()) == 0);
|
|
delete pHeader;
|
|
}
|
|
|
|
/**
|
|
* @detail This test makes sure that a simple header can be converted to DDL.
|
|
*/
|
|
TEST(cTesterHeaderRepresentation,
|
|
ConvertSimpleHeaderToDDL)
|
|
{
|
|
TEST_REQ("ACORE-6822");
|
|
|
|
Testinitializer oTestSetup;
|
|
HeaderImporter oHeaderImporter;
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.setFileName("files/simple_header.h"));
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.setKnownTypes(m_pVecADTFTypes));
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.createNew());
|
|
Header* pHeader = oHeaderImporter.getHeader();
|
|
HeaderToDDLConverter oConverter;
|
|
pHeader->accept(&oConverter);
|
|
oConverter.createNew();
|
|
TestDDL(oConverter.getDDL(), a_util::filesystem::Path("files/simple_header_expected.description"));
|
|
|
|
delete pHeader;
|
|
delete oConverter.getDDL();
|
|
}
|
|
|
|
/**
|
|
* @detail This test makes sure that a complex header can be converted to DDL.
|
|
*/
|
|
TEST(cTesterHeaderRepresentation,
|
|
ConvertComplexHeaderToDDL)
|
|
{
|
|
TEST_REQ("ACORE-6822");
|
|
|
|
Testinitializer oTestSetup;
|
|
HeaderImporter oHeaderImporter;
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.setFileName("files/complex_header.h"));
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.setKnownTypes(m_pVecADTFTypes));
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.createNew());
|
|
Header* pHeader = oHeaderImporter.getHeader();
|
|
HeaderToDDLConverter oConverter;
|
|
pHeader->accept(&oConverter);
|
|
oConverter.createNew();
|
|
TestDDL(oConverter.getDDL(), a_util::filesystem::Path("files/complex_header_expected.description"));
|
|
|
|
delete pHeader;
|
|
delete oConverter.getDDL();
|
|
}
|
|
|
|
/**
|
|
* @detail This test makes sure that a header with array information can be converted to DDL.
|
|
*/
|
|
TEST(cTesterHeaderRepresentation,
|
|
ConvertArrayHeaderToDDL)
|
|
{
|
|
TEST_REQ("ACORE-6822");
|
|
|
|
Testinitializer oTestSetup;
|
|
HeaderImporter oHeaderImporter;
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.setFileName("files/array_header.h"));
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.setKnownTypes(m_pVecADTFTypes));
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.createNew());
|
|
Header* pHeader = oHeaderImporter.getHeader();
|
|
HeaderToDDLConverter oConverter;
|
|
pHeader->accept(&oConverter);
|
|
oConverter.createNew();
|
|
TestDDL(oConverter.getDDL(), a_util::filesystem::Path("files/array_header_expected.description"));
|
|
|
|
delete pHeader;
|
|
delete oConverter.getDDL();
|
|
}
|
|
|
|
/**
|
|
* @detail This test makes sure that a header with packing information can be converted to DDL.
|
|
*/
|
|
TEST(cTesterHeaderRepresentation,
|
|
ConvertPackingHeaderToDDL)
|
|
{
|
|
TEST_REQ("ACORE-6822");
|
|
|
|
Testinitializer oTestSetup;
|
|
HeaderImporter oHeaderImporter;
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.setFileName("files/packing_header.h"));
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.setKnownTypes(m_pVecADTFTypes));
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.createNew());
|
|
Header* pHeader = oHeaderImporter.getHeader();
|
|
HeaderToDDLConverter oConverter;
|
|
pHeader->accept(&oConverter);
|
|
oConverter.createNew();
|
|
TestDDL(oConverter.getDDL(), a_util::filesystem::Path("files/packing_header_expected.description"));
|
|
|
|
delete pHeader;
|
|
delete oConverter.getDDL();
|
|
}
|
|
|
|
/**
|
|
* @detail This test makes sure that a VTD RDB header with can be converted to DDL.
|
|
*/
|
|
TEST(cTesterHeaderRepresentation,
|
|
ConvertRDBHeaderToDDL)
|
|
{
|
|
TEST_REQ("ACORE-6822");
|
|
|
|
Testinitializer oTestSetup;
|
|
HeaderImporter oHeaderImporter;
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.setFileName("files/viRDBIcd.h"));
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.setKnownTypes(m_pVecADTFTypes));
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.createNew());
|
|
Header* pHeader = oHeaderImporter.getHeader();
|
|
HeaderToDDLConverter oConverter;
|
|
pHeader->accept(&oConverter);
|
|
oConverter.createNew();
|
|
TestDDL(oConverter.getDDL(), a_util::filesystem::Path("files/viRDBIcd_expected.description"));
|
|
|
|
delete pHeader;
|
|
delete oConverter.getDDL();
|
|
}
|
|
|
|
/**
|
|
* @detail This test makes sure that a single struct and its dependencies can be converted to DDL.
|
|
*/
|
|
TEST(cTesterHeaderRepresentation,
|
|
ConvertStructToDDL)
|
|
{
|
|
TEST_REQ("ACORE-6822");
|
|
|
|
Testinitializer oTestSetup;
|
|
HeaderImporter oHeaderImporter;
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.setFileName("files/complex_header.h"));
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.setKnownTypes(m_pVecADTFTypes));
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.createNew());
|
|
Header* pHeader = oHeaderImporter.getHeader();
|
|
HeaderToDDLConverter oConverter;
|
|
TestHeader(pHeader, "complex_header.h", 5, 1, 0);
|
|
if (pHeader->getStructs().size() >= 4)
|
|
{
|
|
pHeader->getStructs()[4]->accept(&oConverter);
|
|
}
|
|
oConverter.createNew();
|
|
TestDDL(oConverter.getDDL(), a_util::filesystem::Path("files/complex_struct2_expected.description"));
|
|
delete pHeader;
|
|
delete oConverter.getDDL();
|
|
}
|
|
|
|
/**
|
|
* @detail This test makes sure that multiple structures and its dependencies can be converted to DDL.
|
|
*/
|
|
TEST(cTesterHeaderRepresentation,
|
|
ConvertTwoStructsToDDL)
|
|
{
|
|
TEST_REQ("ACORE-6822");
|
|
|
|
Testinitializer oTestSetup;
|
|
HeaderImporter oHeaderImporter;
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.setFileName("files/viRDBIcd.h"));
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.setKnownTypes(m_pVecADTFTypes));
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.createNew());
|
|
Header* pHeader = oHeaderImporter.getHeader();
|
|
HeaderToDDLConverter oConverter;
|
|
TestHeader(pHeader, "viRDBIcd.h", 55, 0, 221);
|
|
if (pHeader->getStructs().size() >= 24)
|
|
{
|
|
pHeader->getStructs()[10]->accept(&oConverter);
|
|
pHeader->getStructs()[24]->accept(&oConverter);
|
|
}
|
|
oConverter.createNew();
|
|
TestDDL(oConverter.getDDL(), a_util::filesystem::Path("files/viRDBIcd_extract_expected.description"));
|
|
delete pHeader;
|
|
delete oConverter.getDDL();
|
|
}
|
|
|
|
/**
|
|
* @detail This test makes sure that simple DDL structures can be converted to a header.
|
|
*/
|
|
TEST(cTesterHeaderRepresentation,
|
|
ConvertSimpleStructsToHeader)
|
|
{
|
|
TEST_REQ("ACORE-6822");
|
|
|
|
Testinitializer oTestSetup;
|
|
DDLImporter oImporter(true, false);
|
|
oImporter.setFile("files/adtf2.description");
|
|
oImporter.createNew();
|
|
DDLToHeaderConverter oConverter;
|
|
oConverter.setKnownTypes(m_pVecADTFTypes);
|
|
ASSERT_TRUE(oImporter.getDDL());
|
|
oImporter.getDDL()->accept(&oConverter);
|
|
oConverter.createNew();
|
|
oConverter.getHeader();
|
|
Header* pHeader = oConverter.getHeader();
|
|
HeaderPrinter oPrinter;
|
|
pHeader->accept(&oPrinter);
|
|
std::string strExpected;
|
|
a_util::filesystem::readTextFile(a_util::filesystem::Path("files/adtf_expected.h"), strExpected);
|
|
strExpected.erase(std::remove(strExpected.begin(), strExpected.end(), '\r'), strExpected.end());
|
|
ASSERT_TRUE(strExpected.compare(oPrinter.getHeader()) == 0);
|
|
delete pHeader;
|
|
oImporter.destroyDDL();
|
|
}
|
|
|
|
/**
|
|
* @detail This test makes sure that complex DDL structures can be converted to a header.
|
|
*/
|
|
TEST(cTesterHeaderRepresentation,
|
|
ConvertComplexStructsToHeader)
|
|
{
|
|
TEST_REQ("ACORE-6822");
|
|
|
|
Testinitializer oTestSetup;
|
|
DDLImporter oImporter(true, false);
|
|
oImporter.setFile("files/viRDBIcd_expected.description");
|
|
oImporter.createNew();
|
|
DDLToHeaderConverter oConverter;
|
|
oConverter.setKnownTypes(m_pVecADTFTypes);
|
|
ASSERT_TRUE(oImporter.getDDL());
|
|
oImporter.getDDL()->accept(&oConverter);
|
|
oConverter.createNew();
|
|
oConverter.getHeader();
|
|
Header* pHeader = oConverter.getHeader();
|
|
HeaderPrinter oPrinter;
|
|
pHeader->accept(&oPrinter);
|
|
std::string strExpected;
|
|
a_util::filesystem::readTextFile(a_util::filesystem::Path("files/viRDBIcd_expected.h"), strExpected);
|
|
strExpected.erase(std::remove(strExpected.begin(), strExpected.end(), '\r'), strExpected.end());
|
|
ASSERT_TRUE(strExpected.compare(oPrinter.getHeader()) == 0);
|
|
delete pHeader;
|
|
oImporter.destroyDDL();
|
|
}
|
|
|
|
/**
|
|
* @detail This test makes sure that selected DDL structures can be converted to a header.
|
|
*/
|
|
TEST(cTesterHeaderRepresentation,
|
|
ConvertTwoStructsToHeader)
|
|
{
|
|
TEST_REQ("ACORE-6822");
|
|
|
|
Testinitializer oTestSetup;
|
|
DDLImporter oImporter;
|
|
oImporter.setFile("files/viRDBIcd_expected.description");
|
|
oImporter.createNew();
|
|
DDLToHeaderConverter oConverter;
|
|
oConverter.setKnownTypes(m_pVecADTFTypes);
|
|
ASSERT_TRUE(oImporter.getDDL());
|
|
oImporter.getDDL()->getStructByName("RDB_DRIVETRAIN_t")->accept(&oConverter);
|
|
oImporter.getDDL()->getStructByName("RDB_SENSOR_STATE_t")->accept(&oConverter);
|
|
oConverter.createNew();
|
|
oConverter.getHeader();
|
|
Header* pHeader = oConverter.getHeader();
|
|
HeaderPrinter oPrinter;
|
|
pHeader->accept(&oPrinter);
|
|
std::string strExpected;
|
|
a_util::filesystem::readTextFile(a_util::filesystem::Path("files/viRDBIcd_extract_expected.h"), strExpected);
|
|
strExpected.erase(std::remove(strExpected.begin(), strExpected.end(), '\r'), strExpected.end());
|
|
ASSERT_TRUE(strExpected.compare(oPrinter.getHeader()) == 0);
|
|
delete pHeader;
|
|
oImporter.destroyDDL();
|
|
}
|
|
|
|
/**
|
|
* @detail This test makes sure that the default types defined in the importer have the correct packing.
|
|
*/
|
|
TEST(cTesterHeaderRepresentation,
|
|
CheckDefaultTypes)
|
|
{
|
|
TEST_REQ("ACORE-6822");
|
|
|
|
Testinitializer oTestSetup;
|
|
// Check default types
|
|
#ifdef __ADTF_WIN32
|
|
ASSERT_TRUE(getType("float")->getPacking() == 8);
|
|
#endif
|
|
#ifdef __ADTF_WIN64
|
|
ASSERT_TRUE(getType("float")->getPacking() == 8);
|
|
#endif
|
|
#ifdef __ADTF_LINUX32
|
|
ASSERT_TRUE(getType("float")->getPacking() == 4);
|
|
#endif
|
|
#ifdef __ADTF_LINUX64
|
|
ASSERT_TRUE(getType("float")->getPacking() == 8);
|
|
#endif
|
|
// Check default packing (no #pragma pack stated)
|
|
HeaderImporter oHeaderImporter;
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.setFileName("files/default_types_header.h"));
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.setKnownTypes(m_pVecADTFTypes));
|
|
ASSERT_EQ(a_util::result::SUCCESS,oHeaderImporter.createNew());
|
|
Header* pHeader = oHeaderImporter.getHeader();
|
|
|
|
TestHeader(pHeader, "default_types_header.h", 1, 0, 0);
|
|
|
|
#ifdef __GNUC__
|
|
#ifdef __ADTF32
|
|
TestStruct(pHeader, 0, 2, "doubles", 4);
|
|
#endif
|
|
#ifdef __ADTF64
|
|
TestStruct(pHeader, 0, 2, "doubles", 8);
|
|
#endif
|
|
#endif
|
|
#ifdef _MSC_VER
|
|
TestStruct(pHeader, 0, 2, "doubles", getType("double")->getPacking());
|
|
#endif
|
|
delete pHeader;
|
|
}
|
|
|
|
|