// Copyright 2008 Nanorex, Inc.  See LICENSE file for details.

#include "NXStringTokenizerTest.h"


CPPUNIT_TEST_SUITE_REGISTRATION(NXStringTokenizerTest);
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(NXStringTokenizerTest, "NXStringTokenizerTestSuite");

/* FUNCTION: setUp */
void NXStringTokenizerTest::setUp() {
}


/* FUNCTION: tearDown */
void NXStringTokenizerTest::tearDown() {
}


/* FUNCTION: tokenization */
void NXStringTokenizerTest::tokenization() {
	std::string inString = "a,b,c";
	Nanorex::NXStringTokenizer tokenizer(inString, ",");
	CPPUNIT_ASSERT(tokenizer.getNextToken() == "a");
	CPPUNIT_ASSERT(tokenizer.getNextToken() == "b");
	CPPUNIT_ASSERT(tokenizer.getNextToken() == "c");
	CPPUNIT_ASSERT(!tokenizer.hasMoreTokens());

	inString = ",a;b,c;";
	tokenizer = Nanorex::NXStringTokenizer(inString, ",;");
	CPPUNIT_ASSERT(tokenizer.getNextToken() == "");
	CPPUNIT_ASSERT(tokenizer.getNextToken() == "a");
	CPPUNIT_ASSERT(tokenizer.getNextToken() == "b");
	CPPUNIT_ASSERT(tokenizer.getNextToken() == "c");
	CPPUNIT_ASSERT(!tokenizer.hasMoreTokens());

	inString = ",,a;b;;";
	tokenizer = Nanorex::NXStringTokenizer(inString, ",;");
	CPPUNIT_ASSERT(tokenizer.getNextToken() == "");
	CPPUNIT_ASSERT(tokenizer.getNextToken() == "");
	CPPUNIT_ASSERT(tokenizer.getNextToken() == "a");
	CPPUNIT_ASSERT(tokenizer.getNextToken() == "b");
	CPPUNIT_ASSERT(tokenizer.getNextToken() == "");
	CPPUNIT_ASSERT(!tokenizer.hasMoreTokens());
}