Files
panopainter/tests/app_core/app_frame_tests.cpp

79 lines
2.9 KiB
C++

#include "app_core/app_frame.h"
#include "test_harness.h"
namespace {
void initial_surface_matches_legacy_default(pp::tests::Harness& harness)
{
const auto plan = pp::app::plan_app_initial_surface();
PP_EXPECT(harness, plan.width == 960.0F);
PP_EXPECT(harness, plan.height == 540.0F);
}
void update_plan_skips_idle_frames(pp::tests::Harness& harness)
{
const auto plan = pp::app::plan_app_frame_update(false, false);
PP_EXPECT(harness, !plan.update_frame);
PP_EXPECT(harness, !plan.update_layouts);
PP_EXPECT(harness, !plan.refresh_canvas_toolbar);
}
void update_plan_refreshes_redraw_or_animated_frames(pp::tests::Harness& harness)
{
const auto redraw = pp::app::plan_app_frame_update(true, false);
const auto animated = pp::app::plan_app_frame_update(false, true);
PP_EXPECT(harness, redraw.update_frame);
PP_EXPECT(harness, redraw.update_layouts);
PP_EXPECT(harness, redraw.refresh_canvas_toolbar);
PP_EXPECT(harness, animated.update_frame);
PP_EXPECT(harness, animated.update_layouts);
PP_EXPECT(harness, animated.refresh_canvas_toolbar);
}
void draw_plan_selects_canvas_and_ui_passes(pp::tests::Harness& harness)
{
const auto plan = pp::app::plan_app_frame_draw(true, true, true, true, false);
PP_EXPECT(harness, plan.draw_canvas_stroke);
PP_EXPECT(harness, plan.draw_vr_ui);
PP_EXPECT(harness, plan.draw_main_ui);
PP_EXPECT(harness, plan.reset_redraw);
}
void draw_plan_skips_missing_canvas_document(pp::tests::Harness& harness)
{
const auto missing_node = pp::app::plan_app_frame_draw(false, true, false, true, false);
const auto missing_document = pp::app::plan_app_frame_draw(true, false, false, true, false);
PP_EXPECT(harness, !missing_node.draw_canvas_stroke);
PP_EXPECT(harness, !missing_document.draw_canvas_stroke);
}
void draw_plan_respects_vr_visibility_modes(pp::tests::Harness& harness)
{
const auto hidden_vr_ui = pp::app::plan_app_frame_draw(true, true, true, false, false);
const auto vr_only = pp::app::plan_app_frame_draw(true, true, false, true, true);
PP_EXPECT(harness, !hidden_vr_ui.draw_vr_ui);
PP_EXPECT(harness, hidden_vr_ui.draw_main_ui);
PP_EXPECT(harness, !vr_only.draw_vr_ui);
PP_EXPECT(harness, !vr_only.draw_main_ui);
}
} // namespace
int main()
{
pp::tests::Harness harness;
harness.run("initial surface matches legacy default", initial_surface_matches_legacy_default);
harness.run("update plan skips idle frames", update_plan_skips_idle_frames);
harness.run("update plan refreshes redraw or animated frames", update_plan_refreshes_redraw_or_animated_frames);
harness.run("draw plan selects canvas and UI passes", draw_plan_selects_canvas_and_ui_passes);
harness.run("draw plan skips missing canvas document", draw_plan_skips_missing_canvas_document);
harness.run("draw plan respects VR visibility modes", draw_plan_respects_vr_visibility_modes);
return harness.finish();
}