Test that mj_resetDataKeyframe treats negative keyframe IDs as a normal reset.
PiperOrigin-RevId: 607655812 Change-Id: Ia9bb1031468f04e8f9563b9228a46983356dafef
This commit is contained in:
committed by
Copybara-Service
parent
05150546e3
commit
f1d4f8f0a1
@@ -1280,7 +1280,7 @@ mj_resetDataKeyframe
|
||||
|
||||
.. mujoco-include:: mj_resetDataKeyframe
|
||||
|
||||
Reset data, set fields from specified keyframe.
|
||||
Reset data. If 0 <= key < nkey, set fields from specified keyframe.
|
||||
|
||||
.. _mj_markStack:
|
||||
|
||||
|
||||
@@ -182,7 +182,7 @@ MJAPI void mj_resetData(const mjModel* m, mjData* d);
|
||||
// Reset data to defaults, fill everything else with debug_value.
|
||||
MJAPI void mj_resetDataDebug(const mjModel* m, mjData* d, unsigned char debug_value);
|
||||
|
||||
// Reset data, set fields from specified keyframe.
|
||||
// Reset data. If 0 <= key < nkey, set fields from specified keyframe.
|
||||
MJAPI void mj_resetDataKeyframe(const mjModel* m, mjData* d, int key);
|
||||
|
||||
// Mark a new frame on the mjData stack.
|
||||
|
||||
@@ -675,7 +675,7 @@ FUNCTIONS: Mapping[str, FunctionDecl] = dict([
|
||||
type=ValueType(name='int'),
|
||||
),
|
||||
),
|
||||
doc='Reset data, set fields from specified keyframe.',
|
||||
doc='Reset data. If 0 <= key < nkey, set fields from specified keyframe.', # pylint: disable=line-too-long
|
||||
)),
|
||||
('mj_markStack',
|
||||
FunctionDecl(
|
||||
|
||||
@@ -1701,7 +1701,7 @@ void mj_resetDataDebug(const mjModel* m, mjData* d, unsigned char debug_value) {
|
||||
|
||||
|
||||
|
||||
// reset data, set fields from specified keyframe
|
||||
// Reset data. If 0 <= key < nkey, set fields from specified keyframe.
|
||||
void mj_resetDataKeyframe(const mjModel* m, mjData* d, int key) {
|
||||
_resetData(m, d, 0);
|
||||
|
||||
|
||||
@@ -104,7 +104,7 @@ MJAPI void mj_resetData(const mjModel* m, mjData* d);
|
||||
// set data to defaults, fill everything else with debug_value
|
||||
MJAPI void mj_resetDataDebug(const mjModel* m, mjData* d, unsigned char debug_value);
|
||||
|
||||
// reset data, set fields from specified keyframe
|
||||
// Reset data. If 0 <= key < nkey, set fields from specified keyframe.
|
||||
MJAPI void mj_resetDataKeyframe(const mjModel* m, mjData* d, int key);
|
||||
|
||||
// mjData arena allocate
|
||||
|
||||
@@ -433,6 +433,28 @@ TEST_F(KeyframeTest, ResetDataKeyframe) {
|
||||
mj_deleteModel(model);
|
||||
}
|
||||
|
||||
TEST_F(KeyframeTest, ResetDataKeyframeAcceptsNegativeKeyframe) {
|
||||
const std::string xml_path = GetTestDataFilePath(kKeyframePath);
|
||||
mjModel* model = mj_loadXML(xml_path.c_str(), nullptr, nullptr, 0);
|
||||
ASSERT_THAT(model, NotNull());
|
||||
mjData* data = mj_makeData(model);
|
||||
data->time = data->qpos[0] = data->qvel[0] = data->act[0] = data->ctrl[0] =
|
||||
data->mocap_pos[0] = data->mocap_quat[0] = 1337.0;
|
||||
|
||||
mj_resetDataKeyframe(model, data, -1);
|
||||
|
||||
EXPECT_EQ(data->time, 0.0);
|
||||
EXPECT_EQ(data->qpos[0], 0.0);
|
||||
EXPECT_EQ(data->qvel[0], 0.0);
|
||||
EXPECT_EQ(data->act[0], 0.0);
|
||||
EXPECT_EQ(data->ctrl[0], 0.0);
|
||||
EXPECT_EQ(data->mocap_pos[0], 0.0);
|
||||
EXPECT_EQ(data->mocap_quat[0], 1.0);
|
||||
|
||||
mj_deleteData(data);
|
||||
mj_deleteModel(model);
|
||||
}
|
||||
|
||||
TEST_F(KeyframeTest, BadSize) {
|
||||
static constexpr char xml[] = R"(
|
||||
<mujoco>
|
||||
|
||||
Reference in New Issue
Block a user