Files
oak-editor/tests/gtest/ui_icons_test.cpp
T
Mike-Solar 807e02614b tests: coverage for common utils, cli, timeline undo, tasks, codec, ui
- common: Html doc<->HTML conversion (17), OIIOUtils (6)
- cli: CLIProgressDialog rendering and CLITaskDialog (8)
- timeline: undo commands for pointer/ripple/split/track/workarea (43)
  and general commands (22)
- task: project import/load, import error dialog, cache tasks (13)
- codec: OIIO decoder/encoder, planar file device, FFmpeg encoder (15)
- ui: HumanStrings (6), icons (4), StyleManager (4)
2026-07-17 13:07:56 +08:00

117 lines
3.7 KiB
C++

#include <gtest/gtest.h>
#include <QFile>
#include <QIcon>
#include <QVector>
#include "ui/icons/icons.h"
TEST(UIIcons, ThemeResourcesAreRegistered)
{
// Both themes compile their icons into the binary via AUTORCC resources
EXPECT_TRUE(
QFile::exists(QStringLiteral(":/style/olive-dark/png/play.16.png")));
EXPECT_TRUE(
QFile::exists(QStringLiteral(":/style/olive-light/png/play.16.png")));
EXPECT_TRUE(QFile::exists(QStringLiteral(":/style/olive-dark/palette.ini")));
EXPECT_TRUE(QFile::exists(QStringLiteral(":/style/olive-dark/style.css")));
}
TEST(UIIcons, CreateLoadsAllSizes)
{
QIcon icon = olive::icon::Create(QStringLiteral(":/style/olive-dark"),
QStringLiteral("play"));
ASSERT_FALSE(icon.isNull());
// genicons.sh generates 16/32/64/128 px variants of every icon
const QList<QSize> sizes = icon.availableSizes();
for (int sz : { 16, 32, 64, 128 }) {
EXPECT_TRUE(sizes.contains(QSize(sz, sz))) << "Missing size " << sz;
}
EXPECT_FALSE(icon.pixmap(QSize(32, 32)).isNull());
}
TEST(UIIcons, CreateWithUnknownNameIsNull)
{
QIcon icon = olive::icon::Create(QStringLiteral(":/style/olive-dark"),
QStringLiteral("no-such-icon"));
EXPECT_TRUE(icon.isNull());
EXPECT_TRUE(icon.availableSizes().isEmpty());
}
TEST(UIIcons, LoadAllPopulatesGlobalIcons)
{
olive::icon::LoadAll(QStringLiteral(":/style/olive-dark"));
const QVector<QIcon *> all = { &olive::icon::GoToStart,
&olive::icon::PrevFrame,
&olive::icon::Play,
&olive::icon::Pause,
&olive::icon::NextFrame,
&olive::icon::GoToEnd,
&olive::icon::New,
&olive::icon::Open,
&olive::icon::Save,
&olive::icon::Undo,
&olive::icon::Redo,
&olive::icon::TreeView,
&olive::icon::ListView,
&olive::icon::IconView,
&olive::icon::ToolPointer,
&olive::icon::ToolEdit,
&olive::icon::ToolRipple,
&olive::icon::ToolRolling,
&olive::icon::ToolRazor,
&olive::icon::ToolSlip,
&olive::icon::ToolSlide,
&olive::icon::ToolHand,
&olive::icon::ToolTransition,
&olive::icon::ToolTrackSelect,
&olive::icon::Folder,
&olive::icon::Sequence,
&olive::icon::Video,
&olive::icon::Audio,
&olive::icon::Image,
&olive::icon::MiniMap,
&olive::icon::TriUp,
&olive::icon::TriLeft,
&olive::icon::TriDown,
&olive::icon::TriRight,
&olive::icon::TextBold,
&olive::icon::TextItalic,
&olive::icon::TextUnderline,
&olive::icon::TextStrikethrough,
&olive::icon::TextSmallCaps,
&olive::icon::TextAlignLeft,
&olive::icon::TextAlignRight,
&olive::icon::TextAlignCenter,
&olive::icon::TextAlignJustify,
&olive::icon::TextAlignTop,
&olive::icon::TextAlignBottom,
&olive::icon::TextAlignMiddle,
&olive::icon::Snapping,
&olive::icon::ZoomIn,
&olive::icon::ZoomOut,
&olive::icon::Record,
&olive::icon::Add,
&olive::icon::Error,
&olive::icon::DirUp,
&olive::icon::Clock,
&olive::icon::Diamond,
&olive::icon::Plus,
&olive::icon::Minus,
&olive::icon::AddEffect,
&olive::icon::EyeOpened,
&olive::icon::EyeClosed,
&olive::icon::LockOpened,
&olive::icon::LockClosed,
&olive::icon::Pencil,
&olive::icon::Subtitles,
&olive::icon::ColorPicker };
for (const QIcon *icon : all) {
EXPECT_FALSE(icon->isNull());
}
}