feat(cpp-object-oriented-modular-refactoring): step 4 - model-element-google-style

This commit is contained in:
KOKO\Mimi
2026-08-16 05:37:40 +09:00
parent 34ab8b5bf1
commit 8bc0ea2f8e
46 changed files with 5184 additions and 5323 deletions
+23 -23
View File
@@ -12,8 +12,8 @@ namespace {
fesa::ModelDefinition makeDefinition() {
const std::filesystem::path source{"models/analysis-model.inp"};
fesa::ModelDefinition definition{};
definition.sourcePath = source;
definition.sourceContentIdentity = "fnv1a64:0123456789abcdef";
definition.source_path = source;
definition.source_content_identity = "fnv1a64:0123456789abcdef";
definition.nodes = {
{{"Beam-1", 1, "1"}, {0.0, 0.0, 0.0}, {source, 10U}},
{{"Beam-1", 2, "2"}, {1.0, 0.0, 0.0}, {source, 11U}},
@@ -57,7 +57,7 @@ fesa::ModelDefinition makeDefinition() {
} // namespace
TEST(AnalysisModel, ClassifiesActiveEntitiesInStableOrder) {
auto domainResult = fesa::Domain::create(makeDefinition());
auto domainResult = fesa::Domain::Create(makeDefinition());
ASSERT_TRUE(domainResult.HasValue());
auto modelResult = fesa::AnalysisModel::create(domainResult.Value());
@@ -82,41 +82,41 @@ TEST(AnalysisModel, ClassifiesActiveEntitiesInStableOrder) {
}
TEST(AnalysisModel, ReferencesWithoutCopyingOrMutatingDomain) {
auto domainResult = fesa::Domain::create(makeDefinition());
auto domainResult = fesa::Domain::Create(makeDefinition());
ASSERT_TRUE(domainResult.HasValue());
const fesa::Domain& domain = domainResult.Value();
const auto* const elementAddress = domain.elements().data();
const auto* const materialAddress = domain.materials().data();
const auto* const sectionAddress = domain.sections().data();
const std::string stepName = domain.steps()[0].name;
const double firstLoadMagnitude = domain.steps()[0].loads[0].magnitude;
const auto* const elementAddress = domain.Elements().data();
const auto* const materialAddress = domain.Materials().data();
const auto* const sectionAddress = domain.Sections().data();
const std::string stepName = domain.Steps()[0].name;
const double firstLoadMagnitude = domain.Steps()[0].loads[0].magnitude;
auto modelResult = fesa::AnalysisModel::create(domain);
ASSERT_TRUE(modelResult.HasValue());
const auto& model = modelResult.Value();
EXPECT_EQ(&model.domain(), &domain);
EXPECT_EQ(&model.step(), &domain.steps()[0]);
EXPECT_EQ(model.domain().elements().data(), elementAddress);
EXPECT_EQ(model.domain().materials().data(), materialAddress);
EXPECT_EQ(model.domain().sections().data(), sectionAddress);
EXPECT_EQ(&model.step(), &domain.Steps()[0]);
EXPECT_EQ(model.domain().Elements().data(), elementAddress);
EXPECT_EQ(model.domain().Materials().data(), materialAddress);
EXPECT_EQ(model.domain().Sections().data(), sectionAddress);
EXPECT_EQ(
&model.domain().elements()[model.activeElements()[1]],
&domain.elements()[1]);
&model.domain().Elements()[model.activeElements()[1]],
&domain.Elements()[1]);
EXPECT_EQ(
&model.domain().materials()[model.activeMaterials()[2]],
&domain.materials()[2]);
&model.domain().Materials()[model.activeMaterials()[2]],
&domain.Materials()[2]);
EXPECT_EQ(
&model.domain().sections()[model.activeSections()[1]],
&domain.sections()[1]);
EXPECT_EQ(domain.steps()[0].name, stepName);
EXPECT_DOUBLE_EQ(domain.steps()[0].loads[0].magnitude, firstLoadMagnitude);
&model.domain().Sections()[model.activeSections()[1]],
&domain.Sections()[1]);
EXPECT_EQ(domain.Steps()[0].name, stepName);
EXPECT_DOUBLE_EQ(domain.Steps()[0].loads[0].magnitude, firstLoadMagnitude);
}
TEST(AnalysisModel, RejectsMissingOrMultipleStep) {
auto missingDefinition = makeDefinition();
missingDefinition.steps.clear();
auto missingDomain = fesa::Domain::create(std::move(missingDefinition));
auto missingDomain = fesa::Domain::Create(std::move(missingDefinition));
ASSERT_TRUE(missingDomain.HasValue());
auto missing = fesa::AnalysisModel::create(missingDomain.Value());
@@ -136,7 +136,7 @@ TEST(AnalysisModel, RejectsMissingOrMultipleStep) {
secondStep.name = "Step-2";
secondStep.location.line = 60U;
multipleDefinition.steps.push_back(std::move(secondStep));
auto multipleDomain = fesa::Domain::create(std::move(multipleDefinition));
auto multipleDomain = fesa::Domain::Create(std::move(multipleDefinition));
ASSERT_TRUE(multipleDomain.HasValue());
auto multiple = fesa::AnalysisModel::create(multipleDomain.Value());
+7 -7
View File
@@ -49,22 +49,22 @@ struct HasNonlinearState<
fesa::DofManager makeDofs() {
fesa::ModelDefinition definition{};
definition.sourcePath = "models/analysis-state.inp";
definition.sourceContentIdentity = "fnv1a64:0123456789abcdef";
definition.source_path = "models/analysis-state.inp";
definition.source_content_identity = "fnv1a64:0123456789abcdef";
definition.nodes = {
{{"Beam-1", 1, "1"}, {0.0, 0.0, 0.0}, {definition.sourcePath, 10U}},
{{"Beam-1", 2, "2"}, {1.0, 0.0, 0.0}, {definition.sourcePath, 11U}}};
{{"Beam-1", 1, "1"}, {0.0, 0.0, 0.0}, {definition.source_path, 10U}},
{{"Beam-1", 2, "2"}, {1.0, 0.0, 0.0}, {definition.source_path, 11U}}};
definition.steps = {{
"Step-1",
{{"1", 1, 6, 0.0, {definition.sourcePath, 20U}}},
{{"1", 1, 6, 0.0, {definition.source_path, 20U}}},
{},
0.1,
1.0,
0.01,
1.0,
{definition.sourcePath, 19U}}};
{definition.source_path, 19U}}};
auto domain = fesa::Domain::create(std::move(definition));
auto domain = fesa::Domain::Create(std::move(definition));
EXPECT_TRUE(domain.HasValue());
auto model = fesa::AnalysisModel::create(domain.Value());
EXPECT_TRUE(model.HasValue());