view tests/libclient/color/main.cpp @ 187:eaa7f85bfc22

Tests: use BOOST_TEST, closes #917 @1h
author David Demelier <markand@malikania.fr>
date Sat, 20 Oct 2018 21:58:32 +0200
parents 3107ce017c3a
children
line wrap: on
line source

/*
 * main.cpp -- test mlk::client::color
 *
 * Copyright (c) 2013-2018 David Demelier <markand@malikania.fr>
 *
 * Permission to use, copy, modify, and/or distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 */

#define BOOST_TEST_MODULE "Color"
#include <boost/test/unit_test.hpp>

#include <malikania/client/color.hpp>

namespace mlk::client {

namespace {

/*
 * Separate arguments.
 * ------------------------------------------------------------------
 */

BOOST_AUTO_TEST_SUITE(basic)

BOOST_AUTO_TEST_CASE(black)
{
	color c;

	BOOST_TEST(c.red == 0);
	BOOST_TEST(c.green == 0);
	BOOST_TEST(c.blue == 0);
	BOOST_TEST(c.alpha == 255);
}

BOOST_AUTO_TEST_CASE(white)
{
	color c{255, 255, 255, 255};

	BOOST_TEST(c.red == 255);
	BOOST_TEST(c.green == 255);
	BOOST_TEST(c.blue == 255);
	BOOST_TEST(c.alpha == 255);
}

BOOST_AUTO_TEST_CASE(red)
{
	color c{255, 0, 0, 255};

	BOOST_TEST(c.red == 255);
	BOOST_TEST(c.green == 0);
	BOOST_TEST(c.blue == 0);
	BOOST_TEST(c.alpha == 255);
}

BOOST_AUTO_TEST_CASE(green)
{
	color c{0, 255, 0, 255};

	BOOST_TEST(c.red == 0);
	BOOST_TEST(c.green == 255);
	BOOST_TEST(c.blue == 0);
	BOOST_TEST(c.alpha == 255);
}

BOOST_AUTO_TEST_CASE(blue)
{
	color c{0, 0, 255, 255};

	BOOST_TEST(c.red == 0);
	BOOST_TEST(c.green == 0);
	BOOST_TEST(c.blue == 255);
	BOOST_TEST(c.alpha == 255);
}

BOOST_AUTO_TEST_SUITE_END()

/*
 * Hexadecimal.
 * ------------------------------------------------------------------
 */

BOOST_AUTO_TEST_SUITE(hex)

BOOST_AUTO_TEST_CASE(black)
{
	const auto c = color::from_hex(0xff000000);

	BOOST_TEST(c.red == 0);
	BOOST_TEST(c.green == 0);
	BOOST_TEST(c.blue == 0);
	BOOST_TEST(c.alpha == 255);
}

BOOST_AUTO_TEST_CASE(white)
{
	const auto c = color::from_hex(0xffffffff);

	BOOST_TEST(c.red == 255);
	BOOST_TEST(c.green == 255);
	BOOST_TEST(c.blue == 255);
	BOOST_TEST(c.alpha == 255);
}

BOOST_AUTO_TEST_CASE(red)
{
	const auto c = color::from_hex(0xffff0000);

	BOOST_TEST(c.red == 255);
	BOOST_TEST(c.green == 0);
	BOOST_TEST(c.blue == 0);
	BOOST_TEST(c.alpha == 255);
}

BOOST_AUTO_TEST_CASE(green)
{
	const auto c = color::from_hex(0xff00ff00);

	BOOST_TEST(c.red == 0);
	BOOST_TEST(c.green == 255);
	BOOST_TEST(c.blue == 0);
	BOOST_TEST(c.alpha == 255);
}

BOOST_AUTO_TEST_CASE(blue)
{
	const auto c = color::from_hex(0xff0000ff);

	BOOST_TEST(c.red == 0);
	BOOST_TEST(c.green == 0);
	BOOST_TEST(c.blue == 255);
	BOOST_TEST(c.alpha == 255);
}

BOOST_AUTO_TEST_SUITE_END()

/*
 * Names.
 * ------------------------------------------------------------------
 *
 * Test most famous.
 */

BOOST_AUTO_TEST_SUITE(named)

BOOST_AUTO_TEST_CASE(black)
{
	const auto c = color::from_name("black");

	BOOST_TEST(c.red == 0);
	BOOST_TEST(c.green == 0);
	BOOST_TEST(c.blue == 0);
	BOOST_TEST(c.alpha == 255);
}

BOOST_AUTO_TEST_CASE(white)
{
	const auto c = color::from_name("white");

	BOOST_TEST(c.red == 255);
	BOOST_TEST(c.green == 255);
	BOOST_TEST(c.blue == 255);
	BOOST_TEST(c.alpha == 255);
}

BOOST_AUTO_TEST_CASE(red)
{
	const auto c = color::from_name("red");

	BOOST_TEST(c.red == 255);
	BOOST_TEST(c.green == 0);
	BOOST_TEST(c.blue == 0);
	BOOST_TEST(c.alpha == 255);
}

BOOST_AUTO_TEST_CASE(green)
{
	const auto c = color::from_name("green");

	BOOST_TEST(c.red == 0);
	BOOST_TEST(c.green == 128);
	BOOST_TEST(c.blue == 0);
	BOOST_TEST(c.alpha == 255);
}

BOOST_AUTO_TEST_CASE(blue)
{
	const auto c = color::from_name("blue");

	BOOST_TEST(c.red == 0);
	BOOST_TEST(c.green == 0);
	BOOST_TEST(c.blue == 255);
	BOOST_TEST(c.alpha == 255);
}

BOOST_AUTO_TEST_CASE(wrong)
{
	BOOST_REQUIRE_THROW(color::from_name("does not exist"), std::exception);
}

BOOST_AUTO_TEST_SUITE_END()

/*
 * #rrggbb.
 * ------------------------------------------------------------------
 *
 * Test most famous.
 */

BOOST_AUTO_TEST_SUITE(long_rgb)

BOOST_AUTO_TEST_CASE(black)
{
	const auto c = color::from_name("#000000");

	BOOST_TEST(c.red == 0);
	BOOST_TEST(c.green == 0);
	BOOST_TEST(c.blue == 0);
	BOOST_TEST(c.alpha == 255);
}

BOOST_AUTO_TEST_CASE(white)
{
	const auto c = color::from_name("#ffffff");

	BOOST_TEST(c.red == 255);
	BOOST_TEST(c.green == 255);
	BOOST_TEST(c.blue == 255);
	BOOST_TEST(c.alpha == 255);
}

BOOST_AUTO_TEST_CASE(red)
{
	const auto c = color::from_name("#ff0000");

	BOOST_TEST(c.red == 255);
	BOOST_TEST(c.green == 0);
	BOOST_TEST(c.blue == 0);
	BOOST_TEST(c.alpha == 255);
}

BOOST_AUTO_TEST_CASE(green)
{
	const auto c = color::from_name("#00ff00");

	BOOST_TEST(c.red == 0);
	BOOST_TEST(c.green == 255);
	BOOST_TEST(c.blue == 0);
	BOOST_TEST(c.alpha == 255);
}

BOOST_AUTO_TEST_CASE(blue)
{
	const auto c = color::from_name("#0000ff");

	BOOST_TEST(c.red == 0);
	BOOST_TEST(c.green == 0);
	BOOST_TEST(c.blue == 255);
	BOOST_TEST(c.alpha == 255);
}

BOOST_AUTO_TEST_CASE(wrong)
{
	BOOST_REQUIRE_THROW(color::from_name("#ghijkl"), std::exception);
}

BOOST_AUTO_TEST_SUITE_END()

/*
 * #rgb.
 * ------------------------------------------------------------------
 *
 * Test most famous.
 */

BOOST_AUTO_TEST_SUITE(short_rgb)

BOOST_AUTO_TEST_CASE(black)
{
	const auto c = color::from_name("#000");

	BOOST_TEST(c.red == 0);
	BOOST_TEST(c.green == 0);
	BOOST_TEST(c.blue == 0);
	BOOST_TEST(c.alpha == 255);
}

BOOST_AUTO_TEST_CASE(white)
{
	const auto c = color::from_name("#fff");

	BOOST_TEST(c.red == 255);
	BOOST_TEST(c.green == 255);
	BOOST_TEST(c.blue == 255);
	BOOST_TEST(c.alpha == 255);
}

BOOST_AUTO_TEST_CASE(red)
{
	const auto c = color::from_name("#f00");

	BOOST_TEST(c.red == 255);
	BOOST_TEST(c.green == 0);
	BOOST_TEST(c.blue == 0);
	BOOST_TEST(c.alpha == 255);
}

BOOST_AUTO_TEST_CASE(green)
{
	const auto c = color::from_name("#0f0");

	BOOST_TEST(c.red == 0);
	BOOST_TEST(c.green == 255);
	BOOST_TEST(c.blue == 0);
	BOOST_TEST(c.alpha == 255);
}

BOOST_AUTO_TEST_CASE(blue)
{
	const auto c = color::from_name("#00f");

	BOOST_TEST(c.red == 0);
	BOOST_TEST(c.green == 0);
	BOOST_TEST(c.blue == 255);
	BOOST_TEST(c.alpha == 255);
}

BOOST_AUTO_TEST_CASE(combination)
{
	const auto c = color::from_name("#123");

	BOOST_TEST(c.red == 17);
	BOOST_TEST(c.green == 34);
	BOOST_TEST(c.blue == 51);
	BOOST_TEST(c.alpha == 255);
}

BOOST_AUTO_TEST_CASE(wrong)
{
	BOOST_REQUIRE_THROW(color::from_name("#ghi"), std::exception);
}

BOOST_AUTO_TEST_SUITE_END()

} // !namespace

} // !mlk::client