| 1 | 
tim | 
227 | 
#include "utils/StringTokenizerTestCase.hpp" | 
| 2 | 
  | 
  | 
#include <iostream> | 
| 3 | 
  | 
  | 
#include <algorithm> | 
| 4 | 
  | 
  | 
#include "utils/StringTokenizer.hpp" | 
| 5 | 
  | 
  | 
// Registers the fixture into the 'registry' | 
| 6 | 
  | 
  | 
CPPUNIT_TEST_SUITE_REGISTRATION( StringTokenizerTestCase ); | 
| 7 | 
  | 
  | 
 | 
| 8 | 
  | 
  | 
 | 
| 9 | 
  | 
  | 
void StringTokenizerTestCase::testStringTokenizer(){ | 
| 10 | 
  | 
  | 
 | 
| 11 | 
  | 
  | 
     | 
| 12 | 
  | 
  | 
    std::string str1 = "    \t  Hello \r World \n"; | 
| 13 | 
  | 
  | 
    StringTokenizer tokenizer1(str1); | 
| 14 | 
  | 
  | 
 | 
| 15 | 
  | 
  | 
    CPPUNIT_ASSERT(tokenizer1.getOriginal() == str1); | 
| 16 | 
  | 
  | 
 | 
| 17 | 
  | 
  | 
    CPPUNIT_ASSERT(tokenizer1.countTokens() == 2); | 
| 18 | 
  | 
  | 
 | 
| 19 | 
  | 
  | 
    std::string token1 = tokenizer1.nextToken(); | 
| 20 | 
  | 
  | 
    std::string token2 = tokenizer1.nextToken(); | 
| 21 | 
  | 
  | 
 | 
| 22 | 
  | 
  | 
    CPPUNIT_ASSERT(token1 == "Hello"); | 
| 23 | 
  | 
  | 
    CPPUNIT_ASSERT(token2 == "World"); | 
| 24 | 
  | 
  | 
 | 
| 25 | 
  | 
  | 
    //test reading and converting tokens to other data type | 
| 26 | 
  | 
  | 
    std::string str2 = "1991.2\t129\t1e2 1 OOPSE\n"; | 
| 27 | 
  | 
  | 
    StringTokenizer tokenizer2(str2); | 
| 28 | 
  | 
  | 
 | 
| 29 | 
  | 
  | 
    CPPUNIT_ASSERT(tokenizer2.countTokens() == 5); | 
| 30 | 
  | 
  | 
 | 
| 31 | 
  | 
  | 
    float floatVal = tokenizer2.nextTokenAsFloat(); | 
| 32 | 
  | 
  | 
    int intVal = tokenizer2.nextTokenAsInt(); | 
| 33 | 
  | 
  | 
    double doubleVal = tokenizer2.nextTokenAsDouble(); | 
| 34 | 
  | 
  | 
    bool boolVal = tokenizer2.nextTokenAsBool(); | 
| 35 | 
  | 
  | 
    std::string stringVal = tokenizer2.nextToken(); | 
| 36 | 
  | 
  | 
 | 
| 37 | 
  | 
  | 
    CPPUNIT_ASSERT_DOUBLES_EQUAL(floatVal, 1991.2, 0.0001); | 
| 38 | 
  | 
  | 
    CPPUNIT_ASSERT(intVal == 129); | 
| 39 | 
  | 
  | 
    CPPUNIT_ASSERT_DOUBLES_EQUAL(doubleVal, 100, 0.0001); | 
| 40 | 
  | 
  | 
    CPPUNIT_ASSERT(boolVal); | 
| 41 | 
  | 
  | 
    CPPUNIT_ASSERT(stringVal == "OOPSE"); | 
| 42 | 
  | 
  | 
 | 
| 43 | 
  | 
  | 
    CPPUNIT_ASSERT(!tokenizer2.hasMoreTokens()); | 
| 44 | 
  | 
  | 
 | 
| 45 | 
  | 
  | 
    //test peekNextToken and using different delimeters | 
| 46 | 
  | 
  | 
    StringTokenizer tokenizer3(str2, " \n"); | 
| 47 | 
  | 
  | 
 | 
| 48 | 
  | 
  | 
    CPPUNIT_ASSERT(tokenizer3.getDelimiters() == " \n"); | 
| 49 | 
  | 
  | 
     | 
| 50 | 
  | 
  | 
    CPPUNIT_ASSERT(tokenizer3.countTokens() == 3); | 
| 51 | 
  | 
  | 
 | 
| 52 | 
  | 
  | 
    CPPUNIT_ASSERT(tokenizer3.peekNextToken() == "1991.2\t129\t1e2"); | 
| 53 | 
  | 
  | 
 | 
| 54 | 
  | 
  | 
    CPPUNIT_ASSERT(tokenizer3.countTokens() == 3); | 
| 55 | 
  | 
  | 
 | 
| 56 | 
  | 
  | 
    CPPUNIT_ASSERT(tokenizer3.nextToken() == "1991.2\t129\t1e2"); | 
| 57 | 
  | 
  | 
 | 
| 58 | 
  | 
  | 
    CPPUNIT_ASSERT(tokenizer3.countTokens() == 2); | 
| 59 | 
  | 
  | 
 | 
| 60 | 
  | 
  | 
    //test return tokens | 
| 61 | 
  | 
  | 
    StringTokenizer tokenizer4(str2, " \n", true); | 
| 62 | 
  | 
  | 
    CPPUNIT_ASSERT(tokenizer4.countTokens() == 6); | 
| 63 | 
  | 
  | 
    CPPUNIT_ASSERT(tokenizer4.nextToken() == "1991.2\t129\t1e2"); | 
| 64 | 
  | 
  | 
    CPPUNIT_ASSERT(tokenizer4.nextToken() == " "); | 
| 65 | 
  | 
  | 
    CPPUNIT_ASSERT(tokenizer4.nextToken() == "1"); | 
| 66 | 
  | 
  | 
    CPPUNIT_ASSERT(tokenizer4.nextToken() == " "); | 
| 67 | 
  | 
  | 
    CPPUNIT_ASSERT(tokenizer4.nextToken() == "OOPSE"); | 
| 68 | 
  | 
  | 
    CPPUNIT_ASSERT(tokenizer4.nextToken() == "\n"); | 
| 69 | 
  | 
  | 
         | 
| 70 | 
  | 
  | 
} | 
| 71 | 
  | 
  | 
 |