Extract history UI operation planning
This commit is contained in:
90
tests/app_core/history_ui_tests.cpp
Normal file
90
tests/app_core/history_ui_tests.cpp
Normal file
@@ -0,0 +1,90 @@
|
||||
#include "app_core/history_ui.h"
|
||||
#include "test_harness.h"
|
||||
|
||||
namespace {
|
||||
|
||||
void undo_and_redo_plan_availability(pp::tests::Harness& harness)
|
||||
{
|
||||
const auto undo = pp::app::plan_history_undo(2);
|
||||
PP_EXPECT(harness, undo);
|
||||
if (undo) {
|
||||
PP_EXPECT(harness, undo.value().operation == pp::app::HistoryUiOperation::undo);
|
||||
PP_EXPECT(harness, undo.value().undo_count == 2);
|
||||
PP_EXPECT(harness, undo.value().invokes_undo);
|
||||
PP_EXPECT(harness, undo.value().updates_memory_label);
|
||||
PP_EXPECT(harness, undo.value().updates_title);
|
||||
PP_EXPECT(harness, !undo.value().no_op);
|
||||
}
|
||||
|
||||
const auto undo_empty = pp::app::plan_history_undo(0);
|
||||
PP_EXPECT(harness, undo_empty);
|
||||
if (undo_empty) {
|
||||
PP_EXPECT(harness, undo_empty.value().no_op);
|
||||
PP_EXPECT(harness, !undo_empty.value().invokes_undo);
|
||||
}
|
||||
|
||||
const auto redo = pp::app::plan_history_redo(1);
|
||||
PP_EXPECT(harness, redo);
|
||||
if (redo) {
|
||||
PP_EXPECT(harness, redo.value().operation == pp::app::HistoryUiOperation::redo);
|
||||
PP_EXPECT(harness, redo.value().redo_count == 1);
|
||||
PP_EXPECT(harness, redo.value().invokes_redo);
|
||||
PP_EXPECT(harness, redo.value().updates_title);
|
||||
}
|
||||
|
||||
const auto redo_empty = pp::app::plan_history_redo(0);
|
||||
PP_EXPECT(harness, redo_empty);
|
||||
if (redo_empty) {
|
||||
PP_EXPECT(harness, redo_empty.value().no_op);
|
||||
PP_EXPECT(harness, !redo_empty.value().invokes_redo);
|
||||
}
|
||||
}
|
||||
|
||||
void clear_plan_tracks_stacks_and_memory(pp::tests::Harness& harness)
|
||||
{
|
||||
const auto clear = pp::app::plan_history_clear(2, 1, 4096);
|
||||
PP_EXPECT(harness, clear);
|
||||
if (clear) {
|
||||
PP_EXPECT(harness, clear.value().operation == pp::app::HistoryUiOperation::clear);
|
||||
PP_EXPECT(harness, clear.value().undo_count == 2);
|
||||
PP_EXPECT(harness, clear.value().redo_count == 1);
|
||||
PP_EXPECT(harness, clear.value().memory_bytes == 4096);
|
||||
PP_EXPECT(harness, clear.value().clears_history);
|
||||
PP_EXPECT(harness, clear.value().updates_memory_label);
|
||||
PP_EXPECT(harness, !clear.value().updates_title);
|
||||
}
|
||||
|
||||
const auto memory_only = pp::app::plan_history_clear(0, 0, 1024);
|
||||
PP_EXPECT(harness, memory_only);
|
||||
if (memory_only) {
|
||||
PP_EXPECT(harness, memory_only.value().clears_history);
|
||||
PP_EXPECT(harness, !memory_only.value().no_op);
|
||||
}
|
||||
|
||||
const auto empty = pp::app::plan_history_clear(0, 0, 0);
|
||||
PP_EXPECT(harness, empty);
|
||||
if (empty) {
|
||||
PP_EXPECT(harness, empty.value().no_op);
|
||||
PP_EXPECT(harness, !empty.value().clears_history);
|
||||
}
|
||||
}
|
||||
|
||||
void rejects_negative_metrics(pp::tests::Harness& harness)
|
||||
{
|
||||
PP_EXPECT(harness, !pp::app::plan_history_undo(-1));
|
||||
PP_EXPECT(harness, !pp::app::plan_history_redo(-1));
|
||||
PP_EXPECT(harness, !pp::app::plan_history_clear(-1, 0, 0));
|
||||
PP_EXPECT(harness, !pp::app::plan_history_clear(0, -1, 0));
|
||||
PP_EXPECT(harness, !pp::app::plan_history_clear(0, 0, -1));
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
int main()
|
||||
{
|
||||
pp::tests::Harness harness;
|
||||
harness.run("undo and redo plan availability", undo_and_redo_plan_availability);
|
||||
harness.run("clear plan tracks stacks and memory", clear_plan_tracks_stacks_and_memory);
|
||||
harness.run("rejects negative metrics", rejects_negative_metrics);
|
||||
return harness.finish();
|
||||
}
|
||||
Reference in New Issue
Block a user