From dc70a04100fd491151d3478a05ecf8baecfa894c Mon Sep 17 00:00:00 2001 From: Greg Ercolano Date: Wed, 10 Jan 2024 21:32:02 -0800 Subject: [PATCH] Add Fl_String not-equal test --- src/Fl_String.H | 1 + src/Fl_String.cxx | 13 +++++++++++++ test/unittest_core.cxx | 2 ++ 3 files changed, 16 insertions(+) diff --git a/src/Fl_String.H b/src/Fl_String.H index d10d75b6c..e7fbf49eb 100644 --- a/src/Fl_String.H +++ b/src/Fl_String.H @@ -135,6 +135,7 @@ public: FL_EXPORT Fl_String operator+(const Fl_String& lhs, const Fl_String& rhs); FL_EXPORT Fl_String operator+(const Fl_String& lhs, const char* rhs); FL_EXPORT bool operator==(const Fl_String & lhs, const Fl_String & rhs); +FL_EXPORT bool operator!=(const Fl_String & lhs, const Fl_String & rhs); /** \} diff --git a/src/Fl_String.cxx b/src/Fl_String.cxx index 8fd8e5f51..60d50ef99 100644 --- a/src/Fl_String.cxx +++ b/src/Fl_String.cxx @@ -645,6 +645,19 @@ bool operator==(const Fl_String &lhs, const Fl_String &rhs) { return false; } +/** + Compare two strings for inequality. + \param[in] lhs first string + \param[in] rhs second string + \return true if strings differ in size or content + */ +bool operator!=(const Fl_String &lhs, const Fl_String &rhs) { + if (lhs.size() != rhs.size()) return true; + int sz = lhs.size(); // same size for both + if (memcmp(lhs.data(), rhs.data(), sz) != 0) return true; + return false; +} + /** \} \endcond diff --git a/test/unittest_core.cxx b/test/unittest_core.cxx index 23e7ab953..bc91c8dd4 100644 --- a/test/unittest_core.cxx +++ b/test/unittest_core.cxx @@ -193,6 +193,8 @@ TEST(Fl_String, Non-Member Functions) { EXPECT_STREQ(result.c_str(), "x"); EXPECT_TRUE(!(a == b)); EXPECT_TRUE(a == a); + EXPECT_FALSE((a != a)); // neq -erco + EXPECT_TRUE((a != b)); // neq -erco EXPECT_TRUE(empty == empty); EXPECT_TRUE(a+b == "ab"); EXPECT_TRUE(a+"b" == "a" + b);