ChangeLogTest.cpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006 #include <boost/test/auto_unit_test.hpp>
00007
00008 #include "ChangeLog.hpp"
00009
00010 using namespace benzene;
00011
00012
00013
00014 namespace {
00015
00016 BOOST_AUTO_TEST_CASE(ChangeLog_InitialState)
00017 {
00018 ChangeLog<float> cl;
00019 BOOST_CHECK(cl.empty());
00020 BOOST_CHECK_EQUAL(cl.size(), 0);
00021 }
00022
00023 BOOST_AUTO_TEST_CASE(ChangeLog_PushPopTopAndClear)
00024 {
00025 ChangeLog<float> cl;
00026 cl.push(ChangeLog<float>::ADD, 0.1f);
00027 cl.push(ChangeLog<float>::REMOVE, 0.2f);
00028 cl.push(ChangeLog<float>::REMOVE, 0.3f);
00029 cl.push(ChangeLog<float>::MARKER, 0.4f);
00030 BOOST_CHECK(!cl.empty());
00031 BOOST_CHECK_EQUAL(cl.size(), 4);
00032
00033 BOOST_CHECK_EQUAL(cl.topAction(), ChangeLog<float>::MARKER);
00034 BOOST_CHECK_EQUAL(cl.topData(), 0.4f);
00035 BOOST_CHECK(!cl.empty());
00036 BOOST_CHECK_EQUAL(cl.size(), 4);
00037
00038 cl.clear();
00039 cl.push(ChangeLog<float>::MARKER, 1.0f);
00040 cl.push(ChangeLog<float>::ADD, 1.1f);
00041 BOOST_CHECK_EQUAL(cl.topAction(), ChangeLog<float>::ADD);
00042 BOOST_CHECK_EQUAL(cl.topData(), 1.1f);
00043 cl.push(ChangeLog<float>::REMOVE, 1.2f);
00044 BOOST_CHECK(!cl.empty());
00045 BOOST_CHECK_EQUAL(cl.size(), 3);
00046 cl.pop();
00047 cl.pop();
00048 BOOST_CHECK(!cl.empty());
00049 BOOST_CHECK_EQUAL(cl.size(), 1);
00050 BOOST_CHECK_EQUAL(cl.topAction(), ChangeLog<float>::MARKER);
00051 BOOST_CHECK_EQUAL(cl.topData(), 1.0f);
00052 cl.pop();
00053 BOOST_CHECK_EQUAL(cl.size(), 0);
00054
00055 BOOST_CHECK(cl.empty());
00056 cl.clear();
00057 BOOST_CHECK(cl.empty());
00058 }
00059
00060 BOOST_AUTO_TEST_CASE(ChangeLog_Dump)
00061 {
00062 ChangeLog<float> cl;
00063 BOOST_CHECK_EQUAL(cl.dump(), "");
00064 cl.push(ChangeLog<float>::ADD, 2.0f);
00065 cl.push(ChangeLog<float>::MARKER, 2.1f);
00066 cl.push(ChangeLog<float>::REMOVE, 2.2f);
00067 std::ostringstream s;
00068 s << "0: ADD: 2" << std::endl
00069 << "1: MARKER" << std::endl
00070 << "2: REMOVE: 2.2" << std::endl;
00071 BOOST_CHECK_EQUAL(cl.dump(), s.str());
00072 }
00073
00074 }
00075
00076