summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBardur Arantsson <bardur@scientician.net>2016-06-21 06:05:58 +0200
committerBardur Arantsson <bardur@scientician.net>2016-06-21 06:10:20 +0200
commit117c211cf7ca94914eef75aa1c1912cd5d6de2ec (patch)
tree9edc1207f670558276d73cab67c70371272ea4ca
parent43d7c01d6d76706a55e852055f09f0301408ce5d (diff)
Fix bug in flag_set '==' operator
-rw-r--r--src/flag_set.hpp9
-rw-r--r--tests/flag_set.cc10
2 files changed, 18 insertions, 1 deletions
diff --git a/src/flag_set.hpp b/src/flag_set.hpp
index 490f0daf..737513d5 100644
--- a/src/flag_set.hpp
+++ b/src/flag_set.hpp
@@ -99,7 +99,14 @@ public:
constexpr bool operator == (flag_set const &other) const
{
- return m_data == other.m_data;
+ for (std::size_t i = 0; i < tiers; i++)
+ {
+ if (m_data[i] != other.m_data[i])
+ {
+ return false;
+ }
+ }
+ return true;
}
constexpr bool operator != (flag_set const &other) const
diff --git a/tests/flag_set.cc b/tests/flag_set.cc
index 3abd505d..05418a05 100644
--- a/tests/flag_set.cc
+++ b/tests/flag_set.cc
@@ -59,6 +59,16 @@ go_bandit([]() {
AssertThat(result, Equals(true));
});
+ it("== operator should compare equals as equals", [&] {
+ // Setup
+ fs_t fs1 = fs_t::make(1, 3);
+ fs_t fs2 = fs_t::make(1, 3);
+ // Exercise
+ auto result = (fs1 == fs2);
+ // Verify
+ AssertThat(result, Equals(true));
+ });
+
it("| operator should respect the tier and index", [&] {
// Setup
fs_t fs1 = fs_t::make(0, 31);