Added tests for ConnectedRelationshipElement and refactores some files
Change-Id: Idc90abbcfe12f4c1c748a6bc76a1ca099d2366bb
Signed-off-by: Johannes Wendel <johannes.wendel@iese.fraunhofer.de>
diff --git a/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/ConnectedElement.cpp b/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/ConnectedElement.cpp
index 5eca5c5..8f16f4e 100644
--- a/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/ConnectedElement.cpp
+++ b/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/ConnectedElement.cpp
@@ -5,6 +5,7 @@
*/
#include "ConnectedElement.h"
+#include "aas/qualifier/IReferable.h"
namespace basyx {
namespace aas {
@@ -41,6 +42,29 @@
void ConnectedElement::updateLocalValue(const std::string & path, const basyx::any value)
{
this->local_map->operator[](path) = value;
+}
+
+
+void ConnectedElement::setId(const std::string & id)
+{
+ this->setProxyValue(qualifier::ReferablePaths::IDSHORT, id);
+}
+
+std::string ConnectedElement::getId() const
+{
+ return this->getProxyValue(qualifier::ReferablePaths::IDSHORT);
+}
+
+
+void ConnectedElement::setProxyValue(const std::string & path, const basyx::any value) const
+{
+ this->getProxy()->updateElementValue(path, value);
+}
+
+std::string ConnectedElement::getProxyValue(const std::string & path) const
+{
+ auto value = getProxy()->readElementValue(path);
+ return value.Get<std::string>();
}
}
diff --git a/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/ConnectedElement.h b/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/ConnectedElement.h
index fabe5c2..8a1cb0f 100644
--- a/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/ConnectedElement.h
+++ b/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/ConnectedElement.h
@@ -9,6 +9,7 @@
#include "vab/core/proxy/VABElementProxy.h"
+#include "aas/submodelelement/IElement.h"
#include "basyx/types.h"
@@ -19,7 +20,7 @@
namespace aas {
namespace backend {
-class ConnectedElement
+class ConnectedElement : IElement
{
public:
ConnectedElement(const std::shared_ptr<vab::core::proxy::IVABElementProxy> & proxy);
@@ -30,10 +31,20 @@
basyx::any getLocalValue(const std::string & path) const;
void setLocalValue(const std::string & path, const basyx::any value);
void updateLocalValue(const std::string & path, const basyx::any value);
+
+ // Inherited via IElement
+ virtual void setId(const std::string & id) override;
+ virtual std::string getId() const override;
+
private:
std::shared_ptr<vab::core::proxy::IVABElementProxy> proxy;
std::shared_ptr<basyx::objectMap_t> local_map;
+
+protected:
+ std::string getProxyValue(const std::string & path) const;
+ void setProxyValue(const std::string & path, const basyx::any value) const;
+
};
}
diff --git a/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/ConnectedDataElement.cpp b/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/ConnectedDataElement.cpp
index b1e92ed..cf4ba2d 100644
--- a/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/ConnectedDataElement.cpp
+++ b/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/ConnectedDataElement.cpp
@@ -108,17 +108,6 @@
this->setProxyValue(qualifier::haskind::Paths::KIND, kind);
}
-void ConnectedDataElement::setProxyValue(const std::string & path, const basyx::any value) const
-{
- this->getProxy()->updateElementValue(path, value);
-}
-
-std::string ConnectedDataElement::getProxyValue(const std::string & path) const
-{
- auto value = getProxy()->readElementValue(path);
- return value.Get<std::string>();
-}
-
basyx::objectCollection_t ConnectedDataElement::getProxyCollection(const std::string & path) const
{
auto value = this->getProxy()->readElementValue(path);
diff --git a/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/ConnectedDataElement.h b/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/ConnectedDataElement.h
index 94d8971..af69625 100644
--- a/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/ConnectedDataElement.h
+++ b/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/ConnectedDataElement.h
@@ -17,7 +17,7 @@
namespace aas {
namespace backend {
-class ConnectedDataElement : public submodelelement::connected::ConnectedSubmodelElement
+class ConnectedDataElement : public connected::ConnectedSubmodelElement
{
public:
ConnectedDataElement(std::shared_ptr<vab::core::proxy::IVABElementProxy> proxy);
@@ -51,9 +51,6 @@
void setHasKindReference(const std::string & kind) override;
private:
- std::string getProxyValue(const std::string & path) const;
- void setProxyValue(const std::string & path, const basyx::any value) const;
-
basyx::objectCollection_t getProxyCollection(const std::string & path) const;
protected:
diff --git a/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/ConnectedRelationshipElement.cpp b/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/ConnectedRelationshipElement.cpp
index 5144631..c1a733f 100644
--- a/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/ConnectedRelationshipElement.cpp
+++ b/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/ConnectedRelationshipElement.cpp
@@ -5,3 +5,38 @@
*/
#include "ConnectedRelationshipElement.h"
+
+namespace basyx {
+namespace aas {
+namespace backend {
+namespace connected {
+
+
+ConnectedRelationshipElement::ConnectedRelationshipElement(std::shared_ptr<vab::core::proxy::IVABElementProxy> proxy) :
+ ConnectedSubmodelElement(proxy)
+{}
+
+void ConnectedRelationshipElement::setFirst(const basyx::any & first)
+{
+ this->setProxyValue(submodelelement::RelationshipElementPath::FIRST, first);
+}
+
+basyx::any ConnectedRelationshipElement::getFirst() const
+{
+ return this->getProxyValue(submodelelement::RelationshipElementPath::FIRST);
+}
+
+void ConnectedRelationshipElement::setSecond(const basyx::any & second)
+{
+ this->setProxyValue(submodelelement::RelationshipElementPath::FIRST, second);
+}
+
+basyx::any ConnectedRelationshipElement::getSecond() const
+{
+ return this->getProxyValue(submodelelement::RelationshipElementPath::SECOND);
+}
+
+}
+}
+}
+}
diff --git a/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/ConnectedRelationshipElement.h b/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/ConnectedRelationshipElement.h
index d867319..c217769 100644
--- a/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/ConnectedRelationshipElement.h
+++ b/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/ConnectedRelationshipElement.h
@@ -7,18 +7,32 @@
#ifndef AAS_BACKEND_SUBMODELELEMENT_CONNECTEDRELATIONSHIPELEMENT_H_
#define AAS_BACKEND_SUBMODELELEMENT_CONNECTEDRELATIONSHIPELEMENT_H_
-namespace basyx {
+#include "basyx/types.h"
+#include "vab/core/proxy/IVABElementProxy.h"
+#include "aas/submodelelement/IRelationshipElement.h"
+#include "aas/backend/connected/submodelelement/ConnectedSubmodelElement.h"
+
+#include <string>
+
+namespace basyx {
namespace aas {
namespace backend {
-namespace connected {
+namespace connected {
-class ConnectedRelationshipElement
+class ConnectedRelationshipElement : public ConnectedSubmodelElement, submodelelement::IRelationshipElement
{
public:
- ~ConnectedRelationshipElement();
+ ConnectedRelationshipElement(std::shared_ptr<vab::core::proxy::IVABElementProxy> proxy);
+ ~ConnectedRelationshipElement() = default;
+
+ // Inherited via IRelationshipElement
+ virtual void setFirst(const basyx::any & first) override;
+ virtual basyx::any getFirst() const override;
+ virtual void setSecond(const basyx::any & second) override;
+ virtual basyx::any getSecond() const override;
};
-
+
}
}
diff --git a/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/ConnectedSubmodelElement.cpp b/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/ConnectedSubmodelElement.cpp
index 4159011..dff7f57 100644
--- a/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/ConnectedSubmodelElement.cpp
+++ b/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/ConnectedSubmodelElement.cpp
@@ -7,6 +7,91 @@
#include "ConnectedSubmodelElement.h"
#include "aas/backend/connected/ConnectedElement.h"
-basyx::aas::submodelelement::connected::ConnectedSubmodelElement::ConnectedSubmodelElement(std::shared_ptr<vab::core::proxy::IVABElementProxy> proxy) :
+namespace basyx {
+namespace aas {
+namespace backend {
+namespace connected {
+
+ConnectedSubmodelElement::ConnectedSubmodelElement(std::shared_ptr<vab::core::proxy::IVABElementProxy> proxy) :
backend::ConnectedElement(proxy)
{}
+
+void ConnectedSubmodelElement::setId(const std::string & id)
+{}
+
+std::string ConnectedSubmodelElement::getId() const
+{
+ return std::string();
+}
+
+basyx::objectCollection_t ConnectedSubmodelElement::getDataSpecificationReferences() const
+{
+ auto collection = this->getProxy()->readElementValue(qualifier::HasDataSpecificationPaths::HASDATASPECIFICATION);
+ return collection.Get<basyx::objectCollection_t>();
+}
+
+void ConnectedSubmodelElement::setDataSpecificationReferences(const basyx::objectCollection_t & references)
+{
+ //Check if all subclasses do the same
+}
+
+std::string ConnectedSubmodelElement::getIdShort() const
+{
+ return std::string();
+}
+
+void ConnectedSubmodelElement::setIdShort(const std::string & idShort)
+{}
+
+std::string ConnectedSubmodelElement::getCategory() const
+{
+ return std::string();
+}
+
+void ConnectedSubmodelElement::setCategory(const std::string & category)
+{}
+
+std::string ConnectedSubmodelElement::getDescription() const
+{
+ return std::string();
+}
+
+void ConnectedSubmodelElement::setDescription(const std::string & description)
+{}
+
+basyx::any ConnectedSubmodelElement::getParent() const
+{
+ return basyx::any();
+}
+
+void ConnectedSubmodelElement::setParent(const basyx::any & parent)
+{}
+
+void ConnectedSubmodelElement::setQualifier(const basyx::objectCollection_t & qualifiers)
+{}
+
+basyx::objectCollection_t ConnectedSubmodelElement::getQualifier() const
+{
+ return basyx::objectCollection_t();
+}
+
+basyx::any ConnectedSubmodelElement::getSemanticId() const
+{
+ return basyx::any();
+}
+
+void ConnectedSubmodelElement::setSemanticID(const basyx::any & semantic_identifier)
+{}
+
+std::string ConnectedSubmodelElement::getHasKindReference() const
+{
+ return std::string();
+}
+
+void ConnectedSubmodelElement::setHasKindReference(const std::string & kind)
+{}
+
+}
+}
+}
+}
diff --git a/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/ConnectedSubmodelElement.h b/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/ConnectedSubmodelElement.h
index ebf3733..f2760cb 100644
--- a/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/ConnectedSubmodelElement.h
+++ b/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/ConnectedSubmodelElement.h
@@ -10,16 +10,38 @@
namespace basyx {
namespace aas {
-namespace submodelelement {
+namespace backend {
namespace connected {
-class ConnectedSubmodelElement : public backend::ConnectedElement, public ISubmodelElement
+class ConnectedSubmodelElement : public backend::ConnectedElement, public submodelelement::ISubmodelElement
{
public:
ConnectedSubmodelElement(std::shared_ptr<vab::core::proxy::IVABElementProxy> proxy);
+
+ // Inherited via ConnectedElement
+ virtual void setId(const std::string & id) override;
+ virtual std::string getId() const override;
+
+ // Inherited via ISubmodelElement
+ virtual basyx::objectCollection_t getDataSpecificationReferences() const override;
+ virtual void setDataSpecificationReferences(const basyx::objectCollection_t & references) override;
+ virtual std::string getIdShort() const override;
+ virtual void setIdShort(const std::string & idShort) override;
+ virtual std::string getCategory() const override;
+ virtual void setCategory(const std::string & category) override;
+ virtual std::string getDescription() const override;
+ virtual void setDescription(const std::string & description) override;
+ virtual basyx::any getParent() const override;
+ virtual void setParent(const basyx::any & parent) override;
+ virtual void setQualifier(const basyx::objectCollection_t & qualifiers) override;
+ virtual basyx::objectCollection_t getQualifier() const override;
+ virtual basyx::any getSemanticId() const override;
+ virtual void setSemanticID(const basyx::any & semantic_identifier) override;
+ virtual std::string getHasKindReference() const override;
+ virtual void setHasKindReference(const std::string & kind) override;
};
}
}
}
-}
\ No newline at end of file
+}
diff --git a/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/property/ConnectedMapProperty.cpp b/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/property/ConnectedMapProperty.cpp
index 7afcff8..73b4fb0 100644
--- a/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/property/ConnectedMapProperty.cpp
+++ b/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/property/ConnectedMapProperty.cpp
@@ -5,3 +5,68 @@
*/
#include "ConnectedMapProperty.h"
+#include "vab/core/util/VABPath.h"
+
+namespace basyx {
+namespace aas {
+namespace backend {
+namespace connected {
+
+using namespace submodelelement::property;
+
+ConnectedMapProperty::ConnectedMapProperty(std::shared_ptr<vab::core::proxy::IVABElementProxy> proxy) :
+ ConnectedProperty(PropertyType::Map, proxy)
+{}
+
+basyx::any ConnectedMapProperty::getValue(std::string key)
+{
+ return this->getMap().at(key);
+}
+
+void ConnectedMapProperty::put(std::string key, basyx::any value)
+{
+ basyx::vab::core::VABPath path(PropertyPaths::VALUE);
+ path.append(key);
+ this->setProxyValue(path, value);
+}
+
+void ConnectedMapProperty::set(basyx::objectMap_t map)
+{
+ this->setProxyValue(PropertyPaths::VALUE, map);
+}
+
+basyx::objectCollection_t ConnectedMapProperty::getKeys()
+{
+ auto map = this->getMap();
+ basyx::objectCollection_t keys;
+ keys.reserve(map.size());
+
+ for ( auto entry : map ) {
+ keys.push_back(entry.first);
+ }
+
+ return keys;
+}
+
+int ConnectedMapProperty::getEntryCount()
+{
+ return this->getMap().size();
+}
+
+void ConnectedMapProperty::remove(std::string key)
+{
+ basyx::vab::core::VABPath path(PropertyPaths::VALUE);
+ path.append(key);
+ this->getProxy()->deleteElement(path);
+}
+
+basyx::objectMap_t ConnectedMapProperty::getMap()
+{
+ auto map = this->getProxy()->readElementValue(PropertyPaths::VALUE).Get<basyx::objectMap_t>();
+ return map;
+}
+
+}
+}
+}
+}
diff --git a/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/property/ConnectedMapProperty.h b/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/property/ConnectedMapProperty.h
index 49d7b89..5d4c9f3 100644
--- a/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/property/ConnectedMapProperty.h
+++ b/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/property/ConnectedMapProperty.h
@@ -7,15 +7,30 @@
#ifndef AAS_BACKEND_SUBMODELELEMENT_PROPERTY_CONNECTEDMAPPROPERTY_H_
#define AAS_BACKEND_SUBMODELELEMENT_PROPERTY_CONNECTEDMAPPROPERTY_H_
+#include "ConnectedProperty.h"
+#include "aas/submodelelement/property/IMapProperty.h"
+
namespace basyx {
namespace aas {
namespace backend {
namespace connected {
-class ConnectedMapProperty
+class ConnectedMapProperty : public submodelelement::property::IMapProperty, ConnectedProperty
{
public:
- ~ConnectedMapProperty();
+ ConnectedMapProperty(std::shared_ptr<vab::core::proxy::IVABElementProxy> proxy);
+ ~ConnectedMapProperty() = default;
+
+ // Inherited via IMapProperty
+ virtual basyx::any getValue(std::string key) override;
+ virtual void put(std::string key, basyx::any value) override;
+ virtual void set(basyx::objectMap_t map) override;
+ virtual basyx::objectCollection_t getKeys() override;
+ virtual int getEntryCount() override;
+ virtual void remove(std::string key) override;
+
+private:
+ basyx::objectMap_t getMap();
};
}
diff --git a/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/property/ConnectedProperty.cpp b/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/property/ConnectedProperty.cpp
index fe5e787..cc28da1 100644
--- a/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/property/ConnectedProperty.cpp
+++ b/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/property/ConnectedProperty.cpp
@@ -8,8 +8,10 @@
namespace basyx {
namespace aas {
-namespace submodelelement {
-namespace property {
+namespace backend {
+namespace connected {
+
+using namespace submodelelement::property;
ConnectedProperty::ConnectedProperty(PropertyType type, std::shared_ptr<vab::core::proxy::IVABElementProxy> proxy) :
backend::ConnectedDataElement(proxy),
@@ -44,12 +46,12 @@
void ConnectedProperty::setId(const std::string & id)
{
- setIdWithLocalCheck(id);
+ this->setId(id);
}
std::string ConnectedProperty::getId() const
{
- return getIdWithLocalCheck();
+ return this->getId();
}
}
diff --git a/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/property/ConnectedProperty.h b/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/property/ConnectedProperty.h
index afca092..9d49c77 100644
--- a/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/property/ConnectedProperty.h
+++ b/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/property/ConnectedProperty.h
@@ -7,23 +7,23 @@
#ifndef AAS_BACKEND_CONNECTEDPROPERTY_H_
#define AAS_BACKEND_CONNECTEDPROPERTY_H_
-#include "aas/backend/connected/submodelelement/ConnectedDataElement.h"
#include "aas/submodelelement/property/IProperty.h"
+#include "aas/backend/connected/submodelelement/ConnectedDataElement.h"
#include "basyx/types.h"
namespace basyx {
namespace aas {
-namespace submodelelement {
-namespace property {
+namespace backend {
+namespace connected {
-class ConnectedProperty : public IProperty, public backend::ConnectedDataElement
+class ConnectedProperty : public submodelelement::property::IProperty, public backend::ConnectedDataElement
{
public:
- ConnectedProperty(PropertyType type, std::shared_ptr<vab::core::proxy::IVABElementProxy> proxy);
+ ConnectedProperty(submodelelement::property::PropertyType type, std::shared_ptr<vab::core::proxy::IVABElementProxy> proxy);
// Inherited via IProperty
- virtual PropertyType getPropertyType() const override;
+ virtual submodelelement::property::PropertyType getPropertyType() const override;
virtual void setValue(const basyx::any & value) override;
virtual basyx::any getValue() const override;
@@ -31,12 +31,12 @@
virtual void setValueId(const basyx::any & valueId) override;
virtual basyx::any getValueId() const override;
- // Inherited via IProperty : IElement
+ //Inherited via IProperty : IElement
virtual void setId(const std::string & id) override;
virtual std::string getId() const override;
private:
- PropertyType type;
+ submodelelement::property::PropertyType type;
};
diff --git a/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/property/blob/ConnectedBlob.cpp b/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/property/blob/ConnectedBlob.cpp
index dd0c4db..eb83649 100644
--- a/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/property/blob/ConnectedBlob.cpp
+++ b/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/property/blob/ConnectedBlob.cpp
@@ -5,3 +5,40 @@
*/
#include "ConnectedBlob.h"
+#include "aas/submodelelement/property/IProperty.h"
+
+namespace basyx {
+namespace aas {
+namespace backend {
+namespace connected {
+
+ConnectedBlob::ConnectedBlob(std::shared_ptr<vab::core::proxy::IVABElementProxy> proxy) :
+ ConnectedDataElement(proxy)
+{}
+
+void ConnectedBlob::setValue(const basyx::any & value)
+{
+ this->setProxyValue(submodelelement::property::PropertyPaths::VALUE, value);
+}
+
+basyx::any ConnectedBlob::getValue() const
+{
+ //todo
+ //return this->getProxyValue(submodelelement::property::PropertyPaths::VALUE);
+ return basyx::any(/*basyx::byte_array()*/);
+}
+
+void ConnectedBlob::setMimeType(const std::string & mimeType)
+{
+ this->setProxyValue(submodelelement::BlobPath::MIMETYPE, mimeType);
+}
+
+std::string ConnectedBlob::getMimeType() const
+{
+ return this->getProxyValue(submodelelement::BlobPath::MIMETYPE);
+}
+
+}
+}
+}
+}
diff --git a/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/property/blob/ConnectedBlob.h b/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/property/blob/ConnectedBlob.h
index 6c839cc..d173608 100644
--- a/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/property/blob/ConnectedBlob.h
+++ b/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/property/blob/ConnectedBlob.h
@@ -7,17 +7,33 @@
#ifndef AAS_BACKEND_SUBMODELELEMENT_PROPERTY_CONNECTEDBLOB_H_
#define AAS_BACKEND_SUBMODELELEMENT_PROPERTY_CONNECTEDBLOB_H_
-namespace basyx {
+#include "aas/submodelelement/property/blob/IBlob.h"
+#include "aas/backend/connected/submodelelement/ConnectedDataElement.h"
+#include "aas/BlobType.h"
+#include "aas/MimeType.h"
+
+namespace basyx {
namespace aas {
namespace backend {
-namespace connected {
+namespace connected {
-class ConnectedBlob
+class ConnectedBlob : public submodelelement::IBlob, ConnectedDataElement
{
public:
- ~ConnectedBlob();
+ ConnectedBlob(std::shared_ptr<vab::core::proxy::IVABElementProxy> proxy);
+ ~ConnectedBlob() = default;
+
+ // Inherited via IBlob
+ virtual void setValue(const basyx::any & value) override;
+
+ virtual basyx::any getValue() const override;
+
+ virtual void setMimeType(const std::string & mimeType) override;
+
+ virtual std::string getMimeType() const override;
+
};
-
+
}
}
}
diff --git a/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/property/file/ConnectedFile.cpp b/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/property/file/ConnectedFile.cpp
index fab8afa..24d802d 100644
--- a/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/property/file/ConnectedFile.cpp
+++ b/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/property/file/ConnectedFile.cpp
@@ -5,3 +5,40 @@
*/
#include "ConnectedFile.h"
+#include "aas/submodelelement/property/IProperty.h"
+#include "aas/submodelelement/property/blob/IBlob.h"
+
+namespace basyx {
+namespace aas {
+namespace backend {
+namespace connected {
+
+ConnectedFile::ConnectedFile(std::shared_ptr<vab::core::proxy::IVABElementProxy> proxy) :
+ ConnectedDataElement(proxy)
+{}
+
+void ConnectedFile::setValue(const std::string & value)
+{
+ this->setProxyValue(submodelelement::property::PropertyPaths::VALUE, value);
+}
+
+std::string ConnectedFile::getValue() const
+{
+ return this->getProxyValue(submodelelement::property::PropertyPaths::VALUE);
+}
+
+void ConnectedFile::setMimeType(const std::string & mimeType)
+{
+ this->setProxyValue(submodelelement::property::PropertyPaths::VALUE, mimeType);
+}
+
+std::string ConnectedFile::getMimeType() const
+{
+ return this->getProxyValue(submodelelement::BlobPath::MIMETYPE);
+}
+
+
+}
+}
+}
+}
diff --git a/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/property/file/ConnectedFile.h b/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/property/file/ConnectedFile.h
index 8bb7d54..ee80465 100644
--- a/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/property/file/ConnectedFile.h
+++ b/sdks/c++/basys.sdk.cc/src/aas/aas/backend/connected/submodelelement/property/file/ConnectedFile.h
@@ -7,15 +7,26 @@
#ifndef AAS_BACKEND_SUBMODELELEMENT_PROPERTY_CONNECTEDFILE_H_
#define AAS_BACKEND_SUBMODELELEMENT_PROPERTY_CONNECTEDFILE_H_
+#include "aas/submodelelement/property/file/IFile.h"
+#include "aas/backend/connected/submodelelement/ConnectedDataElement.h"
+
namespace basyx {
namespace aas {
namespace backend {
namespace connected {
-class ConnectedFile
+class ConnectedFile : public submodelelement::property::IFile, ConnectedDataElement
{
public:
- ~ConnectedFile();
+ ConnectedFile(std::shared_ptr<vab::core::proxy::IVABElementProxy> proxy);
+ ~ConnectedFile() = default;
+
+ virtual void setValue(const std::string & value) override;
+ virtual std::string getValue() const override;
+
+ virtual void setMimeType(const std::string & mimeType) override;
+ virtual std::string getMimeType() const override;
+
};
}
diff --git a/sdks/c++/basys.sdk.cc/src/aas/aas/qualifier/IHasDataSpecification.h b/sdks/c++/basys.sdk.cc/src/aas/aas/qualifier/IHasDataSpecification.h
index 4c90f10..ef50003 100644
--- a/sdks/c++/basys.sdk.cc/src/aas/aas/qualifier/IHasDataSpecification.h
+++ b/sdks/c++/basys.sdk.cc/src/aas/aas/qualifier/IHasDataSpecification.h
@@ -18,6 +18,10 @@
namespace aas {
namespace qualifier {
+namespace HasDataSpecificationPaths {
+ static constexpr char HASDATASPECIFICATION[] = "hasDataSpecification";
+}
+
class IHasDataSpecification
{
public:
diff --git a/sdks/c++/basys.sdk.cc/src/aas/aas/qualifier/IReferable.h b/sdks/c++/basys.sdk.cc/src/aas/aas/qualifier/IReferable.h
index cf1b13d..6dbdff1 100644
--- a/sdks/c++/basys.sdk.cc/src/aas/aas/qualifier/IReferable.h
+++ b/sdks/c++/basys.sdk.cc/src/aas/aas/qualifier/IReferable.h
@@ -7,7 +7,6 @@
#ifndef BASYX_METAMODEL_IREFERABLE_H_
#define BASYX_METAMODEL_IREFERABLE_H_
-
#include "aas/reference/IReference.h"
#include <string>
diff --git a/sdks/c++/basys.sdk.cc/src/aas/aas/submodelelement/IReferenceElement.h b/sdks/c++/basys.sdk.cc/src/aas/aas/submodelelement/IReferenceElement.h
index f45b775..0f970bb 100644
--- a/sdks/c++/basys.sdk.cc/src/aas/aas/submodelelement/IReferenceElement.h
+++ b/sdks/c++/basys.sdk.cc/src/aas/aas/submodelelement/IReferenceElement.h
@@ -1,23 +1,28 @@
-
/*
* IReferenceElement.h
*
* Author: wendel
*/
-#ifndef BASYX_METAMODEL_IREFERENCE_H_
-#define BASYX_METAMODEL_IREFERENCE_H_
+#ifndef BASYX_METAMODEL_IREFERENCEELEMENT_H_
+#define BASYX_METAMODEL_IREFERENCEELEMENT_H_
-#include "reference/IReference.h"
-#include "api/IProperty.h"
+#include "aas/reference/IReference.h"
+#include "aas/submodelelement/property/IProperty.h"
-class IReferenceElement : virtual IProperty
+
+namespace basyx {
+namespace aas {
+namespace submodelelement {
+
+class IReferenceElement : public property::IProperty
{
public:
- virtual ~IReferenceElement() = default;
-
- virtual void setValue(const IReference & ref) = 0;
- virtual IReference getValue() const = 0;
+ virtual ~IReferenceElement() = default;
};
+}
+}
+}
+
#endif
diff --git a/sdks/c++/basys.sdk.cc/src/aas/aas/submodelelement/IRelationshipElement.h b/sdks/c++/basys.sdk.cc/src/aas/aas/submodelelement/IRelationshipElement.h
index 4fad820..1bc605d 100644
--- a/sdks/c++/basys.sdk.cc/src/aas/aas/submodelelement/IRelationshipElement.h
+++ b/sdks/c++/basys.sdk.cc/src/aas/aas/submodelelement/IRelationshipElement.h
@@ -7,20 +7,34 @@
#ifndef BASYX_METAMODEL_IRelationshipElement_H_
#define BASYX_METAMODEL_IRelationshipElement_H_
-
#include "aas/reference/IReference.h"
+
+namespace basyx {
+namespace aas {
+namespace submodelelement {
+
+namespace RelationshipElementPath
+{
+ static constexpr char FIRST[] = "first";
+ static constexpr char SECOND[] = "second";
+}
+
class IRelationshipElement
{
public:
- virtual ~IRelationshipElement() = default;
+ virtual ~IRelationshipElement() = default;
- virtual void setFirst(const IReference & first) = 0;
- virtual IReference getFirst() const = 0;
+ virtual void setFirst(const basyx::any & first) = 0;
+ virtual basyx::any getFirst() const = 0;
- virtual void setSecond(const IReference & second)= 0;
- virtual IReference getSecond() const = 0;
+ virtual void setSecond(const basyx::any & second) = 0;
+ virtual basyx::any getSecond() const = 0;
};
+}
+}
+}
+
#endif
diff --git a/sdks/c++/basys.sdk.cc/src/aas/aas/submodelelement/property/IMapProperty.h b/sdks/c++/basys.sdk.cc/src/aas/aas/submodelelement/property/IMapProperty.h
index f86a13f..a3cf4f3 100644
--- a/sdks/c++/basys.sdk.cc/src/aas/aas/submodelelement/property/IMapProperty.h
+++ b/sdks/c++/basys.sdk.cc/src/aas/aas/submodelelement/property/IMapProperty.h
@@ -17,7 +17,7 @@
namespace submodelelement {
namespace property {
-class IMapProperty : IProperty
+class IMapProperty
{
public:
diff --git a/sdks/c++/basys.sdk.cc/src/aas/aas/submodelelement/property/IProperty.h b/sdks/c++/basys.sdk.cc/src/aas/aas/submodelelement/property/IProperty.h
index 6da099e..d5e0f40 100644
--- a/sdks/c++/basys.sdk.cc/src/aas/aas/submodelelement/property/IProperty.h
+++ b/sdks/c++/basys.sdk.cc/src/aas/aas/submodelelement/property/IProperty.h
@@ -7,7 +7,7 @@
#ifndef API_IPROPERTY_H_
#define API_IPROPERTY_H_
-#include "aas/submodelelement/IElement.h"
+#include "aas/submodelelement/IDataElement.h"
#include "basyx/types.h"
@@ -32,7 +32,7 @@
/* *********************************************************************************
* Property interface
* *********************************************************************************/
-class IProperty : public IElement
+class IProperty
{
public:
diff --git a/sdks/c++/basys.sdk.cc/src/aas/aas/submodelelement/property/blob/IBlob.h b/sdks/c++/basys.sdk.cc/src/aas/aas/submodelelement/property/blob/IBlob.h
index 4f67a57..f8410ff 100644
--- a/sdks/c++/basys.sdk.cc/src/aas/aas/submodelelement/property/blob/IBlob.h
+++ b/sdks/c++/basys.sdk.cc/src/aas/aas/submodelelement/property/blob/IBlob.h
@@ -2,26 +2,36 @@
* IBlob.h
*
* Author: wendel
- */
+ */
#ifndef BASYX_METAMODEL_IBlob_H_
#define BASYX_METAMODEL_IBlob_H_
+#include "basyx/types.h"
-#include "BlobType.h"
-#include "MimeType.h"
+namespace basyx {
+namespace aas {
+namespace submodelelement {
+
+namespace BlobPath {
+ static constexpr char MIMETYPE[] = "mimeType";
+}
class IBlob
{
public:
- virtual ~IBlob() = default;
+ virtual ~IBlob() = default;
- virtual void setValue(const BlobType & value) = 0;
- virtual BlobType getValue() const = 0;
+ virtual void setValue(const basyx::any & value) = 0;
+ virtual basyx::any getValue() const = 0;
- virtual void setMimeType(const MimeType & mimeType) = 0;
- virtual MimeType getMimeType() const = 0;
+ virtual void setMimeType(const std::string & mimeType) = 0;
+ virtual std::string getMimeType() const = 0;
};
+}
+}
+}
+
#endif
diff --git a/sdks/c++/basys.sdk.cc/src/aas/aas/submodelelement/property/file/IFile.h b/sdks/c++/basys.sdk.cc/src/aas/aas/submodelelement/property/file/IFile.h
index 37daa08..03ef8f0 100644
--- a/sdks/c++/basys.sdk.cc/src/aas/aas/submodelelement/property/file/IFile.h
+++ b/sdks/c++/basys.sdk.cc/src/aas/aas/submodelelement/property/file/IFile.h
@@ -7,21 +7,29 @@
#ifndef BASYX_METAMODEL_IFile_H_
#define BASYX_METAMODEL_IFile_H_
+#include <string>
-#include "PathType.h"
-#include "MimeType.h"
+namespace basyx {
+namespace aas {
+namespace submodelelement {
+namespace property {
class IFile
{
public:
- virtual ~IFile() = default;
+ virtual ~IFile() = default;
- virtual void setValue(const PathType & value) = 0;
- virtual PathType getValue() const = 0;
+ virtual void setValue(const std::string & value) = 0;
+ virtual std::string getValue() const = 0;
- virtual void setMimeType(const MimeType & mimeType) = 0;
- virtual MimeType getMimeType() const = 0;
+ virtual void setMimeType(const std::string & mimeType) = 0;
+ virtual std::string getMimeType() const = 0;
};
+}
+}
+}
+}
+
#endif
diff --git a/sdks/c++/basys.sdk.cc/src/shared/basyx/types.h b/sdks/c++/basys.sdk.cc/src/shared/basyx/types.h
index f3f4b85..8b78eb3 100644
--- a/sdks/c++/basys.sdk.cc/src/shared/basyx/types.h
+++ b/sdks/c++/basys.sdk.cc/src/shared/basyx/types.h
@@ -11,13 +11,16 @@
#include <unordered_map>
#include <unordered_set>
#include <vector>
+#include <bitset>
#include <basyx/any/any.h>
namespace basyx {
using objectCollection_t = std::vector<basyx::any>;
using objectMap_t = std::unordered_map<std::string, basyx::any>;
-// using objectSet_t = std::unordered_set<basyx::any>;
+ //using objectSet_t = std::unordered_set<basyx::any>;
+ using byte = uint8_t;
+ using byte_array = std::vector<byte>;
};
enum BaSyxCommand {
diff --git a/sdks/c++/basys.sdk.cc/tests/regression/aas/CMakeLists.txt b/sdks/c++/basys.sdk.cc/tests/regression/aas/CMakeLists.txt
index fcb6d31..726b797 100644
--- a/sdks/c++/basys.sdk.cc/tests/regression/aas/CMakeLists.txt
+++ b/sdks/c++/basys.sdk.cc/tests/regression/aas/CMakeLists.txt
@@ -10,10 +10,12 @@
target_sources(tests_aas
PRIVATE
- submodelelement/property/connected/test_ConnectedProperty.cpp
support/VABProxyMock.cpp
backend/connected/test_ConnectedDataElement.cpp
backend/connected/test_ConnectedElement.cpp
+ backend/connected/submodelelement/property/test_ConnectedMapProperty.cpp
+ backend/connected/submodelelement/property/test_ConnectedProperty.cpp
+ backend/connected/submodelelement/test_ConnectedRelationshipElement.cpp
)
target_include_directories(tests_aas PUBLIC ${PROJECT_SOURCE_DIR})
diff --git a/sdks/c++/basys.sdk.cc/tests/regression/aas/backend/connected/submodelelement/Property/test_ConnectedMapProperty.cpp b/sdks/c++/basys.sdk.cc/tests/regression/aas/backend/connected/submodelelement/Property/test_ConnectedMapProperty.cpp
new file mode 100644
index 0000000..e0ec1fb
--- /dev/null
+++ b/sdks/c++/basys.sdk.cc/tests/regression/aas/backend/connected/submodelelement/Property/test_ConnectedMapProperty.cpp
@@ -0,0 +1,123 @@
+/*
+ * test_ConnectedMapProperty.cpp
+ *
+ * Author: wendel
+ */
+
+#include <gtest/gtest.h>
+
+#include "aas/backend/connected/submodelelement/property/ConnectedMapProperty.h"
+#include "vab/core/proxy/IVABElementProxy.h"
+#include "support/VABProxyMock.cpp"
+
+using namespace basyx::aas::backend::connected;
+using namespace basyx::vab::core::proxy;
+using namespace basyx::aas::qualifier;
+
+
+class ConnectedMapPropertyTest : public ::testing::Test
+{
+public:
+ std::shared_ptr<IVABElementProxy> proxy;
+ std::shared_ptr<mockups::VABProxyMockUp<mockups::ProxyType::Map>> mock;
+protected:
+ void SetUp() override
+ {
+ mock = std::make_shared<mockups::VABProxyMockUp<mockups::ProxyType::Map>>();
+ proxy = mock;
+ }
+};
+
+
+TEST_F(ConnectedMapPropertyTest, TestGetValueNotPresent)
+{
+ ConnectedMapProperty connected_map_property(proxy);
+
+ ASSERT_THROW(connected_map_property.getValue("asdf"), std::out_of_range);
+ ASSERT_EQ(1, mock->overallMockCalls());
+}
+
+TEST_F(ConnectedMapPropertyTest, TestGetValue)
+{
+ ConnectedMapProperty connected_map_property(proxy);
+
+ mock->map["asdf"] = basyx::any("value");
+
+ auto value = connected_map_property.getValue("asdf");
+
+ ASSERT_EQ(1, mock->overallMockCalls());
+ ASSERT_EQ("value", value.Get<std::string>());
+}
+
+TEST_F(ConnectedMapPropertyTest, TestPutNotPresent)
+{
+ ConnectedMapProperty connected_map_property(proxy);
+
+ basyx::any value("value");
+
+ connected_map_property.put("path", value);
+
+ ASSERT_EQ(1, mock->overallMockCalls());
+ ASSERT_EQ(std::string(basyx::aas::submodelelement::property::PropertyPaths::VALUE) + "//path", mock->updateElementCallValues.at(0).first);
+ ASSERT_EQ("value", mock->updateElementCallValues.at(0).second.Get<std::string>());
+}
+
+TEST_F(ConnectedMapPropertyTest, TestSetMap)
+{
+ ConnectedMapProperty connected_map_property(proxy);
+
+ basyx::objectMap_t map;
+
+ connected_map_property.set(map);
+
+ ASSERT_EQ(1, mock->overallMockCalls());
+ ASSERT_EQ(std::string(basyx::aas::submodelelement::property::PropertyPaths::VALUE), mock->updateElementCallValues.at(0).first);
+ ASSERT_EQ(map, mock->updateElementCallValues.at(0).second.Get<basyx::objectMap_t>());
+}
+
+TEST_F(ConnectedMapPropertyTest, TestGetKeys)
+{
+ ConnectedMapProperty connected_map_property(proxy);
+
+ basyx::any value1(std::string("value"));
+ basyx::any value2(std::string("value"));
+
+ mock->map.emplace("path1", value1);
+ mock->map.emplace("path2", value2);
+
+ auto keys = connected_map_property.getKeys();
+
+ ASSERT_EQ(1, mock->overallMockCalls());
+ ASSERT_EQ(std::string(basyx::aas::submodelelement::property::PropertyPaths::VALUE), mock->getElementCallValues.at(0));
+
+ ASSERT_TRUE(keys.at(0).Get<std::string>() == "path1" or keys.at(0).Get<std::string>() == "path2");
+ ASSERT_TRUE(keys.at(1).Get<std::string>() == "path1" or keys.at(1).Get<std::string>() == "path2");
+}
+
+TEST_F(ConnectedMapPropertyTest, TestGetEntryCount)
+{
+ ConnectedMapProperty connected_map_property(proxy);
+
+ basyx::any value1(std::string("value"));
+ basyx::any value2(std::string("value"));
+
+ mock->map.emplace("path1", value1);
+ mock->map.emplace("path2", value2);
+
+ auto key_count = connected_map_property.getEntryCount();
+
+ ASSERT_EQ(1, mock->overallMockCalls());
+ ASSERT_EQ(std::string(basyx::aas::submodelelement::property::PropertyPaths::VALUE), mock->getElementCallValues.at(0));
+ ASSERT_EQ(2, key_count);
+}
+
+TEST_F(ConnectedMapPropertyTest, TestRemove)
+{
+ ConnectedMapProperty connected_map_property(proxy);
+
+ connected_map_property.remove("path");
+
+ ASSERT_EQ(1, mock->overallMockCalls());
+ ASSERT_EQ(std::string(basyx::aas::submodelelement::property::PropertyPaths::VALUE) + "//path", mock->removeElementCallValues.at(0));
+}
+
diff --git a/sdks/c++/basys.sdk.cc/tests/regression/aas/submodelelement/property/connected/test_ConnectedProperty.cpp b/sdks/c++/basys.sdk.cc/tests/regression/aas/backend/connected/submodelelement/Property/test_ConnectedProperty.cpp
similarity index 78%
rename from sdks/c++/basys.sdk.cc/tests/regression/aas/submodelelement/property/connected/test_ConnectedProperty.cpp
rename to sdks/c++/basys.sdk.cc/tests/regression/aas/backend/connected/submodelelement/Property/test_ConnectedProperty.cpp
index ee5b7ac..6953a13 100644
--- a/sdks/c++/basys.sdk.cc/tests/regression/aas/submodelelement/property/connected/test_ConnectedProperty.cpp
+++ b/sdks/c++/basys.sdk.cc/tests/regression/aas/backend/connected/submodelelement/Property/test_ConnectedProperty.cpp
@@ -13,6 +13,7 @@
using namespace basyx::aas::submodelelement::property;
using namespace basyx::vab::core::proxy;
+using namespace basyx::aas::backend::connected;
class ConnectedPropertyTest : public ::testing::Test
{
@@ -103,25 +104,25 @@
ASSERT_EQ(1, mock->overallMockCalls());
}
-TEST_F(ConnectedPropertyTest, TestGetID)
-{
- std::shared_ptr<IProperty> property(new ConnectedProperty(PropertyType::Collection, proxy));
-
- auto id = property->getId();
-
- //Further tests can be found in ConnectedDataElementTests
- ASSERT_EQ(id, "called with " + std::string(basyx::aas::qualifier::ReferablePaths::IDSHORT));
- ASSERT_EQ(1, mock->overallMockCalls());
-}
-
-TEST_F(ConnectedPropertyTest, TestSetID)
-{
- std::shared_ptr<IProperty> property(new ConnectedProperty(PropertyType::Collection, proxy));
-
- property->setId("ID");
-
- ASSERT_EQ(property->getId(), "called with " + std::string(basyx::aas::qualifier::ReferablePaths::IDSHORT));
- ASSERT_EQ(1, mock->updateElementValue_calls);
- ASSERT_EQ(1, mock->readElementValue_calls);
- ASSERT_EQ(2, mock->overallMockCalls());
-}
+//TEST_F(ConnectedPropertyTest, TestGetID)
+//{
+// std::shared_ptr<IProperty> property(new ConnectedProperty(PropertyType::Collection, proxy));
+//
+// auto id = property->getId();
+//
+// //Further tests can be found in ConnectedDataElementTests
+// ASSERT_EQ(id, "called with " + std::string(basyx::aas::qualifier::ReferablePaths::IDSHORT));
+// ASSERT_EQ(1, mock->overallMockCalls());
+//}
+//
+//TEST_F(ConnectedPropertyTest, TestSetID)
+//{
+// std::shared_ptr<IProperty> property(new ConnectedProperty(PropertyType::Collection, proxy));
+//
+// property->setId("ID");
+//
+// ASSERT_EQ(property->getId(), "called with " + std::string(basyx::aas::qualifier::ReferablePaths::IDSHORT));
+// ASSERT_EQ(1, mock->updateElementValue_calls);
+// ASSERT_EQ(1, mock->readElementValue_calls);
+// ASSERT_EQ(2, mock->overallMockCalls());
+//}
diff --git a/sdks/c++/basys.sdk.cc/tests/regression/aas/backend/connected/submodelelement/test_ConnectedRelationshipElement.cpp b/sdks/c++/basys.sdk.cc/tests/regression/aas/backend/connected/submodelelement/test_ConnectedRelationshipElement.cpp
new file mode 100644
index 0000000..4fc58c6
--- /dev/null
+++ b/sdks/c++/basys.sdk.cc/tests/regression/aas/backend/connected/submodelelement/test_ConnectedRelationshipElement.cpp
@@ -0,0 +1,39 @@
+/*
+ * test_ConnectedDataElement .cpp
+ *
+ * Author: wendel
+ */
+
+#include <gtest/gtest.h>
+
+#include "aas/backend/connected/submodelelement/ConnectedRelationshipElement.h"
+#include "vab/core/proxy/IVABElementProxy.h"
+#include "support/VABProxyMock.cpp"
+
+using namespace basyx::aas::backend::connected;
+using namespace basyx::vab::core::proxy;
+
+class ConnectedRelationshipElementTest : public ::testing::Test
+{
+public:
+ std::shared_ptr<IVABElementProxy> proxy;
+ std::shared_ptr<mockups::VABProxyMock> mock;
+protected:
+ void SetUp() override
+ {
+ mock = std::make_shared<mockups::VABProxyMock>();
+ proxy = mock;
+ }
+};
+
+TEST_F(ConnectedRelationshipElementTest, TestConstructor)
+{
+ std::shared_ptr<basyx::objectMap_t> map(new basyx::objectMap_t);
+
+ ConnectedRelationshipElement connected_element(proxy);
+ //
+ //ASSERT_EQ(1, map->size());
+ //ASSERT_EQ("object", map->at("object").Get<std::string>());
+ //ASSERT_EQ(0, mock->overallMockCalls());
+}
+
diff --git a/sdks/c++/basys.sdk.cc/tests/regression/aas/backend/connected/test_ConnectedElement.cpp b/sdks/c++/basys.sdk.cc/tests/regression/aas/backend/connected/test_ConnectedElement.cpp
index f64b073..1acd8a5 100644
--- a/sdks/c++/basys.sdk.cc/tests/regression/aas/backend/connected/test_ConnectedElement.cpp
+++ b/sdks/c++/basys.sdk.cc/tests/regression/aas/backend/connected/test_ConnectedElement.cpp
@@ -9,6 +9,7 @@
#include "aas/backend/connected/ConnectedElement.h"
#include "vab/core/proxy/IVABElementProxy.h"
#include "support/VABProxyMock.cpp"
+#include "aas/qualifier/IReferable.h"
using namespace basyx::aas::backend;
using namespace basyx::vab::core::proxy;
@@ -128,3 +129,28 @@
ASSERT_EQ(0, mock->overallMockCalls());
}
+TEST_F(ConnectedElementTest, TestGetID)
+{
+ std::shared_ptr<basyx::objectMap_t> map(new basyx::objectMap_t);
+
+ ConnectedElement connected_element(proxy, map);
+
+ auto id = connected_element.getId();
+
+ ASSERT_EQ(std::string("called with ") + basyx::aas::qualifier::ReferablePaths::IDSHORT, id);
+ ASSERT_EQ(1, mock->overallMockCalls());
+}
+
+TEST_F(ConnectedElementTest, TestSetID)
+{
+ std::shared_ptr<basyx::objectMap_t> map(new basyx::objectMap_t);
+
+ ConnectedElement connected_element(proxy, map);
+
+ connected_element.setId("identifier");
+
+ ASSERT_EQ(1, mock->overallMockCalls());
+ ASSERT_EQ(basyx::aas::qualifier::ReferablePaths::IDSHORT, mock->updateElementCallValues.at(0).first);
+ ASSERT_EQ(std::string("identifier"), mock->updateElementCallValues.at(0).second.Get<std::string>());
+}
+
diff --git a/sdks/c++/basys.sdk.cc/tests/regression/aas/support/VABProxyMock.cpp b/sdks/c++/basys.sdk.cc/tests/regression/aas/support/VABProxyMock.cpp
index b50b858..9ac5219 100644
--- a/sdks/c++/basys.sdk.cc/tests/regression/aas/support/VABProxyMock.cpp
+++ b/sdks/c++/basys.sdk.cc/tests/regression/aas/support/VABProxyMock.cpp
@@ -5,6 +5,7 @@
*/
#include "vab/core/proxy/IVABElementProxy.h"
+#include <string>
namespace basyx {
namespace vab {
@@ -12,16 +13,30 @@
namespace proxy {
namespace mockups {
-class VABProxyMock : public IVABElementProxy
+enum ProxyType
+{
+ Map,
+ Default
+};
+
+template<ProxyType t>
+class VABProxyMockUp : public IVABElementProxy
{
public:
+
virtual basyx::any readElementValue(const VABPath & elementPath) override
{
this->readElementValue_calls++;
- return basyx::any("called with " + elementPath.toString());
+ this->getElementCallValues.push_back(elementPath);
+
+ if ( t == ProxyType::Default )
+ return basyx::any("called with " + elementPath.toString());
+ if ( t == ProxyType::Map )
+ return basyx::any(this->map);
}
+
virtual void updateElementValue(const VABPath & elementPath, const basyx::any & newValue) override
{
this->updateElementValue_calls++;
@@ -37,6 +52,8 @@
virtual void deleteElement(const VABPath & elementPath) override
{
this->deleteElement_calls++;
+
+ this->removeElementCallValues.push_back(elementPath.toString());
}
virtual void deleteElement(const VABPath & elementPath, const basyx::any & value) override
@@ -63,10 +80,15 @@
int invoke_calls = 0;
std::vector<std::pair<std::string, basyx::any>> updateElementCallValues;
+ std::vector<std::string> getElementCallValues;
+ std::vector<std::string> removeElementCallValues;
+ basyx::objectMap_t map;
};
+using VABProxyMock = VABProxyMockUp<ProxyType::Default>;
+
}
}
}
}
-}
+}