tdf#155735: Add tests in basegfx

Add tests for BColorModifier_luminance_to_alpha and
BColorModifier_saturate

Use basegfx::fTools::equal in B3DTuple::operator==,
otherwise some asserts fail with

- Expected: [0.3575, 0.8575, 0.3575]
- Actual  : [0.3575, 0.8575, 0.3575]

Although they are equal

Change-Id: Iad6d9ff78a390f5ee2a3e33e479e34d98e751b2e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153394
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
diff --git a/basegfx/test/BColorModifierTest.cxx b/basegfx/test/BColorModifierTest.cxx
index 2371542..0535400 100755
--- a/basegfx/test/BColorModifierTest.cxx
+++ b/basegfx/test/BColorModifierTest.cxx
@@ -173,11 +173,77 @@ public:
        CPPUNIT_ASSERT_EQUAL(maYellow, aStack1.getModifiedColor(maBlue));
    }

    void testSaturate()
    {
        const basegfx::BColorModifierSharedPtr aBColorModifier
            = std::make_shared<basegfx::BColorModifier_saturate>(0.5);

        CPPUNIT_ASSERT_EQUAL(maWhite, aBColorModifier->getModifiedColor(maWhite));
        CPPUNIT_ASSERT_EQUAL(maGray, aBColorModifier->getModifiedColor(maGray));
        CPPUNIT_ASSERT_EQUAL(maBlack, aBColorModifier->getModifiedColor(maBlack));

        BColor aExpectedRed(0.6065, 0.1065, 0.1065);
        CPPUNIT_ASSERT_EQUAL(aExpectedRed, aBColorModifier->getModifiedColor(maRed));
        BColor aExpectedGreen(0.3575, 0.8575, 0.3575);
        CPPUNIT_ASSERT_EQUAL(aExpectedGreen, aBColorModifier->getModifiedColor(maGreen));
        BColor aExpectedBlue(0.036, 0.036, 0.536);
        CPPUNIT_ASSERT_EQUAL(aExpectedBlue, aBColorModifier->getModifiedColor(maBlue));
        BColor aExpectedYellow(0.964, 0.964, 0.464);
        CPPUNIT_ASSERT_EQUAL(aExpectedYellow, aBColorModifier->getModifiedColor(maYellow));
        BColor aExpectedMagenta(0.6425, 0.1425, 0.6425);
        CPPUNIT_ASSERT_EQUAL(aExpectedMagenta, aBColorModifier->getModifiedColor(maMagenta));
        BColor aExpectedCyan(0.3935, 0.8935, 0.8935);
        CPPUNIT_ASSERT_EQUAL(aExpectedCyan, aBColorModifier->getModifiedColor(maCyan));

        CPPUNIT_ASSERT(aBColorModifier->operator==(*aBColorModifier));
        const basegfx::BColorModifierSharedPtr aBColorModifierInvert
            = std::make_shared<basegfx::BColorModifier_invert>();
        CPPUNIT_ASSERT(*aBColorModifier != *aBColorModifierInvert);

        const basegfx::BColorModifierSharedPtr aBColorModifier2
            = std::make_shared<basegfx::BColorModifier_saturate>(0.5);
        CPPUNIT_ASSERT(aBColorModifier->operator==(*aBColorModifier2));
    }

    void testLuminanceToAlpha()
    {
        const basegfx::BColorModifierSharedPtr aBColorModifier
            = std::make_shared<basegfx::BColorModifier_luminance_to_alpha>();

        CPPUNIT_ASSERT_EQUAL(maBlack, aBColorModifier->getModifiedColor(maWhite));
        CPPUNIT_ASSERT_EQUAL(maGray, aBColorModifier->getModifiedColor(maGray));
        CPPUNIT_ASSERT_EQUAL(maWhite, aBColorModifier->getModifiedColor(maBlack));

        BColor aExpectedRed(0.7875, 0.7875, 0.7875);
        CPPUNIT_ASSERT_EQUAL(aExpectedRed, aBColorModifier->getModifiedColor(maRed));
        BColor aExpectedGreen(0.2846, 0.2846, 0.2846);
        CPPUNIT_ASSERT_EQUAL(aExpectedGreen, aBColorModifier->getModifiedColor(maGreen));
        BColor aExpectedBlue(0.9279, 0.9279, 0.9279);
        CPPUNIT_ASSERT_EQUAL(aExpectedBlue, aBColorModifier->getModifiedColor(maBlue));
        BColor aExpectedYellow(0.0721, 0.0721, 0.0721);
        CPPUNIT_ASSERT_EQUAL(aExpectedYellow, aBColorModifier->getModifiedColor(maYellow));
        BColor aExpectedMagenta(0.7154, 0.7154, 0.7154);
        CPPUNIT_ASSERT_EQUAL(aExpectedMagenta, aBColorModifier->getModifiedColor(maMagenta));
        BColor aExpectedCyan(0.2125, 0.2125, 0.2125);
        CPPUNIT_ASSERT_EQUAL(aExpectedCyan, aBColorModifier->getModifiedColor(maCyan));

        CPPUNIT_ASSERT(aBColorModifier->operator==(*aBColorModifier));
        const basegfx::BColorModifierSharedPtr aBColorModifierInvert
            = std::make_shared<basegfx::BColorModifier_invert>();
        CPPUNIT_ASSERT(*aBColorModifier != *aBColorModifierInvert);

        const basegfx::BColorModifierSharedPtr aBColorModifier2
            = std::make_shared<basegfx::BColorModifier_luminance_to_alpha>();
        CPPUNIT_ASSERT(aBColorModifier->operator==(*aBColorModifier2));
    }

    CPPUNIT_TEST_SUITE(bcolormodifier);
    CPPUNIT_TEST(testGray);
    CPPUNIT_TEST(testInvert);
    CPPUNIT_TEST(testReplace);
    CPPUNIT_TEST(testStack);
    CPPUNIT_TEST(testSaturate);
    CPPUNIT_TEST(testLuminanceToAlpha);
    CPPUNIT_TEST_SUITE_END();
};

diff --git a/include/basegfx/tuple/b3dtuple.hxx b/include/basegfx/tuple/b3dtuple.hxx
index 7ac6a77..15777b7 100644
--- a/include/basegfx/tuple/b3dtuple.hxx
+++ b/include/basegfx/tuple/b3dtuple.hxx
@@ -112,7 +112,9 @@ namespace basegfx

        bool operator==(const B3DTuple& rTup) const
        {
            return mfX == rTup.mfX && mfY == rTup.mfY && mfZ == rTup.mfZ;
            return ::basegfx::fTools::equal(mfX, rTup.mfX) &&
                ::basegfx::fTools::equal(mfY, rTup.mfY) &&
                ::basegfx::fTools::equal(mfZ, rTup.mfZ);
        }

        bool operator!=(const B3DTuple& rTup) const { return !operator==(rTup); }