Expand gtest coverage across recently changed modules
Adds ~60 new unit tests covering the modules touched in recent bug-fix passes and UI refactors: - RenderTicket: result/finish-count semantics, empty watcher defaults, ticket-reuse rejection - Preferences tabs: behavior options migrated into General/Audio tabs, translation context helper, audio-tab initialization - NodeView: context management, 'Show in Parameter Editor' action wiring - PreviewAutoCacher: construction, pause toggles, single-frame render cancellation, force-cache range - SeekableWidget/TimeBasedWidget: scroll, marker editing, context reset - OCIOLutNode: empty/missing/unsupported LUT paths, string direction values, file-switching regression coverage - ProxyManager: working filename, disabled state, empty proxy fields - Frame/VideoParams/AudioParams/Timecode/ExportFormat/ExportCodec: additional edge-case and enumeration coverage Also fixes the PreferencesAudioTab test crash by initializing AudioManager in the offscreen test environment. All tests pass: ctest --output-on-failure
This commit is contained in:
@@ -0,0 +1,120 @@
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include <QSignalSpy>
|
||||
|
||||
#include "codec/conformmanager.h"
|
||||
#include "node/output/viewer/viewer.h"
|
||||
#include "node/project.h"
|
||||
#include "render/diskmanager.h"
|
||||
#include "render/previewautocacher.h"
|
||||
#include "render/rendermanager.h"
|
||||
|
||||
using namespace olive;
|
||||
|
||||
class PreviewAutoCacherTest : public ::testing::Test {
|
||||
protected:
|
||||
void SetUp() override
|
||||
{
|
||||
ColorManager::SetUpDefaultConfig();
|
||||
|
||||
// Use the dummy render backend so PreviewAutoCacher can be exercised
|
||||
// without initializing OpenGL/Vulkan in the unit-test process.
|
||||
OLIVE_CONFIG("GraphicsBackend") = QStringLiteral("dummy");
|
||||
|
||||
DiskManager::CreateInstance();
|
||||
ConformManager::CreateInstance();
|
||||
RenderManager::CreateInstance();
|
||||
|
||||
project_ = std::make_unique<Project>();
|
||||
project_->Initialize();
|
||||
}
|
||||
|
||||
void TearDown() override
|
||||
{
|
||||
RenderManager::DestroyInstance();
|
||||
ConformManager::DestroyInstance();
|
||||
DiskManager::DestroyInstance();
|
||||
}
|
||||
|
||||
std::unique_ptr<Project> project_;
|
||||
};
|
||||
|
||||
TEST_F(PreviewAutoCacherTest, ConstructionInitializesDefaultState)
|
||||
{
|
||||
PreviewAutoCacher cacher;
|
||||
EXPECT_FALSE(cacher.IsRenderingCustomRange());
|
||||
}
|
||||
|
||||
TEST_F(PreviewAutoCacherTest, SetProjectToNullDoesNotCrash)
|
||||
{
|
||||
PreviewAutoCacher cacher;
|
||||
cacher.SetProject(project_.get());
|
||||
cacher.SetProject(nullptr);
|
||||
EXPECT_FALSE(cacher.IsRenderingCustomRange());
|
||||
}
|
||||
|
||||
TEST_F(PreviewAutoCacherTest, SetRendersPausedTogglesState)
|
||||
{
|
||||
PreviewAutoCacher cacher;
|
||||
cacher.SetRendersPaused(true);
|
||||
cacher.SetRendersPaused(false);
|
||||
}
|
||||
|
||||
TEST_F(PreviewAutoCacherTest, SetThumbnailsPausedTogglesState)
|
||||
{
|
||||
PreviewAutoCacher cacher;
|
||||
cacher.SetThumbnailsPaused(true);
|
||||
cacher.SetThumbnailsPaused(false);
|
||||
}
|
||||
|
||||
TEST_F(PreviewAutoCacherTest, SetPlayheadStoresPlayhead)
|
||||
{
|
||||
PreviewAutoCacher cacher;
|
||||
cacher.SetPlayhead(rational(42));
|
||||
}
|
||||
|
||||
TEST_F(PreviewAutoCacherTest, ClearSingleFrameRendersDoesNotCrashWhenEmpty)
|
||||
{
|
||||
PreviewAutoCacher cacher;
|
||||
cacher.ClearSingleFrameRenders();
|
||||
}
|
||||
|
||||
TEST_F(PreviewAutoCacherTest, ClearSingleFrameRendersThatArentRunningDoesNotCrashWhenEmpty)
|
||||
{
|
||||
PreviewAutoCacher cacher;
|
||||
cacher.ClearSingleFrameRendersThatArentRunning();
|
||||
}
|
||||
|
||||
TEST_F(PreviewAutoCacherTest, GetSingleFrameWithoutProjectReturnsTicket)
|
||||
{
|
||||
auto *viewer = new ViewerOutput();
|
||||
viewer->setParent(project_.get());
|
||||
|
||||
PreviewAutoCacher cacher;
|
||||
RenderTicketPtr ticket = cacher.GetSingleFrame(viewer, rational(0));
|
||||
EXPECT_NE(ticket, nullptr);
|
||||
}
|
||||
|
||||
TEST_F(PreviewAutoCacherTest, ForceCacheRangeDoesNotCrash)
|
||||
{
|
||||
auto *viewer = new ViewerOutput();
|
||||
viewer->setParent(project_.get());
|
||||
|
||||
PreviewAutoCacher cacher;
|
||||
cacher.ForceCacheRange(viewer, TimeRange(rational(0), rational(1)));
|
||||
cacher.SetProject(nullptr);
|
||||
}
|
||||
|
||||
TEST_F(PreviewAutoCacherTest, CancelVideoTasksDoesNotCrashWhenIdle)
|
||||
{
|
||||
PreviewAutoCacher cacher;
|
||||
cacher.CancelVideoTasks(false);
|
||||
cacher.CancelVideoTasks(true);
|
||||
}
|
||||
|
||||
TEST_F(PreviewAutoCacherTest, CancelAudioTasksDoesNotCrashWhenIdle)
|
||||
{
|
||||
PreviewAutoCacher cacher;
|
||||
cacher.CancelAudioTasks(false);
|
||||
cacher.CancelAudioTasks(true);
|
||||
}
|
||||
Reference in New Issue
Block a user