Boost logo

Boost-Commit :

From: chintanraoh_at_[hidden]
Date: 2008-06-16 14:15:06


Author: chintanraoh
Date: 2008-06-16 14:15:06 EDT (Mon, 16 Jun 2008)
New Revision: 46435
URL: http://svn.boost.org/trac/boost/changeset/46435

Log:
test for erase() and iterator
Text files modified:
   sandbox/SOC/2008/digital_searching/dsearch/libs/dsearch/test/test_pat_trie.cpp | 190 +++++++++++++++++++++++++++++++++------
   1 files changed, 161 insertions(+), 29 deletions(-)

Modified: sandbox/SOC/2008/digital_searching/dsearch/libs/dsearch/test/test_pat_trie.cpp
==============================================================================
--- sandbox/SOC/2008/digital_searching/dsearch/libs/dsearch/test/test_pat_trie.cpp (original)
+++ sandbox/SOC/2008/digital_searching/dsearch/libs/dsearch/test/test_pat_trie.cpp 2008-06-16 14:15:06 EDT (Mon, 16 Jun 2008)
@@ -52,62 +52,189 @@
 void insert_test_2()
 {
         T pat;
-
- pat.insert(std::make_pair("",-1));
- pat.insert(std::make_pair("",-1));
+ typename T::iterator it;
 
         pat.insert(std::make_pair("bad",1));
         pat.insert(std::make_pair("bad",2));
 
- pat.insert(std::make_pair("h",3));
- pat.insert(std::make_pair("h",4));
-
- pat.insert(std::make_pair("hello",5));
- pat.insert(std::make_pair("hello",6));
+ pat.insert(std::make_pair("",3));
+ pat.insert(std::make_pair("",4));
 
+ pat.insert(std::make_pair("h",5));
+ pat.insert(std::make_pair("h",6));
 
- pat.insert(std::make_pair("hell",6));
- pat.insert(std::make_pair("hell",6));
+ pat.insert(std::make_pair("hello",7));
+ pat.insert(std::make_pair("hello",8));
 
- pat.insert(std::make_pair("wicked",7));
- pat.insert(std::make_pair("wicked",8));
 
- pat.insert(std::make_pair("we",9));
- pat.insert(std::make_pair("we",10));
+ pat.insert(std::make_pair("hell",9));
+ pat.insert(std::make_pair("hell",10));
 
         pat.insert(std::make_pair("wicked",11));
         pat.insert(std::make_pair("wicked",12));
 
+ pat.insert(std::make_pair("we",13));
+ pat.insert(std::make_pair("we",14));
+
+
         BOOST_CHECK( pat.find("") );
         BOOST_CHECK( pat.find("bad") );
         BOOST_CHECK( pat.find("hello") );
         BOOST_CHECK( pat.find("h") );
         BOOST_CHECK( pat.find("wicked") );
         BOOST_CHECK( pat.find("we") );
+ // 4<<h 6<< hell 10<< hello 8<< bad 2<< wicked 12<< we 14
+
+
+ const char * key[]={ "","h","hell","hello","bad","wicked","we"};
+ int data[]= { 4, 6, 10, 8, 2, 12, 14 };
+
+ it=pat.begin();
+ int pos=0;
+ for(it=pat.begin();it!=pat.end();++it)
+ {
+ BOOST_CHECK ( (*it).first.compare( std::string((char *)key[pos]) ) == 0 );
+ BOOST_CHECK ( (*it).second == data[pos] );
+ //std::cout<<(*it).first<<"==="<<(*it).second<<std::endl;
+ ++pos;
+ }
+}
+
+template<class T>
+void erase_test()
+{
+ std::cout<<"In erase"<<std::endl;
+ T pat;
+ pat[""]=1;
+ pat.erase("");
+ BOOST_CHECK( pat.empty() );
+
+ pat[""]=2;
+ pat["a"]=3;
+ BOOST_CHECK( pat.find("") );
+ BOOST_CHECK( pat.find("a") );
+
+ pat.erase("a");
+ BOOST_CHECK( !pat.find("a") );
+ BOOST_CHECK( pat.find("") );
+
+ pat["c"]=4;
+ BOOST_CHECK( pat.find("c") );
+
+ pat["cool"]=5;
+ BOOST_CHECK( pat.find("cool") );
+ BOOST_CHECK( pat.find("c") );
+
+ pat.erase("cool");
+ BOOST_CHECK( !pat.find("cool") );
+ BOOST_CHECK( pat.find("c") );
+ BOOST_CHECK( pat.find("") );
+
+ pat["cool"]=6;
+ pat["chess"]=7;
+ pat["cheese"]=8;
+
+ BOOST_CHECK( pat.find("c") );
+ BOOST_CHECK( pat.find("chess") );
+ BOOST_CHECK( pat.find("cheese") );
+ BOOST_CHECK( pat.find("") );
 
+ pat.erase("chess");
+ BOOST_CHECK( pat.find("c") );
+ BOOST_CHECK( pat.find("cool") );
+ BOOST_CHECK( pat.find("cheese") );
+ BOOST_CHECK( pat.find("") );
+
+ pat.erase("cool");
+ BOOST_CHECK( pat.find("c") );
+ BOOST_CHECK( pat.find("cheese") );
+ BOOST_CHECK( pat.find("") );
+
+ pat.erase("c");
+ BOOST_CHECK( pat.find("") );
+ BOOST_CHECK( pat.find("cheese") );
+
+ pat.erase("");
+ BOOST_CHECK( pat.find("cheese") );
+
+ pat.erase("cheese");
+ BOOST_CHECK( pat.empty() );
+
+
+ pat["weather"]=10;
+ pat["wheat"]=11;
+ pat["wheats"]=12;
+ pat["what"]=13;
+ BOOST_CHECK( pat.find("weather") );
+ BOOST_CHECK( pat.find("wheat") );
+ BOOST_CHECK( pat.find("wheats") );
+ BOOST_CHECK( pat.find("what") );
+
+ pat.erase("wheats");
+ BOOST_CHECK( pat.find("weather") );
+ BOOST_CHECK( pat.find("wheat") );
+ BOOST_CHECK( pat.find("what") );
+
+
+ pat.erase("wheat");
+ BOOST_CHECK( pat.find("weather") );
+ BOOST_CHECK( pat.find("what") );
+
+
+ pat.erase("what");
+ BOOST_CHECK( pat.find("weather") );
+
+ BOOST_CHECK(!pat.empty());
+ pat.erase("weather");
+ BOOST_CHECK(pat.empty());
+
+ pat["wheat"]=10;
+ pat["weather"]=20;
+ pat.erase("wheat");
+ pat.erase("weather");
+ BOOST_CHECK(pat.empty());
+ pat["a"]=20;
+ pat[""]=10;
+ pat["b"]=30;
+ pat.erase("");
+ pat.erase("a");
+ pat.erase("b");
+ BOOST_CHECK(pat.empty());
+}
+
+template<class T>
+void iterator_test()
+{
+ T pat;
+ std::cout<<"here"<<std::endl;
+ assert(pat.begin()==pat.end());
+
+ return;
 }
 
 template<class T>
 void insert_test_3(char *file)
 {
         T pat;
- //try{
+ try{
                 std::ifstream fin(file);
- char str[1000];
+ std::string str;
                 int value=0;
                 while(!fin.eof())
                 {
- fin.getline(str,999);
- pat.insert(std::make_pair( (const char *)str, value ) );
+ getline(fin,str,'\n');
+ pat[str]=value;
+ //pat.insert(std::make_pair( str, value ) );
                         //value++;
                 }
                 fin.close();
- /*}
+ }
         catch(std::ifstream::failure e){
                 std::cout<<"exception opening/reading file "<<file<<std::endl;
- }*/
+ }
 
-/*std::cerr<<"finished inserting"<<std::endl;
+#ifndef NOTEST
+std::cerr<<"finished inserting"<<std::endl;
         try{
                 std::ifstream fin(file);
                 char str[1000];
@@ -115,24 +242,29 @@
                 while(!fin.eof())
                 {
                         fin.getline(str,999);
- pat.insert(std::make_pair( (const char *)str, value ) );
+ //std::cout<<str<<std::endl;
+ //pat.insert(std::make_pair( (const char *)str, value ) );
                         BOOST_CHECK( pat.find( (const char *)str ) ) ;
- //value++;
+ value++;
                 }
                 fin.close();
         }
         catch(std::ifstream::failure e){
                 std::cout<<"exception opening/reading file "<<file<<std::endl;
- }*/
-
+ }
+#endif
 }
 
-int test_main(int c,char **argv)
+int test_main(int argc,char **argv)
 {
         typedef patricia< std::string, int, pat_key_traits> pat_type;
-// insert_test_1<pat_type>();
-// insert_test_2<pat_type>();
- insert_test_3<pat_type>(argv[1]);
+#ifndef NOTEST
+ insert_test_1<pat_type>();
+ insert_test_2<pat_type>();
+ erase_test<pat_type>();
+#endif
+ if ( argc > 1 )
+ insert_test_3<pat_type>(argv[1]);
         return 0;
 }
 


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk