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