00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
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
00051
00052
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
00231
00232
00233
00234 int main(void)
00235 {
00236 ::lestes::lang::cplus::lex::string_joiner_test();
00237 return 0;
00238 }
00239