Main   Namespaces   Classes   Hierarchy   Annotated   Files   Compound   Global   Pages  

ChangeLogTest.cpp

Go to the documentation of this file.
00001 //----------------------------------------------------------------------------
00002 /** @file
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     // testing topAction and topData
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     // check clear on empty changelog, ensure does not affect activation
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 //---------------------------------------------------------------------------


6 Jan 2011 Doxygen 1.6.3