summaryrefslogtreecommitdiff
path: root/domain/src
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@gmail.com>2024-07-15 22:26:12 +0200
committerFelix Morgner <felix.morgner@gmail.com>2024-07-15 22:26:12 +0200
commit3262b3a337759439f3049b9299be12baf8420750 (patch)
tree53d2e71a390662894bca3eb5c9345a59f08fc806 /domain/src
parent7758fbc7522b39bad768abfa728b37c97007ffb6 (diff)
downloadturns-3262b3a337759439f3049b9299be12baf8420750.tar.xz
turns-3262b3a337759439f3049b9299be12baf8420750.zip
turns: add more tests
Diffstat (limited to 'domain/src')
-rw-r--r--domain/src/turn_order.cpp21
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