root/src/tests/kits/support/StringCompareTest.cpp
/*
 * Copyright 2002-2026, Haiku, Inc. All Rights Reserved.
 * Distributed under the terms of the MIT License.
 */


#include <String.h>

#include <TestSuiteAddon.h>
#include <cppunit/TestFixture.h>
#include <cppunit/extensions/HelperMacros.h>


class StringCompareTest : public CppUnit::TestFixture {
        CPPUNIT_TEST_SUITE(StringCompareTest);
        CPPUNIT_TEST(LessThan_BString_ReturnsTrueForSmaller);
        CPPUNIT_TEST(LessThanOrEqual_BString_ReturnsTrueForSmaller);
        CPPUNIT_TEST(LessThanOrEqual_BString_ReturnsTrueForEqual);
        CPPUNIT_TEST(Equals_BString_ReturnsTrueForEqual);
        CPPUNIT_TEST(Equals_BString_ReturnsFalseForUnequal);
        CPPUNIT_TEST(GreaterThanOrEqual_BString_ReturnsTrueForGreater);
        CPPUNIT_TEST(GreaterThanOrEqual_BString_ReturnsTrueForEqual);
        CPPUNIT_TEST(GreaterThan_BString_ReturnsTrueForGreater);
        CPPUNIT_TEST(NotEquals_BString_ReturnsFalseForEqual);
        CPPUNIT_TEST(NotEquals_BString_ReturnsTrueForUnequal);
        CPPUNIT_TEST(LessThan_CString_ReturnsTrueForSmaller);
        CPPUNIT_TEST(LessThanOrEqual_CString_ReturnsTrueForSmallerOrEqual);
        CPPUNIT_TEST(Equals_CString_ReturnsTrueForEqual);
        CPPUNIT_TEST(Equals_CString_ReturnsFalseForUnequal);
        CPPUNIT_TEST(GreaterThanOrEqual_CString_ReturnsTrueForGreaterOrEqual);
        CPPUNIT_TEST(GreaterThan_CString_ReturnsTrueForGreater);
        CPPUNIT_TEST(NotEquals_CString_ReturnsFalseForEqual);
        CPPUNIT_TEST(NotEquals_CString_ReturnsTrueForUnequal);
        CPPUNIT_TEST_SUITE_END();

public:
        void LessThan_BString_ReturnsTrueForSmaller()
        {
                BString string1("11111_a");
                BString string2("22222_b");
                CPPUNIT_ASSERT(string1 < string2);
        }

        void LessThanOrEqual_BString_ReturnsTrueForSmaller()
        {
                BString string1("11111_a");
                BString string2("22222_b");
                CPPUNIT_ASSERT(string1 <= string2);
        }

        void LessThanOrEqual_BString_ReturnsTrueForEqual()
        {
                BString string1("11111");
                BString string2("11111");
                CPPUNIT_ASSERT(string1 <= string2);
        }

        void Equals_BString_ReturnsTrueForEqual()
        {
                BString string1("string");
                BString string2("string");
                CPPUNIT_ASSERT(string1 == string2);
        }

        void Equals_BString_ReturnsFalseForUnequal()
        {
                BString string1("text");
                BString string2("string");
                CPPUNIT_ASSERT((string1 == string2) == false);
        }

        void GreaterThanOrEqual_BString_ReturnsTrueForGreater()
        {
                BString string1("BBBBB");
                BString string2("AAAAA");
                CPPUNIT_ASSERT(string1 >= string2);
        }

        void GreaterThanOrEqual_BString_ReturnsTrueForEqual()
        {
                BString string1("11111");
                BString string2("11111");
                CPPUNIT_ASSERT(string1 >= string2);
        }

        void GreaterThan_BString_ReturnsTrueForGreater()
        {
                BString string1("BBBBB");
                BString string2("AAAAA");
                CPPUNIT_ASSERT(string1 > string2);
        }

        void NotEquals_BString_ReturnsFalseForEqual()
        {
                BString string1("string");
                BString string2("string");
                CPPUNIT_ASSERT((string1 != string2) == false);
        }

        void NotEquals_BString_ReturnsTrueForUnequal()
        {
                BString string1("text");
                BString string2("string");
                CPPUNIT_ASSERT(string1 != string2);
        }

        void LessThan_CString_ReturnsTrueForSmaller()
        {
                BString string1("AAAAA");
                CPPUNIT_ASSERT(string1 < "BBBBB");
        }

        void LessThanOrEqual_CString_ReturnsTrueForSmallerOrEqual()
        {
                BString string1("AAAAA");
                CPPUNIT_ASSERT(string1 <= "BBBBB");
                CPPUNIT_ASSERT(string1 <= "AAAAA");
        }

        void Equals_CString_ReturnsTrueForEqual()
        {
                BString string1("AAAAA");
                CPPUNIT_ASSERT(string1 == "AAAAA");
        }

        void Equals_CString_ReturnsFalseForUnequal()
        {
                BString string1("AAAAA");
                CPPUNIT_ASSERT((string1 == "BBBB") == false);
        }

        void GreaterThanOrEqual_CString_ReturnsTrueForGreaterOrEqual()
        {
                BString string1("BBBBB");
                CPPUNIT_ASSERT(string1 >= "AAAAA");
                CPPUNIT_ASSERT(string1 >= "BBBBB");
        }

        void GreaterThan_CString_ReturnsTrueForGreater()
        {
                BString string1("BBBBB");
                CPPUNIT_ASSERT(string1 > "AAAAA");
        }

        void NotEquals_CString_ReturnsFalseForEqual()
        {
                BString string1("AAAAA");
                CPPUNIT_ASSERT((string1 != "AAAAA") == false);
        }

        void NotEquals_CString_ReturnsTrueForUnequal()
        {
                BString string1("AAAAA");
                CPPUNIT_ASSERT(string1 != "BBBB");
        }
};


CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(StringCompareTest, getTestSuiteName());