summaryrefslogtreecommitdiffstats
path: root/basegfx/test/BColorTest.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'basegfx/test/BColorTest.cxx')
-rw-r--r--basegfx/test/BColorTest.cxx151
1 files changed, 151 insertions, 0 deletions
diff --git a/basegfx/test/BColorTest.cxx b/basegfx/test/BColorTest.cxx
new file mode 100644
index 000000000000..cc29fdfb6624
--- /dev/null
+++ b/basegfx/test/BColorTest.cxx
@@ -0,0 +1,151 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <cppunit/TestAssert.h>
+#include <cppunit/TestFixture.h>
+#include <cppunit/extensions/HelperMacros.h>
+#include <cppunit/plugin/TestPlugIn.h>
+
+#include <basegfx/color/bcolor.hxx>
+#include <basegfx/color/bcolortools.hxx>
+
+namespace basegfx
+{
+class bcolor : public CppUnit::TestFixture
+{
+ BColor maWhite;
+ BColor maBlack;
+ BColor maRed;
+ BColor maGreen;
+ BColor maBlue;
+ BColor maYellow;
+ BColor maMagenta;
+ BColor maCyan;
+
+public:
+ bcolor()
+ : maWhite(1, 1, 1)
+ , maBlack(0, 0, 0)
+ , maRed(1, 0, 0)
+ , maGreen(0, 1, 0)
+ , maBlue(0, 0, 1)
+ , maYellow(1, 1, 0)
+ , maMagenta(1, 0, 1)
+ , maCyan(0, 1, 1)
+ {
+ }
+
+ // insert your test code here.
+ void hslTest()
+ {
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("white", BColor(0, 0, 1), utils::rgb2hsl(maWhite));
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("black", BColor(0, 0, 0), utils::rgb2hsl(maBlack));
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("red", BColor(0, 1, 0.5), utils::rgb2hsl(maRed));
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("green", BColor(120, 1, 0.5), utils::rgb2hsl(maGreen));
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("blue", BColor(240, 1, 0.5), utils::rgb2hsl(maBlue));
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("yellow", BColor(60, 1, 0.5), utils::rgb2hsl(maYellow));
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("magenta", BColor(300, 1, 0.5), utils::rgb2hsl(maMagenta));
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("cyan", BColor(180, 1, 0.5), utils::rgb2hsl(maCyan));
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("third hue case", BColor(210, 1, 0.5),
+ utils::rgb2hsl(BColor(0, 0.5, 1)));
+
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("roundtrip white", maWhite,
+ utils::hsl2rgb(utils::rgb2hsl(maWhite)));
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("roundtrip black", maBlack,
+ utils::hsl2rgb(utils::rgb2hsl(maBlack)));
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("roundtrip red", maRed, utils::hsl2rgb(utils::rgb2hsl(maRed)));
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("roundtrip green", maGreen,
+ utils::hsl2rgb(utils::rgb2hsl(maGreen)));
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("roundtrip blue", maBlue,
+ utils::hsl2rgb(utils::rgb2hsl(maBlue)));
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("roundtrip yellow", maYellow,
+ utils::hsl2rgb(utils::rgb2hsl(maYellow)));
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("roundtrip magenta", maMagenta,
+ utils::hsl2rgb(utils::rgb2hsl(maMagenta)));
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("roundtrip cyan", maCyan,
+ utils::hsl2rgb(utils::rgb2hsl(maCyan)));
+
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("grey10", BColor(0, 0, .1), utils::rgb2hsl(maWhite * .1));
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("grey90", BColor(0, 0, .9), utils::rgb2hsl(maWhite * .9));
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("red/2", BColor(0, 1, 0.25), utils::rgb2hsl(maRed * .5));
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("green/2", BColor(120, 1, 0.25), utils::rgb2hsl(maGreen * .5));
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("blue/2", BColor(240, 1, 0.25), utils::rgb2hsl(maBlue * .5));
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("yellow/2", BColor(60, 1, 0.25),
+ utils::rgb2hsl(maYellow * .5));
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("magenta/2", BColor(300, 1, 0.25),
+ utils::rgb2hsl(maMagenta * .5));
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("cyan/2", BColor(180, 1, 0.25), utils::rgb2hsl(maCyan * .5));
+
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("pastel", BColor(0, .5, .5),
+ utils::rgb2hsl(BColor(.75, .25, .25)));
+ }
+
+ // insert your test code here.
+ void hsvTest()
+ {
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("white", BColor(0, 0, 1), utils::rgb2hsv(maWhite));
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("black", BColor(0, 0, 0), utils::rgb2hsv(maBlack));
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("red", BColor(0, 1, 1), utils::rgb2hsv(maRed));
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("green", BColor(120, 1, 1), utils::rgb2hsv(maGreen));
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("blue", BColor(240, 1, 1), utils::rgb2hsv(maBlue));
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("yellow", BColor(60, 1, 1), utils::rgb2hsv(maYellow));
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("magenta", BColor(300, 1, 1), utils::rgb2hsv(maMagenta));
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("cyan", BColor(180, 1, 1), utils::rgb2hsv(maCyan));
+
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("roundtrip white", maWhite,
+ utils::hsv2rgb(utils::rgb2hsv(maWhite)));
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("roundtrip black", maBlack,
+ utils::hsv2rgb(utils::rgb2hsv(maBlack)));
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("roundtrip red", maRed, utils::hsv2rgb(utils::rgb2hsv(maRed)));
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("roundtrip green", maGreen,
+ utils::hsv2rgb(utils::rgb2hsv(maGreen)));
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("roundtrip blue", maBlue,
+ utils::hsv2rgb(utils::rgb2hsv(maBlue)));
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("roundtrip yellow", maYellow,
+ utils::hsv2rgb(utils::rgb2hsv(maYellow)));
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("roundtrip magenta", maMagenta,
+ utils::hsv2rgb(utils::rgb2hsv(maMagenta)));
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("roundtrip cyan", maCyan,
+ utils::hsv2rgb(utils::rgb2hsv(maCyan)));
+
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("grey10", BColor(0, 0, .1), utils::rgb2hsv(maWhite * .1));
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("grey90", BColor(0, 0, .9), utils::rgb2hsv(maWhite * .9));
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("red/2", BColor(0, 1, 0.5), utils::rgb2hsv(maRed * .5));
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("green/2", BColor(120, 1, 0.5), utils::rgb2hsv(maGreen * .5));
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("blue/2", BColor(240, 1, 0.5), utils::rgb2hsv(maBlue * .5));
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("yellow/2", BColor(60, 1, 0.5), utils::rgb2hsv(maYellow * .5));
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("magenta/2", BColor(300, 1, 0.5),
+ utils::rgb2hsv(maMagenta * .5));
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("cyan/2", BColor(180, 1, 0.5), utils::rgb2hsv(maCyan * .5));
+
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("pastel", BColor(0, .5, .5),
+ utils::rgb2hsv(BColor(.5, .25, .25)));
+ }
+
+ CPPUNIT_TEST_SUITE(bcolor);
+ CPPUNIT_TEST(hslTest);
+ CPPUNIT_TEST(hsvTest);
+ CPPUNIT_TEST_SUITE_END();
+};
+
+} // namespace basegfx
+
+CPPUNIT_TEST_SUITE_REGISTRATION(basegfx::bcolor);
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */