Implements missing methods for DataSpecification classes and appropriate tests.
Change-Id: I10e14250f2e205dc789e47213558be6bbc090c3c
Signed-off-by: Johannes Wendel <johannes.wendel@iese.fraunhofer.de>
diff --git a/sdks/c++/basys.sdk.cc/include/BaSyx/submodel/api_v2/common/ILangStringSet.h b/sdks/c++/basys.sdk.cc/include/BaSyx/submodel/api_v2/common/ILangStringSet.h
index b68fac7..a9e41ae 100644
--- a/sdks/c++/basys.sdk.cc/include/BaSyx/submodel/api_v2/common/ILangStringSet.h
+++ b/sdks/c++/basys.sdk.cc/include/BaSyx/submodel/api_v2/common/ILangStringSet.h
@@ -13,7 +13,7 @@
class ILangStringSet
{
public:
- using langCodeSet_t = const std::unordered_set<std::string>;
+ using langCodeSet_t = std::unordered_set<std::string>;
public:
virtual ~ILangStringSet();
diff --git a/sdks/c++/basys.sdk.cc/include/BaSyx/submodel/enumerations/DataTypeIEC61360.h b/sdks/c++/basys.sdk.cc/include/BaSyx/submodel/enumerations/DataTypeIEC61360.h
index 1c6de20..1c7c0e7 100644
--- a/sdks/c++/basys.sdk.cc/include/BaSyx/submodel/enumerations/DataTypeIEC61360.h
+++ b/sdks/c++/basys.sdk.cc/include/BaSyx/submodel/enumerations/DataTypeIEC61360.h
@@ -19,6 +19,7 @@
Time,
Timestamp,
Url,
+ Undefined
};
class DataTypeIEC61360_
diff --git a/sdks/c++/basys.sdk.cc/include/BaSyx/submodel/enumerations/LevelType.h b/sdks/c++/basys.sdk.cc/include/BaSyx/submodel/enumerations/LevelType.h
index 2da4a2f..e90858e 100644
--- a/sdks/c++/basys.sdk.cc/include/BaSyx/submodel/enumerations/LevelType.h
+++ b/sdks/c++/basys.sdk.cc/include/BaSyx/submodel/enumerations/LevelType.h
@@ -11,6 +11,7 @@
Min,
Nom,
Typ,
+ Undefined
};
class LevelType_
diff --git a/sdks/c++/basys.sdk.cc/src/submodel/submodel/enumerations/DataTypeIEC61360.cpp b/sdks/c++/basys.sdk.cc/src/submodel/submodel/enumerations/DataTypeIEC61360.cpp
index d3c8f95..af1d490 100644
--- a/sdks/c++/basys.sdk.cc/src/submodel/submodel/enumerations/DataTypeIEC61360.cpp
+++ b/sdks/c++/basys.sdk.cc/src/submodel/submodel/enumerations/DataTypeIEC61360.cpp
@@ -9,7 +9,7 @@
using enum_pair_t = std::pair<const char*, DataTypeIEC61360>;
-static const std::array<enum_pair_t, 12> string_to_enum =
+static const std::array<enum_pair_t, 13> string_to_enum =
{
std::make_pair("Boolean", DataTypeIEC61360::Boolean),
std::make_pair("Date", DataTypeIEC61360::Date),
@@ -23,6 +23,7 @@
std::make_pair("Time", DataTypeIEC61360::Time),
std::make_pair("Timestamp", DataTypeIEC61360::Timestamp),
std::make_pair("Url", DataTypeIEC61360::Url),
+ std::make_pair("Undefined", DataTypeIEC61360::Undefined),
};
DataTypeIEC61360 DataTypeIEC61360_::from_string(const std::string & name)
diff --git a/sdks/c++/basys.sdk.cc/src/submodel/submodel/enumerations/LevelType.cpp b/sdks/c++/basys.sdk.cc/src/submodel/submodel/enumerations/LevelType.cpp
index 3220104..b69745a 100644
--- a/sdks/c++/basys.sdk.cc/src/submodel/submodel/enumerations/LevelType.cpp
+++ b/sdks/c++/basys.sdk.cc/src/submodel/submodel/enumerations/LevelType.cpp
@@ -9,12 +9,13 @@
using enum_pair_t = std::pair<const char*, LevelType>;
-static const std::array<enum_pair_t, 4> string_to_enum =
+static const std::array<enum_pair_t, 5> string_to_enum =
{
std::make_pair("Max", LevelType::Max),
std::make_pair("Min", LevelType::Min),
std::make_pair("Nom", LevelType::Nom),
std::make_pair("Typ", LevelType::Typ),
+ std::make_pair("Undefined", LevelType::Undefined),
};
LevelType LevelType_::from_string(const std::string & name)
diff --git a/sdks/c++/basys.sdk.cc/src/submodel/submodel/map_v2/common/LangStringSet.cpp b/sdks/c++/basys.sdk.cc/src/submodel/submodel/map_v2/common/LangStringSet.cpp
index c43bc89..3fa0294 100644
--- a/sdks/c++/basys.sdk.cc/src/submodel/submodel/map_v2/common/LangStringSet.cpp
+++ b/sdks/c++/basys.sdk.cc/src/submodel/submodel/map_v2/common/LangStringSet.cpp
@@ -26,10 +26,10 @@
LangStringSet::langCodeSet_t LangStringSet::getLanguageCodes() const
{
auto &langStrings = this->map.Get<basyx::object::object_list_t &>();
- std::vector<std::string> langCodes;
- std::transform(langStrings.begin(), langStrings.end(), std::back_inserter(langCodes),
- [](basyx::object langSet) { return langSet.getProperty(Path::Language).GetStringContent(); });
- return LangStringSet::langCodeSet_t(langCodes.begin(), langCodes.end());
+ LangStringSet::langCodeSet_t langCodes;
+ for (auto & langCode : langStrings)
+ langCodes.emplace(langCode.getProperty(Path::Language).GetStringContent());
+ return langCodes;
}
const std::string &LangStringSet::get(const std::string &languageCode) const
diff --git a/sdks/c++/basys.sdk.cc/src/submodel/submodel/map_v2/dataspecification/DataSpecificationIEC61360.cpp b/sdks/c++/basys.sdk.cc/src/submodel/submodel/map_v2/dataspecification/DataSpecificationIEC61360.cpp
index 6408d06..6a3b47f 100644
--- a/sdks/c++/basys.sdk.cc/src/submodel/submodel/map_v2/dataspecification/DataSpecificationIEC61360.cpp
+++ b/sdks/c++/basys.sdk.cc/src/submodel/submodel/map_v2/dataspecification/DataSpecificationIEC61360.cpp
@@ -74,7 +74,12 @@
}
DataTypeIEC61360 DataSpecificationIEC61360::getDataType() const
-{}
+{
+ auto data_type = this->map.getProperty(Path::DataType);
+ if (data_type.IsNull())
+ return DataTypeIEC61360::Undefined;
+ return DataTypeIEC61360_::from_string(data_type.GetStringContent());
+}
std::string * const DataSpecificationIEC61360::getValueFormat()
{
@@ -92,8 +97,10 @@
LevelType DataSpecificationIEC61360::getLevelType() const
{
- throw std::logic_error{"Function not yet implemented."};
- //return from_string(this->map.getProperty(Path::LevelType));
+ auto level_type = this->map.getProperty(Path::LevelType);
+ if (level_type.IsNull())
+ return LevelType::Undefined;
+ return LevelType_::from_string(level_type.GetStringContent());
}
void DataSpecificationIEC61360::setPreferredName(const api::ILangStringSet & preferredName)
@@ -123,8 +130,7 @@
void DataSpecificationIEC61360::setDataType(DataTypeIEC61360 dataType)
{
- throw std::logic_error{"Function not yet implemented."};
- //this->map.insertKey(Path::DataType, to_string(dataType));
+ this->map.insertKey(Path::DataType, DataTypeIEC61360_::to_string(dataType));
}
void DataSpecificationIEC61360::setValueFormat(const std::string & valueFormat)
@@ -161,8 +167,7 @@
void DataSpecificationIEC61360::setLevelType(LevelType levelType)
{
- throw std::logic_error{"Function not yet implemented."};
- //this->map.insertKey(Path::LevelType, to_string(levelType));
+ this->map.insertKey(Path::LevelType, LevelType_::to_string(levelType));
}
}
diff --git a/sdks/c++/basys.sdk.cc/src/submodel/submodel/simple/common/LangStringSet.cpp b/sdks/c++/basys.sdk.cc/src/submodel/submodel/simple/common/LangStringSet.cpp
index 6e4fe02..d1972a6 100644
--- a/sdks/c++/basys.sdk.cc/src/submodel/submodel/simple/common/LangStringSet.cpp
+++ b/sdks/c++/basys.sdk.cc/src/submodel/submodel/simple/common/LangStringSet.cpp
@@ -19,10 +19,10 @@
LangStringSet::langCodeSet_t LangStringSet::getLanguageCodes() const
{
- std::vector<std::string> langCodes;
- for (auto langCode : this->langStrings)
- langCodes.push_back(langCode.first);
- return LangStringSet::langCodeSet_t(langCodes.begin(), langCodes.end());
+ LangStringSet::langCodeSet_t langCodes;
+ for (auto & langCode : this->langStrings)
+ langCodes.insert(langCode.first);
+ return langCodes;
};
diff --git a/sdks/c++/basys.sdk.cc/tests/regression/submodel/map_v2/dataspecification/test_DataSpecificationIEC61360.cpp b/sdks/c++/basys.sdk.cc/tests/regression/submodel/map_v2/dataspecification/test_DataSpecificationIEC61360.cpp
index cfffea7..4eb70c5 100644
--- a/sdks/c++/basys.sdk.cc/tests/regression/submodel/map_v2/dataspecification/test_DataSpecificationIEC61360.cpp
+++ b/sdks/c++/basys.sdk.cc/tests/regression/submodel/map_v2/dataspecification/test_DataSpecificationIEC61360.cpp
@@ -83,10 +83,10 @@
this->data_spec->setValueFormat("testValueFormat");
ASSERT_EQ(*this->data_spec->getValueFormat(), std::string("testValueFormat"));
}
-/* TODO
+
TEST_F(DataSpecificationIEC61360Test, TestDataType)
{
- ASSERT_EQ(this->data_spec->getDataType(), DataTypeIEC61360::Unknown);
+ ASSERT_EQ(this->data_spec->getDataType(), DataTypeIEC61360::Undefined);
this->data_spec->setDataType(DataTypeIEC61360::Rational);
ASSERT_EQ(this->data_spec->getDataType(), DataTypeIEC61360::Rational);
@@ -94,11 +94,11 @@
TEST_F(DataSpecificationIEC61360Test, TestLevelType)
{
- ASSERT_EQ(this->data_spec->getLevelType(), LevelType::Unknown);
+ ASSERT_EQ(this->data_spec->getLevelType(), LevelType::Undefined);
this->data_spec->setLevelType(LevelType::Min);
ASSERT_EQ(this->data_spec->getLevelType(), LevelType::Min);
-}*/
+}
TEST_F(DataSpecificationIEC61360Test, TestUnitId)
{