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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
|
#include "turns/ui/participant_editor.hpp"
#include "turns/core/disposition.hpp"
#include "turns/core/participant.hpp"
#include "turns/lang/messages.hpp"
#include <catch2/catch_test_macros.hpp>
#include <catch2/generators/catch_generators.hpp>
#include <glibmm/i18n.h>
#include <glibmm/ustring.h>
#include <glibmm/wrap.h>
#include <gtkmm/builder.h>
#include <gtkmm/listboxrow.h>
#include <gtkmm/window.h>
#include <adwaitamm/entryrow.hpp>
#include <adwaitamm/spinrow.hpp>
#include <gtk/gtk.h>
#include <clocale>
#include <memory>
namespace turns::ui::tests
{
TEST_CASE("A freshly constructed participant editor without a participant", "[windows]")
{
auto locale = GENERATE("en_US.UTF-8", "de_CH.UTF-8");
setlocale(LC_ALL, locale);
auto participant = core::Participant::create("Frederick Thumblewackle", 7.2, core::Disposition::Friendly);
auto instance = std::make_shared<ParticipantEditor>(nullptr);
auto window = Gtk::Window{};
SECTION("was successfully constructed")
{
REQUIRE(instance);
}
SECTION("has a non-empty title")
{
REQUIRE_FALSE(instance->get_title().empty());
}
SECTION("has its title set according to the active language")
{
REQUIRE(instance->get_title() == _(lang::add_participant));
}
SECTION("has an empty name")
{
REQUIRE(instance->get_name().empty());
}
SECTION("has a zero priority")
{
REQUIRE(instance->get_priority() == 0);
}
SECTION("has neutral disposition")
{
REQUIRE(instance->get_disposition() == core::Disposition::Neutral);
}
SECTION("has a null participant")
{
REQUIRE_FALSE(instance->get_participant());
}
WHEN("setting a new participant")
{
instance->set_participant(participant);
THEN("getting the participant returns the new one")
{
REQUIRE(instance->get_participant() == participant);
}
THEN("changes to the name propagate to the participant")
{
CHECK(participant->get_name() != "REPLACED");
instance->set_name("REPLACED");
REQUIRE(participant->get_name() == "REPLACED");
}
THEN("changes to the priority propagate to the participant")
{
CHECK(participant->get_priority() != 0);
instance->set_priority(0);
REQUIRE(participant->get_priority() == 0);
}
THEN("changes to the disposition propagate to the participant")
{
CHECK(participant->get_disposition() != core::Disposition::Secret);
instance->set_disposition(core::Disposition::Secret);
REQUIRE(participant->get_disposition() == core::Disposition::Secret);
}
}
SECTION("allows binding to the finished signal")
{
REQUIRE((instance->signal_finished().connect([](auto, auto, auto) {})).connected());
}
}
TEST_CASE("A freshly constructed participant editor with a participant", "[windows]")
{
auto locale = GENERATE("en_US.UTF-8", "de_CH.UTF-8");
setlocale(LC_ALL, locale);
auto participant = core::Participant::create("Qibi Babblebranch", 12, core::Disposition::Neutral);
auto instance = std::make_shared<ParticipantEditor>(participant);
auto window = Gtk::Window{};
SECTION("was successfully constructed")
{
REQUIRE(instance);
}
SECTION("has a non-empty title")
{
REQUIRE_FALSE(instance->get_title().empty());
}
SECTION("has its title set according to the active language")
{
REQUIRE(instance->get_title() == _(lang::edit_participant));
}
SECTION("has its name field set according to its participant")
{
REQUIRE(instance->get_name() == participant->property_name().get_value());
}
SECTION("has its priority field set according to its participant")
{
REQUIRE(instance->get_priority() == participant->property_priority());
}
SECTION("allows binding to the finished signal")
{
REQUIRE((instance->signal_finished().connect([](auto, auto, auto) {})).connected());
}
}
} // namespace turns::ui::tests
|