Files
FESADev/tests/element/element_base_test.cpp
T
2026-06-09 09:04:21 +09:00

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);
}