|
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 "List.h" 00011 #include "Thing.h" 00012 #include "StringTokenStream.h" 00013 00014 using namespace std; 00015 using namespace phlogo; 00016 00017 BOOST_AUTO_TEST_CASE( simple ) 00018 { 00019 tListArray data; 00020 List l(&data); 00021 StringTokenStream ts("[hello]"); 00022 l.fromWord(&ts); 00023 BOOST_CHECK_EQUAL((int)l.size(), 1); 00024 BOOST_CHECK(l[0]->isWord()); 00025 BOOST_CHECK_EQUAL(l[0]->getWord(), "hello"); 00026 BOOST_CHECK_EQUAL(l.str(), "hello"); 00027 } 00028 00029 BOOST_AUTO_TEST_CASE( multi ) 00030 { 00031 tListArray data; 00032 List l(&data); 00033 StringTokenStream ts("[hello,world]"); 00034 l.fromWord(&ts); 00035 BOOST_CHECK_EQUAL((int)l.size(), 2); 00036 BOOST_CHECK(l[0]->isWord()); 00037 BOOST_CHECK_EQUAL(l[0]->getWord(), "hello"); 00038 BOOST_CHECK(l[1]->isWord()); 00039 BOOST_CHECK_EQUAL(l[1]->getWord(), "world"); 00040 BOOST_CHECK_EQUAL(l.str(), "hello world"); 00041 } 00042 00043 BOOST_AUTO_TEST_CASE( multi3 ) 00044 { 00045 tListArray data; 00046 List l(&data); 00047 StringTokenStream ts("[hello,world,xxx]"); 00048 l.fromWord(&ts); 00049 BOOST_CHECK_EQUAL((int)l.size(), 3); 00050 BOOST_CHECK(l[0]->isWord()); 00051 BOOST_CHECK_EQUAL(l[0]->getWord(), "hello"); 00052 BOOST_CHECK(l[2]->isWord()); 00053 BOOST_CHECK_EQUAL(l[2]->getWord(), "xxx"); 00054 BOOST_CHECK_EQUAL(l.str(), "hello world xxx"); 00055 } 00056 00057 BOOST_AUTO_TEST_CASE( multi4 ) 00058 { 00059 tListArray data; 00060 List l(&data); 00061 StringTokenStream ts("[hello,world,xxx,yyy]"); 00062 l.fromWord(&ts); 00063 BOOST_CHECK_EQUAL((int)l.size(), 4); 00064 BOOST_CHECK(l[0]->isWord()); 00065 BOOST_CHECK_EQUAL(l[0]->getWord(), "hello"); 00066 BOOST_CHECK(l[3]->isWord()); 00067 BOOST_CHECK_EQUAL(l[3]->getWord(), "yyy"); 00068 BOOST_CHECK_EQUAL(l.str(), "hello world xxx yyy"); 00069 } 00070 00071 BOOST_AUTO_TEST_CASE( compound ) 00072 { 00073 tListArray data; 00074 List l(&data); 00075 StringTokenStream ts("[[hello]]"); 00076 l.fromWord(&ts); 00077 BOOST_CHECK_EQUAL((int)l.size(), 1); 00078 BOOST_CHECK(!l[0]->isWord()); 00079 BOOST_CHECK_EQUAL((int)l[0]->getList().size(), 1); 00080 BOOST_CHECK_EQUAL(l[0]->getList()[0]->getWord(), "hello"); 00081 BOOST_CHECK_EQUAL(l[0]->getList().str(), "hello"); 00082 } 00083 00084 BOOST_AUTO_TEST_CASE( compound2 ) 00085 { 00086 tListArray data; 00087 List l(&data); 00088 StringTokenStream ts("[[hello,world]]"); 00089 l.fromWord(&ts); 00090 BOOST_CHECK_EQUAL((int)l.size(), 1); 00091 BOOST_CHECK(!l[0]->isWord()); 00092 BOOST_CHECK_EQUAL((int)l[0]->getList().size(), 2); 00093 BOOST_CHECK_EQUAL(l[0]->getList()[0]->getWord(), "hello"); 00094 BOOST_CHECK_EQUAL(l[0]->getList()[1]->getWord(), "world"); 00095 BOOST_CHECK_EQUAL(l[0]->getList().str(), "hello world"); 00096 } 00097 00098 BOOST_AUTO_TEST_CASE( compound3 ) 00099 { 00100 tListArray data; 00101 List l(&data); 00102 StringTokenStream ts("[[hello],[world]]"); 00103 l.fromWord(&ts); 00104 BOOST_CHECK_EQUAL((int)l.size(), 2); 00105 BOOST_CHECK(!l[0]->isWord()); 00106 BOOST_CHECK(!l[1]->isWord()); 00107 BOOST_CHECK_EQUAL((int)l[0]->getList().size(), 1); 00108 BOOST_CHECK_EQUAL(l[0]->getList()[0]->getWord(), "hello"); 00109 BOOST_CHECK_EQUAL((int)l[1]->getList().size(), 1); 00110 BOOST_CHECK_EQUAL(l[1]->getList()[0]->getWord(), "world"); 00111 } 00112 00113 BOOST_AUTO_TEST_CASE( compound4 ) 00114 { 00115 tListArray data; 00116 List l(&data); 00117 StringTokenStream ts("[hello,[world]]"); 00118 l.fromWord(&ts); 00119 BOOST_CHECK_EQUAL((int)l.size(), 2); 00120 BOOST_CHECK(l[0]->isWord()); 00121 BOOST_CHECK_EQUAL(l[0]->getWord(), "hello"); 00122 BOOST_CHECK(!l[1]->isWord()); 00123 BOOST_CHECK_EQUAL((int)l[1]->getList().size(), 1); 00124 BOOST_CHECK_EQUAL(l[1]->getList()[0]->getWord(), "world"); 00125 } 00126 00127 BOOST_AUTO_TEST_CASE( compound5 ) 00128 { 00129 tListArray data; 00130 List l(&data); 00131 StringTokenStream ts("[[world],hello]"); 00132 l.fromWord(&ts); 00133 BOOST_CHECK_EQUAL((int)l.size(), 2); 00134 BOOST_CHECK(!l[0]->isWord()); 00135 BOOST_CHECK_EQUAL((int)l[0]->getList().size(), 1); 00136 BOOST_CHECK_EQUAL(l[0]->getList()[0]->getWord(), "world"); 00137 BOOST_CHECK(l[1]->isWord()); 00138 BOOST_CHECK_EQUAL(l[1]->getWord(), "hello"); 00139 } 00140 00141 BOOST_AUTO_TEST_CASE( numbers ) 00142 { 00143 tListArray data; 00144 List l(&data); 00145 StringTokenStream ts("[[1,2],[3,4],[5,6]]"); 00146 l.fromWord(&ts); 00147 BOOST_CHECK_EQUAL((int)l.size(), 3); 00148 BOOST_CHECK(!l[0]->isWord()); 00149 BOOST_CHECK_EQUAL((int)l[0]->getList().size(), 2); 00150 BOOST_CHECK_EQUAL(l[0]->getList()[0]->getWord(), "1"); 00151 BOOST_CHECK_EQUAL(l[0]->getList()[1]->getWord(), "2"); 00152 BOOST_CHECK_EQUAL((int)l[1]->getList().size(), 2); 00153 BOOST_CHECK_EQUAL(l[1]->getList()[0]->getWord(), "3"); 00154 BOOST_CHECK_EQUAL(l[1]->getList()[1]->getWord(), "4"); 00155 } 00156 00157 BOOST_AUTO_TEST_CASE( tostring ) 00158 { 00159 tListArray data; 00160 List l(&data); 00161 StringTokenStream ts("[[world],hello]"); 00162 l.fromWord(&ts); 00163 BOOST_CHECK_EQUAL(l.str(), "[world] hello"); 00164 } 00165
1.7.4