1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
/* This file is part of the Spring engine (GPL v2 or later), see LICENSE.html */
#include "System/Misc/BitwiseEnum.h"
#include <stdlib.h>
#define BOOST_TEST_MODULE BitwiseEnum
#include <boost/test/unit_test.hpp>
using namespace Bitwise;
namespace Colors { enum Colors {red, green, blue}; };
enum Vehicles {car, bus, train};
typedef BitwiseEnum<Colors::Colors> Color;
bool foo(Color c) { return true; }
// NOTE: these are compile time tests
#ifndef FAIL
BOOST_AUTO_TEST_CASE( ShouldCompile )
{
Color c = Colors::red | Colors::green;
BOOST_CHECK(foo(c));
BOOST_CHECK(foo(Colors::red));
BOOST_CHECK(foo(Colors::red | Colors::green));
// test overloaded global operator| (see http://code.google.com/p/mili/issues/detail?id=40)
int x = Colors::red | Colors::green;
// test operator=
Color c2 = Colors::blue;
c = c2;
c = Colors::green;
}
#endif
#ifdef FAIL
BOOST_AUTO_TEST_CASE( MustNotCompile )
{
#ifdef TEST1
BOOST_CHECK(foo(Vehicles::car));
#endif
#ifdef TEST2
BOOST_CHECK(foo(1));
#endif
#ifdef TEST3
Color c = Colors::blue;
c = 1;
#endif
}
#endif
|