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/pp_token.hh>
00039 #include <lestes/lang/cplus/lex/token_value.hh>
00040
00041 package(lestes);
00042 package(lang);
00043 package(cplus);
00044 package(lex);
00045
00046 using namespace ::std;
00047
00048
00049
00050
00051
00052
00053 void pp_token_test(void)
00054 {
00055 ptr<file_info> fi = file_info::create("foobar.h",NULL);
00056 ptr<source_location> loc = source_location::create(fi,2,3);
00057 ptr<token_value> s = token_value::create("123");
00058 ptr<token_value> t = token_value::create("123");
00059 ptr<token_value> u = token_value::create("abc");
00060 ptr<token_value> v = token_value::create("abc");
00061
00062 ptr<pp_token> a = pp_token::create(loc,pp_token::TOK_NUMBER_LIT,s);
00063
00064 lassert(is_equal(a,a));
00065 lassert(is_equal(a->type_get(),pp_token::TOK_NUMBER_LIT));
00066 lassert(is_equal(a->value_get(),t));
00067 lassert(is_equal(a->location_get()->file_get(),fi));
00068 lassert(is_equal(a->location_get()->line_get(),2U));
00069 lassert(is_equal(a->location_get()->column_get(),3U));
00070 lassert(is_equal(a->flags_get(),pp_token::FLG_LITERAL));
00071
00072 a->type_set(pp_token::TOK_STRING_LIT);
00073 a->value_set(u);
00074 a->location_set(source_location::create(fi,0,0));
00075 a->flags_set(pp_token::FLG_ERROR);
00076
00077 lassert(is_equal(a->type_get(),pp_token::TOK_STRING_LIT));
00078 lassert(is_equal(a->value_get(),v));
00079 lassert(is_equal(a->location_get()->file_get(),fi));
00080 lassert(is_equal(a->location_get()->line_get(),0U));
00081 lassert(is_equal(a->location_get()->column_get(),0U));
00082 lassert(is_equal(a->flags_get(),(pp_token::FLG_LITERAL | pp_token::FLG_ERROR)));
00083
00084 ptr<pp_token> b = a->clone();
00085
00086 lassert(is_equal(b,a));
00087 lassert(is_equal(a,b));
00088 lassert(is_equal(b->type_get(),pp_token::TOK_STRING_LIT));
00089 lassert(is_equal(b->value_get(),v));
00090 lassert(is_equal(b->location_get()->file_get(),fi));
00091 lassert(is_equal(b->location_get()->line_get(),0U));
00092 lassert(is_equal(b->location_get()->column_get(),0U));
00093 lassert(is_equal(b->flags_get(),(pp_token::FLG_LITERAL | pp_token::FLG_ERROR)));
00094
00095 ptr<pp_token> c;
00096
00097 c = a;
00098 lassert(is_equal(c,a));
00099 lassert(is_equal(a,c));
00100 lassert(is_equal(c->type_get(),pp_token::TOK_STRING_LIT));
00101 lassert(is_equal(c->value_get(),v));
00102 lassert(is_equal(c->location_get()->file_get(),fi));
00103 lassert(is_equal(c->location_get()->line_get(),0U));
00104 lassert(is_equal(c->location_get()->column_get(),0U));
00105 lassert(is_equal(c->flags_get(),(pp_token::FLG_LITERAL | pp_token::FLG_ERROR)));
00106 }
00107
00108 end_package(lex);
00109 end_package(cplus);
00110 end_package(lang);
00111 end_package(lestes);
00112
00113 int main(void)
00114 {
00115 lestes::lang::cplus::lex::pp_token_test();
00116 return 0;
00117 }
00118
00119