diff options
| author | Felix Morgner <felix.morgner@gmail.com> | 2024-07-15 22:26:12 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@gmail.com> | 2024-07-15 22:26:12 +0200 |
| commit | 3262b3a337759439f3049b9299be12baf8420750 (patch) | |
| tree | 53d2e71a390662894bca3eb5c9345a59f08fc806 /domain/src | |
| parent | 7758fbc7522b39bad768abfa728b37c97007ffb6 (diff) | |
| download | turns-3262b3a337759439f3049b9299be12baf8420750.tar.xz turns-3262b3a337759439f3049b9299be12baf8420750.zip | |
turns: add more tests
Diffstat (limited to 'domain/src')
| -rw-r--r-- | domain/src/turn_order.cpp | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/domain/src/turn_order.cpp b/domain/src/turn_order.cpp index 454e27a..eddd468 100644 --- a/domain/src/turn_order.cpp +++ b/domain/src/turn_order.cpp @@ -23,6 +23,10 @@ namespace turns::domain } return -1; }; + + auto constexpr equal_comparator = [](auto lhs, auto rhs) { + return (lhs->get_name() == rhs->get_name()) && (lhs->get_priority() && rhs->get_priority()); + }; } // namespace auto turn_order::create() -> Glib::RefPtr<turn_order> @@ -30,11 +34,19 @@ namespace turns::domain return Glib::make_refptr_for_instance(new turn_order{}); } + auto turn_order::append(Glib::RefPtr<participant> item) -> void + { + if (auto [found, index] = find(item, equal_comparator); !found) + { + insert_sorted(item, comparator); + } + } + auto turn_order::append(Glib::ustring const & name, float priority) -> void { auto participant = participant::create(name, priority); - participant->property_priority().signal_changed().connect([this] { sort(); }); - insert_sorted(participant, comparator); + participant->property_priority().signal_changed().connect([this] { sort(comparator); }); + append(participant); } auto turn_order::remove(Glib::RefPtr<participant> item) -> void @@ -45,9 +57,4 @@ namespace turns::domain } } - auto turn_order::sort() -> void - { - super::sort(comparator); - } - } // namespace turns::domain
\ No newline at end of file |
