52 lines
1.6 KiB
C++
52 lines
1.6 KiB
C++
#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);
|
|
}
|