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/equality.hh>
00036 #include <lestes/std/source_location.hh>
00037 #include <lestes/std/file_info.hh>
00038 #include <lestes/lang/cplus/lex/concat.hh>
00039 #include <lestes/lang/cplus/lex/pp_token.hh>
00040 #include <lestes/lang/cplus/lex/token_sequence.hh>
00041 #include <lestes/lang/cplus/lex/token_value.hh>
00042
00043 package(lestes);
00044 package(lang);
00045 package(cplus);
00046 package(lex);
00047
00048 using namespace ::std;
00049
00050
00051
00052
00053
00054
00055 void concat_test(void)
00056 {
00057 ptr<concat> cat = concat::instance();
00058 ptr<file_info> fi = file_info::create("<testing>",NULL);
00059 ptr<token_sequence> ts;
00060
00061 ptr<source_location> l = source_location::create(fi,1,1);
00062 ptr<source_location> m = source_location::create(fi,1,2);
00063 ptr<pp_token> t = pp_token::create(l,pp_token::TOK_PLUS);
00064 ptr<pp_token> u = pp_token::create(m,pp_token::TOK_EQ);
00065 ts = cat->process(t,u);
00066 lassert(ts);
00067 lassert(ts->length() == 1);
00068 ptr<pp_token> r = ts->read_front();
00069 lassert(r);
00070 lassert(is_equal(r->type_get(),pp_token::TOK_PLUS_EQ));
00071 lassert(is_equal(r->location_get(),l));
00072
00073 ts = cat->process(u,t);
00074 lassert(ts);
00075 lassert(ts->length() == 2);
00076 r = ts->read_front();
00077 lassert(is_equal(r,u));
00078 ptr<pp_token> s = ts->read_front();
00079 lassert(is_equal(s,t));
00080
00081 t = pp_token::create(l,pp_token::TOK_IDENT,token_value::create("L"));
00082 u = pp_token::create(m,pp_token::TOK_STRING_LIT,token_value::create("abc"));
00083 ts = cat->process(t,u);
00084 lassert(ts->length() == 1);
00085 r = ts->read_front();
00086 lassert(r);
00087 lassert(is_equal(r->type_get(),pp_token::TOK_WSTRING_LIT));
00088 lassert(is_equal(r->location_get(),l));
00089
00090 }
00091
00092 end_package(lex);
00093 end_package(cplus);
00094 end_package(lang);
00095 end_package(lestes);
00096
00097
00098
00099
00100
00101
00102 int main(void)
00103 {
00104 ::lestes::lang::cplus::lex::concat_test();
00105 return 0;
00106 }
00107