Connect MITC4 drilling evidence across analysis procedures
This commit is contained in:
@@ -320,3 +320,27 @@ TEST(DynamicAnalysisState, CreateRejectsInvalidScheduleAndNonzeroBoundary) {
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
TEST(DynamicAnalysisState, DrillingEvidenceRejectsPartialCommitAndModeChanges) {
|
||||
auto fixture = MakeFixture();
|
||||
auto initial = MakeFrame(*fixture.domain, 0U);
|
||||
initial.mitc4_drilling = fesa::Mitc4DrillingEvidence{fesa::Mitc4DrillingMode::kDirectSpring};
|
||||
ASSERT_TRUE(fixture.state.CommitAcceptedFrame(initial).IsOk());
|
||||
for (const int kind : {0, 1, 2, 3, 4}) {
|
||||
auto next = MakeFrame(*fixture.domain, 1U);
|
||||
next.mitc4_drilling = initial.mitc4_drilling;
|
||||
if (kind == 0) next.mitc4_drilling.reset();
|
||||
if (kind == 1) next.mitc4_drilling->mode = fesa::Mitc4DrillingMode::kLegacyCorotatedTwist;
|
||||
if (kind == 2) next.mitc4_drilling->mode = static_cast<fesa::Mitc4DrillingMode>(99);
|
||||
if (kind == 3) next.mitc4_drilling->equilibrium_with_drilling[3U] = 1.0;
|
||||
if (kind == 4) next.mitc4_drilling->drilling_moment[0U] = std::numeric_limits<double>::quiet_NaN();
|
||||
EXPECT_FALSE(fixture.state.CommitAcceptedFrame(next).IsOk()) << kind;
|
||||
ASSERT_EQ(fixture.state.AcceptedFrames().size(), 1U);
|
||||
EXPECT_EQ(fixture.state.CommittedState().frame_index, 0U);
|
||||
EXPECT_EQ(fixture.state.CommittedState().mitc4_drilling->mode,
|
||||
fesa::Mitc4DrillingMode::kDirectSpring);
|
||||
}
|
||||
auto valid = MakeFrame(*fixture.domain, 1U);
|
||||
valid.mitc4_drilling = initial.mitc4_drilling;
|
||||
EXPECT_TRUE(fixture.state.CommitAcceptedFrame(valid).IsOk());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user