Route app frame decisions through app core
This commit is contained in:
@@ -555,6 +555,16 @@ add_test(NAME pp_app_core_app_startup_tests COMMAND pp_app_core_app_startup_test
|
||||
set_tests_properties(pp_app_core_app_startup_tests PROPERTIES
|
||||
LABELS "app;desktop-fast;fuzz")
|
||||
|
||||
add_executable(pp_app_core_app_frame_tests
|
||||
app_core/app_frame_tests.cpp)
|
||||
target_link_libraries(pp_app_core_app_frame_tests PRIVATE
|
||||
pp_app_core
|
||||
pp_test_harness)
|
||||
|
||||
add_test(NAME pp_app_core_app_frame_tests COMMAND pp_app_core_app_frame_tests)
|
||||
set_tests_properties(pp_app_core_app_frame_tests PROPERTIES
|
||||
LABELS "app;desktop-fast;fuzz")
|
||||
|
||||
add_executable(pp_app_core_document_sharing_tests
|
||||
app_core/document_sharing_tests.cpp)
|
||||
target_link_libraries(pp_app_core_document_sharing_tests PRIVATE
|
||||
@@ -947,6 +957,18 @@ if(TARGET pano_cli)
|
||||
WILL_FAIL TRUE
|
||||
PASS_REGULAR_EXPRESSION "\"command\":\"plan-app-startup-resources\".*\"message\":\"startup resource dimensions")
|
||||
|
||||
add_test(NAME pano_cli_plan_app_frame_vr_smoke
|
||||
COMMAND pano_cli plan-app-frame --redraw --vr-active)
|
||||
set_tests_properties(pano_cli_plan_app_frame_vr_smoke PROPERTIES
|
||||
LABELS "app;integration;desktop-fast"
|
||||
PASS_REGULAR_EXPRESSION "\"command\":\"plan-app-frame\".*\"surface\":\\{\"width\":960,\"height\":540\\}.*\"updateFrame\":true.*\"updateLayouts\":true.*\"refreshCanvasToolbar\":true.*\"drawCanvasStroke\":true.*\"drawVrUi\":true.*\"drawMainUi\":true.*\"resetRedraw\":true")
|
||||
|
||||
add_test(NAME pano_cli_plan_app_frame_idle_missing_canvas_smoke
|
||||
COMMAND pano_cli plan-app-frame --no-canvas --ui-hidden --vr-only)
|
||||
set_tests_properties(pano_cli_plan_app_frame_idle_missing_canvas_smoke PROPERTIES
|
||||
LABELS "app;integration;desktop-fast;fuzz"
|
||||
PASS_REGULAR_EXPRESSION "\"command\":\"plan-app-frame\".*\"updateFrame\":false.*\"drawCanvasStroke\":false.*\"drawVrUi\":false.*\"drawMainUi\":false.*\"resetRedraw\":true")
|
||||
|
||||
add_test(NAME pano_cli_plan_brush_package_import_ppbr_smoke
|
||||
COMMAND pano_cli plan-brush-package-import
|
||||
--kind ppbr
|
||||
|
||||
78
tests/app_core/app_frame_tests.cpp
Normal file
78
tests/app_core/app_frame_tests.cpp
Normal file
@@ -0,0 +1,78 @@
|
||||
#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();
|
||||
}
|
||||
Reference in New Issue
Block a user