configuration.text.tests.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 | #include <planet/serialise.hpp>
#include <planet/text/configuration.hpp>
#include <felspar/test.hpp>
namespace {
auto const suite = felspar::testsuite("text.configuration");
auto const defaults = suite.test("defaults", [](auto check) {
planet::text::configuration const keys;
check(keys.commit.matches(
{.scancode = planet::events::scancode::return_key}))
== true;
check(keys.cancel.matches(
{.scancode = planet::events::scancode::escape_key}))
== true;
check(keys.erase_backwards.matches(
{.scancode = planet::events::scancode::backspace_key}))
== true;
check(keys.erase_forwards.matches(
{.scancode = planet::events::scancode::delete_key}))
== true;
check(keys.caret_left.matches(
{.scancode = planet::events::scancode::left_key}))
== true;
check(keys.caret_right.matches(
{.scancode = planet::events::scancode::right_key}))
== true;
check(keys.caret_to_start.matches(
{.scancode = planet::events::scancode::home_key}))
== true;
check(keys.caret_to_end.matches(
{.scancode = planet::events::scancode::end_key}))
== true;
});
auto const modifiers = suite.test("default modifiers", [](auto check) {
|
Every default is the bare key, so a modifier held with it is a
combination the game means something else by rather than an edit
control.
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63 | planet::text::configuration const keys;
check(keys.caret_to_start.matches(
{.scancode = planet::events::scancode::home_key,
.modifiers = {.ctrl = true}}))
== false;
check(keys.commit.matches(
{.scancode = planet::events::scancode::return_key,
.modifiers = {.shift = true}}))
== false;
});
auto const round_trip = suite.test("serialise", [](auto check) {
planet::text::configuration keys;
|
A rebinding of the sort a game would save on the player's behalf
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79 | keys.commit = {planet::events::scancode::tab_key, {}};
keys.caret_to_end = {
planet::events::scancode::right_key, {.ctrl = true}};
planet::serialise::save_buffer ab;
save(ab, keys);
auto const loaded =
planet::serialise::load_type<planet::text::configuration>(
ab.complete());
check(loaded == keys) == true;
check(loaded.commit.scancode == planet::events::scancode::tab_key)
== true;
check(loaded.caret_to_end.modifiers.ctrl) == true;
|
The bindings that were left alone come back as they were
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98 | check(loaded.cancel == planet::text::configuration{}.cancel) == true;
});
auto const defaults_round_trip =
suite.test("serialise defaults", [](auto check) {
planet::serialise::save_buffer ab;
planet::text::configuration const keys;
save(ab, keys);
check(planet::serialise::load_type<planet::text::configuration>(
ab.complete())
== keys)
== true;
});
}
|