Main   Namespaces   Classes   Hierarchy   Annotated   Files   Compound   Global   Pages  

VCSetTest.cpp

Go to the documentation of this file.
00001 //---------------------------------------------------------------------------
00002 /** @file VCSetTest.cpp
00003  */
00004 //---------------------------------------------------------------------------
00005 
00006 #include <boost/test/auto_unit_test.hpp>
00007 
00008 #include "BitsetIterator.hpp"
00009 #include "VCBuilder.hpp"
00010 #include "VCSet.hpp"
00011 #include "ChangeLog.hpp"
00012 
00013 using namespace benzene;
00014 
00015 //---------------------------------------------------------------------------
00016 
00017 namespace {
00018 
00019 BOOST_AUTO_TEST_CASE(VCSet_CheckCopy)
00020 {
00021     StoneBoard bd(11, 11);
00022     VCSet con1(bd.Const(), BLACK);
00023     con1.Add(VC(NORTH, SOUTH), 0);
00024     VCSet con2(con1);
00025     BOOST_CHECK(con1 == con2);
00026 
00027     con1.Add(VC(NORTH, HEX_CELL_A1), 0);
00028     BOOST_CHECK(con1 != con2);
00029 
00030     con2 = con1;
00031     BOOST_CHECK(con1 == con2);
00032 
00033     con1.Add(VC(NORTH, HEX_CELL_C1), 0);
00034     BOOST_CHECK(con1 != con2);
00035 }
00036 
00037 /** @todo Make this test quicker! */
00038 BOOST_AUTO_TEST_CASE(VCSet_CheckRevert)
00039 {
00040     StoneBoard bd(11, 11);
00041     bd.PlayMove(BLACK, HEX_CELL_A9);
00042     bd.PlayMove(WHITE, HEX_CELL_F5);
00043     bd.PlayMove(BLACK, HEX_CELL_I4);
00044     bd.PlayMove(WHITE, HEX_CELL_H6);
00045     Groups groups;
00046     GroupBuilder::Build(bd, groups);
00047     PatternState patterns(bd);
00048     patterns.Update();
00049 
00050     ChangeLog<VC> cl;
00051     VCSet con1(bd.Const(), BLACK);
00052     con1.SetSoftLimit(VC::FULL, 10);
00053     con1.SetSoftLimit(VC::SEMI, 25);
00054     VCSet con2(con1);
00055 
00056     VCBuilderParam param;
00057     param.max_ors = 4;
00058     param.and_over_edge = true;
00059     param.use_greedy_union = true;
00060     
00061     VCBuilder builder(param);
00062     builder.Build(con1, groups, patterns);
00063     builder.Build(con2, groups, patterns);
00064     BOOST_CHECK(con1 == con2);
00065 
00066 #if 0
00067     for (BitsetIterator p(bd.getEmpty()); p; ++p) {
00068         bitset_t added[BLACK_AND_WHITE];
00069         added[BLACK].set(*p);
00070         bd.absorb();
00071         bd.PlayMove(BLACK, *p);
00072         bd.absorb(*p);
00073 
00074         builder.Build(con2, bd, added, &cl);
00075         
00076         //std::cout << cl.dump() << std::endl;
00077 
00078         con2.Revert(cl);
00079         bd.undoMove(*p);
00080 
00081         BOOST_CHECK(cl.empty());
00082         BOOST_CHECK(VCSetUtil::EqualOnGroups(con1, con2, bd));
00083     }
00084 #endif
00085 }
00086 
00087 }
00088 
00089 //---------------------------------------------------------------------------


6 Jan 2011 Doxygen 1.6.3