#include #include #include #include "SpellDescription/RichEnum.h" #include DECLARE_RICH_ENUM(Range, (Self)(Touch)(Range10Feet)(Range50Feet)(Range100Feet)); BOOST_AUTO_UNIT_TEST( testRichEnum) { Range listAll = Range::begin(); do { std::cout << listAll++ << std::endl; } while(listAll != Range::end()); Range r = Range::Touch; BOOST_CHECK_EQUAL(r, Range::Touch); r = Range::begin(); BOOST_CHECK_EQUAL(r, Range::Self); BOOST_CHECK_EQUAL(++r, Range::Touch); BOOST_CHECK_EQUAL(r++, Range::Touch); BOOST_CHECK_EQUAL(++r, Range::Range50Feet); BOOST_CHECK_EQUAL(++r, Range::Range100Feet); BOOST_CHECK_EQUAL(++r, Range::end()); BOOST_CHECK_EQUAL(++r, Range::end()); BOOST_CHECK_EQUAL(--r, Range::Range100Feet); BOOST_CHECK_EQUAL(--r, Range::Range50Feet); BOOST_CHECK_EQUAL(--r, Range::Range10Feet); BOOST_CHECK_EQUAL(r--, Range::Range10Feet); BOOST_CHECK_EQUAL(--r, Range::Self); BOOST_CHECK_EQUAL(--r, Range::Self); r = Range::Touch; BOOST_CHECK_EQUAL(boost::lexical_cast(r), "Touch"); }