|
PH Logo
Logo intepreter modeled after UCB Logo.
|
00001 #define BOOST_TEST_MAIN 00002 #include <boost/test/unit_test.hpp> 00003 00004 #include <iostream> 00005 #include <string> 00006 #include <sstream> 00007 #include <algorithm> 00008 #include <iterator> 00009 00010 #include "Func.h" 00011 #include "StringTokenStream.h" 00012 #include "Verbs.h" 00013 #include "Tokenizer.h" 00014 #include "Thing.h" 00015 #include "Interpreter.h" 00016 #include "Console.h" 00017 #include "World.h" 00018 00019 using namespace std; 00020 using namespace phlogo; 00021 using namespace boost; 00022 00023 BOOST_AUTO_TEST_CASE( rawfunc ) 00024 { 00025 StringConsole c; 00026 World w(&c); 00027 Interpreter itp(&w); 00028 shared_ptr<Func> f(new Func(":foo")); 00029 f->addWords("$1.1 :foo"); 00030 StringTokenStream ts("hello"); 00031 f->execute(&itp, &w, &ts); 00032 BOOST_CHECK_EQUAL(c.getString(), "hello"); 00033 } 00034 00035 BOOST_AUTO_TEST_CASE( functok ) 00036 { 00037 Verbs verbs(0, 0); 00038 Tokenizer tk(&verbs); 00039 verbs.createFunction("xxxx", ":foo"); 00040 00041 BOOST_CHECK_EQUAL(tk.tokenizeToString("xxxx \"aaa"), "#0 aaa"); 00042 } 00043 00044 BOOST_AUTO_TEST_CASE( suite ) 00045 { 00046 StringConsole c; 00047 World w(&c); 00048 Interpreter itp(&w); 00049 itp.run(&w, "testsuite \"func"); 00050 BOOST_CHECK(!c.isError()); 00051 if (c.isError()) { 00052 cout << c.getString() << endl; 00053 } 00054 BOOST_CHECK_EQUAL(w.getResult()->getWord(), "passed [9]"); 00055 }
1.7.4