feat: add analysis model objects
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
#include "fesa/element/Element.hpp"
|
||||
|
||||
#include <array>
|
||||
#include <memory>
|
||||
|
||||
namespace {
|
||||
|
||||
using fesa::element::ElementId;
|
||||
using fesa::element::ElementType;
|
||||
using fesa::element::NodeId;
|
||||
using fesa::element::PropertyId;
|
||||
|
||||
int require(bool condition) {
|
||||
return condition ? 0 : 1;
|
||||
}
|
||||
|
||||
class TestElement final : public fesa::element::Element {
|
||||
public:
|
||||
ElementId id() const noexcept override { return 100; }
|
||||
ElementType type() const noexcept override { return ElementType::Mitc4; }
|
||||
std::size_t nodeCount() const noexcept override { return connectivity_.size(); }
|
||||
const std::array<NodeId, 4>& connectivity() const noexcept override { return connectivity_; }
|
||||
PropertyId propertyId() const noexcept override { return 500; }
|
||||
|
||||
private:
|
||||
std::array<NodeId, 4> connectivity_{1, 2, 3, 4};
|
||||
};
|
||||
|
||||
} // namespace
|
||||
|
||||
int run_element_base_tests() {
|
||||
std::unique_ptr<fesa::element::Element> owned = std::make_unique<TestElement>();
|
||||
const fesa::element::Element& element = *owned;
|
||||
|
||||
if (const int result = require(element.id() == 100); result != 0) {
|
||||
return result;
|
||||
}
|
||||
if (const int result = require(element.type() == fesa::core::ElementType::Mitc4); result != 0) {
|
||||
return result;
|
||||
}
|
||||
if (const int result = require(element.nodeCount() == 4); result != 0) {
|
||||
return result;
|
||||
}
|
||||
if (const int result = require(element.connectivity()[0] == 1); result != 0) {
|
||||
return result;
|
||||
}
|
||||
if (const int result = require(element.connectivity()[3] == 4); result != 0) {
|
||||
return result;
|
||||
}
|
||||
return require(element.propertyId() == 500);
|
||||
}
|
||||
Reference in New Issue
Block a user