data: Tests for DataType

* Added Array and Reference Modifier for DataType.
* Created basic tests for DataType.
* Fixed bug where qualifiers of modifiers were not copied correctly.
* Fixed bug where DataType modifiers were applied in the wrong (reverse) order.
This commit is contained in:
malte_langkabel
2014-07-14 11:29:44 +02:00
parent 9284397d46
commit ce54bd50ed
18 changed files with 228 additions and 69 deletions
+1
View File
@@ -3,6 +3,7 @@ add_files(
ConfigManagerTestSuite.h
CxxParserTestSuite.h
DataTypeTestSuite.h
FileSystemTestSuite.h
GraphTestSuite.h
LogManagerTestSuite.h
+87
View File
@@ -0,0 +1,87 @@
#include "cxxtest/TestSuite.h"
#include "data/type/DataType.h"
#include "data/type/modifier/DataTypeModifierArray.h"
#include "data/type/modifier/DataTypeModifierPointer.h"
#include "data/type/modifier/DataTypeModifierReference.h"
class DataTypeTestSuite: public CxxTest::TestSuite
{
public:
void test_datatype_created_with_name_has_no_qualifiers_or_modifiers()
{
DataType dataType("int");
TS_ASSERT_EQUALS("int", dataType.getFullTypeName());
}
void test_datatype_created_with_name_and_empty_qualifiers_has_no_qualifiers_or_modifiers()
{
DataTypeQualifierList qualifierList;
DataType dataType("int", qualifierList);
TS_ASSERT_EQUALS("int", dataType.getFullTypeName());
}
void test_datatype_created_with_name_and_const_qualifier_has_no_modifiers()
{
DataTypeQualifierList qualifierList;
qualifierList.addQualifier(DataTypeQualifierList::QUALIFIER_CONST);
DataType dataType("int", qualifierList);
TS_ASSERT_EQUALS("int const", dataType.getFullTypeName());
}
void test_datatype_created_with_name_and_empty_modifierstack_has_no_modifiers()
{
DataTypeQualifierList qualifierList;
DataTypeModifierStack modifierStack;
DataType dataType("int", qualifierList, modifierStack);
TS_ASSERT_EQUALS("int", dataType.getFullTypeName());
}
void test_datatype_created_with_name_and_array_modifier_has_array_modifier()
{
DataTypeQualifierList qualifierList;
DataTypeModifierStack modifierStack;
modifierStack.push(std::make_shared<DataTypeModifierArray>());
DataType dataType("int", qualifierList, modifierStack);
TS_ASSERT_EQUALS("int []", dataType.getFullTypeName());
}
void test_datatype_created_with_name_and_pointer_modifier_has_pointer_modifier()
{
DataTypeQualifierList qualifierList;
DataTypeModifierStack modifierStack;
modifierStack.push(std::make_shared<DataTypeModifierPointer>());
DataType dataType("int", qualifierList, modifierStack);
TS_ASSERT_EQUALS("int *", dataType.getFullTypeName());
}
void test_datatype_created_with_name_and_reference_modifier_has_reference_modifier()
{
DataTypeQualifierList qualifierList;
DataTypeModifierStack modifierStack;
modifierStack.push(std::make_shared<DataTypeModifierReference>());
DataType dataType("int", qualifierList, modifierStack);
TS_ASSERT_EQUALS("int &", dataType.getFullTypeName());
}
void test_datatype_created_with_name_and_const_pointer_modifier_has_const_pointer_modifier()
{
DataTypeQualifierList qualifierList;
DataTypeModifierStack modifierStack;
std::shared_ptr<DataTypeModifier> modifier = std::make_shared<DataTypeModifierPointer>();
modifier->addQualifier(DataTypeQualifierList::QUALIFIER_CONST);
modifierStack.push(modifier);
DataType dataType("int", qualifierList, modifierStack);
TS_ASSERT_EQUALS("int * const", dataType.getFullTypeName());
}
void test_datatype_created_with_name_and_pointer_pointer_modifier_has_pointer_pointer_modifier()
{
DataTypeQualifierList qualifierList;
DataTypeModifierStack modifierStack;
modifierStack.push(std::make_shared<DataTypeModifierPointer>());
modifierStack.push(std::make_shared<DataTypeModifierPointer>());
DataType dataType("int", qualifierList, modifierStack);
TS_ASSERT_EQUALS("int * *", dataType.getFullTypeName());
}
};