void TextIteratorTest::testLatin1() { Latin1Encoding encoding; std::string text("Latin1"); TextIterator it(text, encoding); TextIterator end(text); assert (it != end); assert (*it++ == 'L'); assert (it != end); assert (*it++ == 'a'); assert (it != end); assert (*it++ == 't'); assert (it != end); assert (*it++ == 'i'); assert (it != end); assert (*it++ == 'n'); assert (it != end); assert (*it++ == '1'); assert (it == end); std::string empty; it = TextIterator(empty, encoding); end = TextIterator(empty); assert (it == end); }
void TextIteratorTest::testOneUTF8() { UTF8Encoding encoding; // 1 byte sequence std::string text("x"); TextIterator it(text, encoding); TextIterator end(text); assert (it != end); assert (*it == 'x'); ++it; assert (it == end); unsigned char data[Poco::TextEncoding::MAX_SEQUENCE_LENGTH]; // 2 byte sequence int n = encoding.convert(0xab, data, sizeof(data)); assert (n == 2); text.assign((char*) data, n); it = TextIterator(text, encoding); end = TextIterator(text); assert (it != end); assert (*it++ == 0xab); assert (it == end); // 3 byte sequence n = encoding.convert(0xabcd, data, sizeof(data)); assert (n == 3); text.assign((char*) data, n); it = TextIterator(text, encoding); end = TextIterator(text); assert (it != end); assert (*it++ == 0xabcd); assert (it == end); // 4 byte sequence n = encoding.convert(0xabcde, data, sizeof(data)); assert (n == 4); text.assign((char*) data, n); it = TextIterator(text, encoding); end = TextIterator(text); assert (it != end); assert (*it++ == 0xabcde); assert (it == end); // 5 byte sequence - not supported n = encoding.convert(0xabcdef, data, sizeof(data)); assert (n == 0); // 6 byte sequence - not supported n = encoding.convert(0xfabcdef, data, sizeof(data)); assert (n == 0); }