| 1 | #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 OpenMD\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 == "OpenMD"); | 
| 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() == "OpenMD"); | 
| 68 | CPPUNIT_ASSERT(tokenizer4.nextToken() == "\n"); | 
| 69 |  | 
| 70 | } | 
| 71 |  |