Expand Google Test coverage across core subsystems
Add and extend unit tests for: - Task manager (failed tasks, progress signals, multiple tasks) - Undo stack (multiple undo/redo, push-after-undo, clear, multi-command) - Config defaults and graphics backend string conversion - Node keyframe serialization and default state - Node value string round-trips and table operations - Node globals and project settings/serialization - Timeline coordinate, workarea, and marker commands - Color LUT processor and OCIO transform handling - Common utilities (range, file functions, Qt helpers, XML utils) - Render enums (loop mode, alpha association) - Shader resource availability - Module smoke tests for Tool and HumanStrings All tests pass including RenderWorkerFootage GPU worker tests after rebuilding the stale olive-render-worker binary.
This commit is contained in:
@@ -48,3 +48,80 @@ TEST(NodeValue, BinaryRoundTrip)
|
||||
olive::NodeValue::kBinary, encoded, false);
|
||||
EXPECT_EQ(decoded.toByteArray(), data);
|
||||
}
|
||||
|
||||
TEST(NodeValue, TypeClassification)
|
||||
{
|
||||
EXPECT_TRUE(olive::NodeValue::type_can_be_interpolated(olive::NodeValue::kFloat));
|
||||
EXPECT_TRUE(olive::NodeValue::type_can_be_interpolated(olive::NodeValue::kColor));
|
||||
EXPECT_FALSE(olive::NodeValue::type_can_be_interpolated(olive::NodeValue::kInt));
|
||||
|
||||
EXPECT_TRUE(olive::NodeValue::type_is_numeric(olive::NodeValue::kInt));
|
||||
EXPECT_TRUE(olive::NodeValue::type_is_numeric(olive::NodeValue::kFloat));
|
||||
EXPECT_FALSE(olive::NodeValue::type_is_numeric(olive::NodeValue::kText));
|
||||
|
||||
EXPECT_TRUE(olive::NodeValue::type_is_vector(olive::NodeValue::kVec2));
|
||||
EXPECT_TRUE(olive::NodeValue::type_is_vector(olive::NodeValue::kVec3));
|
||||
EXPECT_FALSE(olive::NodeValue::type_is_vector(olive::NodeValue::kFloat));
|
||||
|
||||
EXPECT_TRUE(olive::NodeValue::type_is_buffer(olive::NodeValue::kTexture));
|
||||
EXPECT_TRUE(olive::NodeValue::type_is_buffer(olive::NodeValue::kSamples));
|
||||
EXPECT_FALSE(olive::NodeValue::type_is_buffer(olive::NodeValue::kColor));
|
||||
}
|
||||
|
||||
TEST(NodeValue, DataTypeNameRoundTrip)
|
||||
{
|
||||
for (int i = olive::NodeValue::kNone; i < olive::NodeValue::kDataTypeCount; ++i) {
|
||||
auto type = static_cast<olive::NodeValue::Type>(i);
|
||||
QString name = olive::NodeValue::GetDataTypeName(type);
|
||||
if (name.isEmpty()) {
|
||||
continue;
|
||||
}
|
||||
EXPECT_EQ(olive::NodeValue::GetDataTypeFromName(name), type)
|
||||
<< name.toStdString();
|
||||
}
|
||||
}
|
||||
|
||||
TEST(NodeValue, ConstructionAndAccessors)
|
||||
{
|
||||
olive::NodeValue val(olive::NodeValue::kInt, static_cast<int64_t>(42));
|
||||
EXPECT_EQ(val.type(), olive::NodeValue::kInt);
|
||||
EXPECT_EQ(val.toInt(), 42);
|
||||
EXPECT_TRUE(val);
|
||||
|
||||
val.set_tag(QStringLiteral("tag"));
|
||||
EXPECT_EQ(val.tag(), QStringLiteral("tag"));
|
||||
}
|
||||
|
||||
TEST(NodeValueTable, PushAndGet)
|
||||
{
|
||||
olive::NodeValueTable table;
|
||||
olive::NodeValue v(olive::NodeValue::kFloat, 3.14);
|
||||
table.Push(v);
|
||||
|
||||
EXPECT_EQ(table.Count(), 1);
|
||||
EXPECT_FALSE(table.isEmpty());
|
||||
EXPECT_TRUE(table.Has(olive::NodeValue::kFloat));
|
||||
|
||||
olive::NodeValue got = table.Get(olive::NodeValue::kFloat);
|
||||
EXPECT_DOUBLE_EQ(got.toDouble(), 3.14);
|
||||
}
|
||||
|
||||
TEST(NodeValueTable, TakeRemovesValue)
|
||||
{
|
||||
olive::NodeValueTable table;
|
||||
table.Push(olive::NodeValue(olive::NodeValue::kInt, static_cast<int64_t>(1)));
|
||||
table.Push(olive::NodeValue(olive::NodeValue::kInt, static_cast<int64_t>(2)));
|
||||
|
||||
olive::NodeValue taken = table.Take(olive::NodeValue::kInt);
|
||||
EXPECT_EQ(taken.toInt(), 2);
|
||||
EXPECT_EQ(table.Count(), 1);
|
||||
}
|
||||
|
||||
TEST(NodeValueTable, ClearEmptiesTable)
|
||||
{
|
||||
olive::NodeValueTable table;
|
||||
table.Push(olive::NodeValue(olive::NodeValue::kText, QStringLiteral("hello")));
|
||||
table.Clear();
|
||||
EXPECT_TRUE(table.isEmpty());
|
||||
EXPECT_EQ(table.Count(), 0);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user