string_joiner.test.cc

Go to the documentation of this file.
00001 /*
00002    The lestes compiler suite
00003    Copyright (C) 2002, 2003, 2004, 2005 Miroslav Tichy
00004    Copyright (C) 2002, 2003, 2004, 2005 Petr Zika
00005    Copyright (C) 2002, 2003, 2004, 2005 Vojtech Hala
00006    Copyright (C) 2002, 2003, 2004, 2005 Jiri Kosina
00007    Copyright (C) 2002, 2003, 2004, 2005 Pavel Sanda
00008    Copyright (C) 2002, 2003, 2004, 2005 Jan Zouhar
00009    Copyright (C) 2002, 2003, 2004, 2005 Rudolf Thomas
00010 
00011    This program is free software; you can redistribute it and/or modify
00012    it under the terms of the GNU General Public License as published by
00013    the Free Software Foundation; version 2 of the License.
00014 
00015    This program is distributed in the hope that it will be useful,
00016    but WITHOUT ANY WARRANTY; without even the implied warranty of
00017    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00018    GNU General Public License for more details.
00019 
00020    See the full text of the GNU General Public License version 2, and
00021    the limitations in the file doc/LICENSE.
00022 
00023    By accepting the license the licensee waives any and all claims
00024    against the copyright holder(s) related in whole or in part to the
00025    work, its use, and/or the inability to use it.
00026  
00027  */
00028 /*! \file
00029   \brief Unit test.
00030   
00031   Unit test for class string_joiner.
00032   \author pt
00033 */
00034 #include <lestes/common.hh>
00035 #include <lestes/std/file_info.hh>
00036 #include <lestes/std/source_location.hh>
00037 #include <lestes/lang/cplus/lex/string_joiner.hh>
00038 #include <lestes/lang/cplus/lex/pp_token.hh>
00039 #include <lestes/lang/cplus/lex/token_value.hh>
00040 #include <lestes/lang/cplus/lex/token_sequence.hh>
00041 
00042 package(lestes);
00043 package(lang);
00044 package(cplus);
00045 package(lex);
00046 
00047 using namespace ::std;
00048 
00049 /*!
00050   \brief Tests string_joiner class.
00051 
00052   Performs testing of string_joiner class.
00053 */
00054 void string_joiner_test(void)
00055 {
00056         ptr<token_sequence> ts = token_sequence::create();
00057         ptr<file_info> fi = file_info::create("abc",NULL);
00058         ptr<source_location> loc = source_location::create(fi,1,1);
00059         ptr<pp_token> sep = pp_token::create(loc,pp_token::TOK_EQ);
00060 
00061         ts->add_back(sep);
00062         ts->add_back(pp_token::create(loc,pp_token::TOK_STRING_LIT,token_value::create("aaa")));
00063         
00064         ts->add_back(sep);
00065         ts->add_back(pp_token::create(loc,pp_token::TOK_WSTRING_LIT,token_value::create("bbb")));
00066 
00067         ts->add_back(sep);
00068         ts->add_back(pp_token::create(loc,pp_token::TOK_STRING_LIT,token_value::create("ccc")));
00069         ts->add_back(pp_token::create(loc,pp_token::TOK_STRING_LIT,token_value::create("ddd")));
00070         
00071         ts->add_back(sep);
00072         ts->add_back(pp_token::create(loc,pp_token::TOK_WSTRING_LIT,token_value::create("eee")));
00073         ts->add_back(pp_token::create(loc,pp_token::TOK_WSTRING_LIT,token_value::create("fff")));
00074   
00075         ts->add_back(sep);
00076         ts->add_back(pp_token::create(loc,pp_token::TOK_STRING_LIT,token_value::create("xxx")));
00077         ts->add_back(pp_token::create(loc,pp_token::TOK_WSTRING_LIT,token_value::create("yyy")));
00078         
00079         ts->add_back(sep);
00080         ts->add_back(pp_token::create(loc,pp_token::TOK_STRING_LIT,token_value::create("ggg")));
00081         ts->add_back(pp_token::create(loc,pp_token::TOK_STRING_LIT,token_value::create("hhh")));
00082         ts->add_back(pp_token::create(loc,pp_token::TOK_STRING_LIT,token_value::create("iii")));
00083         
00084         ts->add_back(sep);
00085         ts->add_back(pp_token::create(loc,pp_token::TOK_WSTRING_LIT,token_value::create("jjj")));
00086         ts->add_back(pp_token::create(loc,pp_token::TOK_WSTRING_LIT,token_value::create("kkk")));
00087         ts->add_back(pp_token::create(loc,pp_token::TOK_WSTRING_LIT,token_value::create("lll")));
00088 
00089         ts->add_back(sep);
00090         ts->add_back(pp_token::create(loc,pp_token::TOK_STRING_LIT,token_value::create("xxx")));
00091         ts->add_back(pp_token::create(loc,pp_token::TOK_WSTRING_LIT,token_value::create("yyy")));
00092         ts->add_back(pp_token::create(loc,pp_token::TOK_STRING_LIT,token_value::create("zzz")));
00093 
00094         ts->add_back(sep);
00095         ts->add_back(pp_token::create(loc,pp_token::TOK_WSTRING_LIT,token_value::create("www")));
00096         ts->add_back(pp_token::create(loc,pp_token::TOK_STRING_LIT,token_value::create("vvv")));
00097         ts->add_back(pp_token::create(loc,pp_token::TOK_WSTRING_LIT,token_value::create("uuu")));
00098 
00099 #if 0
00100         ts->add_back(sep);
00101         ts->add_back(pp_token::create(loc,pp_token::TOK_STRING_LIT,token_value::create("xxx")));
00102         ts->add_back(pp_token::create(loc,pp_token::TOK_STRING_LIT,token_value::create("yyy")));
00103         ts->add_back(pp_token::create(loc,pp_token::TOK_STRING_LIT,token_value::create("zzz")));
00104         ts->add_back(pp_token::create(loc,pp_token::TOK_WSTRING_LIT,token_value::create("aaa")));
00105         ts->add_back(pp_token::create(loc,pp_token::TOK_WSTRING_LIT,token_value::create("bbb")));
00106         ts->add_back(pp_token::create(loc,pp_token::TOK_WSTRING_LIT,token_value::create("ccc")));
00107         ts->add_back(pp_token::create(loc,pp_token::TOK_STRING_LIT,token_value::create("ddd")));
00108         ts->add_back(pp_token::create(loc,pp_token::TOK_STRING_LIT,token_value::create("eee")));
00109         ts->add_back(pp_token::create(loc,pp_token::TOK_STRING_LIT,token_value::create("fff")));
00110 #endif
00111         ts->add_back(sep);
00112 
00113         ptr<string_joiner> sj = string_joiner::create(ts);
00114 
00115         ptr<pp_token> r = sj->read();
00116         lassert(r);
00117         lassert(is_equal(r,sep));
00118         
00119         r = sj->read();
00120         lassert(r);
00121         lassert(is_equal(r->type_get(),pp_token::TOK_STRING_LIT));
00122         lassert(is_equal(r->value_get(),token_value::create("aaa")));
00123         
00124         r = sj->read();
00125         lassert(r);
00126         lassert(is_equal(r,sep));
00127         
00128         r = sj->read();
00129         lassert(r);
00130         lassert(is_equal(r->type_get(),pp_token::TOK_WSTRING_LIT));
00131         lassert(is_equal(r->value_get(),token_value::create("bbb")));
00132 
00133         r = sj->read();
00134         lassert(r);
00135         lassert(is_equal(r,sep));
00136         
00137         r = sj->read();
00138         lassert(r);
00139         lassert(is_equal(r->type_get(),pp_token::TOK_STRING_LIT));
00140         lassert(is_equal(r->value_get(),token_value::create("cccddd")));
00141         
00142         r = sj->read();
00143         lassert(r);
00144         lassert(is_equal(r,sep));
00145         
00146         r = sj->read();
00147         lassert(r);
00148         lassert(is_equal(r->type_get(),pp_token::TOK_WSTRING_LIT));
00149         lassert(is_equal(r->value_get(),token_value::create("eeefff")));
00150         
00151         r = sj->read();
00152         lassert(r);
00153         lassert(is_equal(r,sep));
00154         
00155         r = sj->read();
00156         lassert(r);
00157         lassert(is_equal(r->type_get(),pp_token::TOK_WSTRING_LIT));
00158         lassert(is_equal(r->value_get(),token_value::create("xxxyyy")));
00159         
00160         r = sj->read();
00161         lassert(r);
00162         lassert(is_equal(r,sep));
00163         
00164 
00165         r = sj->read();
00166         lassert(r);
00167         lassert(is_equal(r->type_get(),pp_token::TOK_STRING_LIT));
00168         lassert(is_equal(r->value_get(),token_value::create("ggghhhiii")));
00169         
00170         r = sj->read();
00171         lassert(r);
00172         lassert(is_equal(r,sep));
00173         
00174         r = sj->read();
00175         lassert(r);
00176         lassert(is_equal(r->type_get(),pp_token::TOK_WSTRING_LIT));
00177         lassert(is_equal(r->value_get(),token_value::create("jjjkkklll")));
00178         
00179         r = sj->read();
00180         lassert(r);
00181         lassert(is_equal(r,sep));
00182         
00183         r = sj->read();
00184         lassert(r);
00185         lassert(is_equal(r->type_get(),pp_token::TOK_WSTRING_LIT));
00186         lassert(is_equal(r->value_get(),token_value::create("xxxyyyzzz")));
00187         
00188         r = sj->read();
00189         lassert(r);
00190         lassert(is_equal(r,sep));
00191         
00192         r = sj->read();
00193         lassert(r);
00194         lassert(is_equal(r->type_get(),pp_token::TOK_WSTRING_LIT));
00195         lassert(is_equal(r->value_get(),token_value::create("wwwvvvuuu")));
00196 
00197 #if 0
00198         r = sj->read();
00199         lassert(r);
00200         lassert(is_equal(r,sep));
00201 
00202         r = sj->read();
00203         lassert(r);
00204         lassert(is_equal(r->type_get(),pp_token::TOK_STRING_LIT));
00205         lassert(is_equal(r->value_get(),token_value::create("xxxyyyzzz")));
00206         
00207         r = sj->read();
00208         lassert(r);
00209         lassert(is_equal(r->type_get(),pp_token::TOK_WSTRING_LIT));
00210         lassert(is_equal(r->value_get(),token_value::create("aaabbbccc")));
00211         
00212         r = sj->read();
00213         lassert(r);
00214         lassert(is_equal(r->type_get(),pp_token::TOK_STRING_LIT));
00215         lassert(is_equal(r->value_get(),token_value::create("dddeeefff")));
00216         
00217         r = sj->read();
00218         lassert(r);
00219         lassert(is_equal(r,sep));
00220 #endif
00221         
00222 }
00223 
00224 end_package(lex);
00225 end_package(cplus);
00226 end_package(lang);
00227 end_package(lestes);
00228 
00229 /*!
00230   \brief Main function.
00231 
00232   Runs the unit test in different namespace.
00233 */
00234 int main(void)
00235 {
00236 	::lestes::lang::cplus::lex::string_joiner_test();
00237         return 0;
00238 }
00239 /* vim: set ft=lestes : */

Generated on Mon Feb 12 18:23:36 2007 for lestes by doxygen 1.5.1-20070107