PH Logo
Logo intepreter modeled after UCB Logo.
/Users/paul/Documents/phlogo/core/functest.cpp
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 }
 All Classes Functions