00001 //--------------------------------------------------------------------------- 00002 /** @file HashMapTest.cpp 00003 */ 00004 //--------------------------------------------------------------------------- 00005 00006 #include <boost/test/auto_unit_test.hpp> 00007 00008 #include "HashMap.hpp" 00009 00010 using namespace benzene; 00011 00012 //--------------------------------------------------------------------------- 00013 00014 namespace { 00015 00016 BOOST_AUTO_TEST_CASE(HashMap_AllTests) 00017 { 00018 int data = 0; 00019 HashMap<int> hm(5); 00020 00021 // check size() 00022 BOOST_CHECK_EQUAL(hm.size(), 32u); 00023 BOOST_CHECK_EQUAL(hm.count(), 0u); 00024 00025 // table is empty, so get better fail! 00026 BOOST_CHECK(!hm.get(1, data)); 00027 00028 // check put()/get() 00029 hm.put(1, 5); 00030 BOOST_CHECK(hm.get(1, data)); 00031 BOOST_CHECK_EQUAL(data, 5); 00032 BOOST_CHECK(!hm.get(2, data)); 00033 BOOST_CHECK_EQUAL(hm.count(), 1u); 00034 00035 // check collision will not clobber values (33 = 1 mod 32) 00036 hm.put(33, 11); 00037 BOOST_CHECK(hm.get(1, data)); 00038 BOOST_CHECK_EQUAL(data, 5); 00039 BOOST_CHECK(hm.get(33, data)); 00040 BOOST_CHECK_EQUAL(data, 11); 00041 BOOST_CHECK_EQUAL(hm.count(), 2u); 00042 00043 HashMap<int> mm(5); 00044 mm = hm; 00045 BOOST_CHECK(mm.get(1, data)); 00046 BOOST_CHECK_EQUAL(data, 5); 00047 BOOST_CHECK(mm.get(33, data)); 00048 BOOST_CHECK_EQUAL(data, 11); 00049 BOOST_CHECK_EQUAL(mm.count(), 2u); 00050 00051 HashMap<int> blah(mm); 00052 BOOST_CHECK(blah.get(1, data)); 00053 BOOST_CHECK_EQUAL(data, 5); 00054 BOOST_CHECK(blah.get(33, data)); 00055 BOOST_CHECK_EQUAL(data, 11); 00056 BOOST_CHECK_EQUAL(blah.count(), 2u); 00057 00058 } 00059 00060 } 00061 00062 //---------------------------------------------------------------------------