|
PH Logo
Logo intepreter modeled after UCB Logo.
|
00001 #define BOOST_TEST_MAIN 00002 #include <boost/test/unit_test.hpp> 00003 00004 #include "Interpreter.h" 00005 #include "Console.h" 00006 #include "World.h" 00007 #include "Thing.h" 00008 #include "RestProcessor.h" 00009 #include "RestOutput.h" 00010 00011 using namespace std; 00012 using namespace phlogo; 00013 00014 class TestRestOutput : public RestOutput { 00015 00016 public: 00017 virtual void output(const std::string &s) { 00018 _s = s; 00019 } 00020 00021 string getString() { 00022 return _s; 00023 } 00024 00025 private: 00026 string _s; 00027 }; 00028 00029 BOOST_AUTO_TEST_CASE( testfile ) 00030 { 00031 TestRestOutput out; 00032 BOOST_CHECK(!RestProcessor::getInstance()->process("/test.html", &out)); 00033 } 00034 00035 BOOST_AUTO_TEST_CASE( testcode ) 00036 { 00037 TestRestOutput out; 00038 BOOST_CHECK(RestProcessor::getInstance()->process("/logo/?cmd=cs print [hello world]", &out)); 00039 BOOST_CHECK_EQUAL(out.getString(), "[[{c:0},{o:['hello world']}],[{m:[100,100]}]]"); 00040 } 00041 00042 BOOST_AUTO_TEST_CASE( defun ) 00043 { 00044 TestRestOutput out; 00045 BOOST_CHECK(RestProcessor::getInstance()->process("/defun/?name=box", &out)); 00046 BOOST_CHECK_EQUAL(out.getString(), "[[{o:['defining function box']}],[]]"); 00047 BOOST_CHECK(RestProcessor::getInstance()->process("/logo/?cmd=repeat 4 [fd 50 rt 90]", &out)); 00048 BOOST_CHECK_EQUAL(out.getString(), "[[],[]]"); 00049 BOOST_CHECK(RestProcessor::getInstance()->process("/end/?", &out)); 00050 BOOST_CHECK_EQUAL(out.getString(), "[[{o:['function defined']}],[]]"); 00051 BOOST_CHECK(RestProcessor::getInstance()->process("/logo/?cmd=box", &out)); 00052 BOOST_CHECK_EQUAL(out.getString(), "[[],[{l:[100,50]},{s:0},{l:[150,50]},{s:0},{l:[150,100]},{s:0},{l:[100,100]},{s:0}]]"); 00053 } 00054
1.7.4