92 lines
2.9 KiB
C++
92 lines
2.9 KiB
C++
/* SPDX-FileCopyrightText: 2024 Blender Authors
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
|
|
/* The tests in this file need to be able to test deprecated data as well. */
|
|
#define DNA_DEPRECATED_ALLOW
|
|
|
|
#include "ANIM_versioning.hh"
|
|
|
|
#include "DNA_action_types.h"
|
|
|
|
#include "BLI_listbase.h"
|
|
|
|
#include "testing/testing.h"
|
|
|
|
namespace blender::animrig::versioning::tests {
|
|
|
|
TEST(animrig_versioning, action_is_layered)
|
|
{
|
|
/* This unit test doesn't put valid data in the action under test. Since action_is_layered()
|
|
* only looks at the length of lists, and not their contents, that should be fine. */
|
|
|
|
{ /* Pre-Animato Action / Blender version 2.49 and older. */
|
|
bAction action = {};
|
|
Link /* Ipo */ fake_ipo = {};
|
|
|
|
BLI_addtail(&action.chanbase, &fake_ipo);
|
|
EXPECT_FALSE(action_is_layered(action))
|
|
<< "Pre-2.5 Actions should NOT be considered 'layered'";
|
|
}
|
|
|
|
{ /* Animato Action only fcurves / Blender version [2.5, 4.4) */
|
|
bAction action = {};
|
|
Link /* FCurve */ fake_fcurve = {};
|
|
|
|
BLI_addtail(&action.curves, &fake_fcurve);
|
|
EXPECT_FALSE(action_is_layered(action))
|
|
<< "Animato Actions should NOT be considered 'layered'";
|
|
}
|
|
|
|
{ /* Animato Action with fcurves + groups / Blender version [2.5, 4.4) */
|
|
bAction action = {};
|
|
Link /* FCurve */ fake_fcurve = {};
|
|
Link /* bActionGroup */ fake_group = {};
|
|
|
|
BLI_addtail(&action.curves, &fake_fcurve);
|
|
BLI_addtail(&action.groups, &fake_group);
|
|
EXPECT_FALSE(action_is_layered(action))
|
|
<< "Animato Actions should NOT be considered 'layered'";
|
|
}
|
|
|
|
{ /* Animato Action with only groups / Blender version [2.5, 4.4) */
|
|
bAction action = {};
|
|
Link /* bActionGroup */ fake_group = {};
|
|
|
|
BLI_addtail(&action.groups, &fake_group);
|
|
EXPECT_FALSE(action_is_layered(action))
|
|
<< "Animato Actions should NOT be considered 'layered'";
|
|
}
|
|
|
|
{ /* Layered Action with only layers / Blender version 4.4 and newer. */
|
|
bAction action = {};
|
|
action.layer_array_num = 1;
|
|
|
|
EXPECT_TRUE(action_is_layered(action)) << "Layered Actions should be considered 'layered'";
|
|
}
|
|
|
|
{ /* Layered Action with only slots / Blender version 4.4 and newer. */
|
|
bAction action = {};
|
|
action.slot_array_num = 1;
|
|
|
|
EXPECT_TRUE(action_is_layered(action)) << "Layered Actions should be considered 'layered'";
|
|
}
|
|
|
|
{ /* Layered Action as it exists on disk, with forward-compatible info in there. */
|
|
bAction action = {};
|
|
Link /* FCurve */ fake_fcurve = {};
|
|
action.layer_array_num = 1;
|
|
|
|
BLI_addtail(&action.curves, &fake_fcurve);
|
|
EXPECT_TRUE(action_is_layered(action))
|
|
<< "Layered Actions with forward-compat data should be considered 'layered'";
|
|
}
|
|
|
|
{ /* Completely zeroed out Action. */
|
|
bAction action = {};
|
|
EXPECT_TRUE(action_is_layered(action)) << "Zero'ed-out Actions should be considered 'layered'";
|
|
}
|
|
}
|
|
|
|
} // namespace blender::animrig::versioning::tests
|