// Using 'bufferedStreamCopy' void testStreamCopy() { for (unsigned int i = 0 ; i < charsetTestSuitesCount ; ++i) { const charsetTestSuiteStruct& entry = charsetTestSuites[i]; std::ostringstream testName; testName << i << ": " << entry.fromCharset << " -> " << entry.toCharset; const unsigned long inLength = (entry.fromLength == 0 ? strlen(entry.fromBytes) : entry.fromLength); vmime::string in(entry.fromBytes, entry.fromBytes + inLength); const unsigned long outLength = (entry.toLength == 0 ? strlen(entry.toBytes) : entry.toLength); vmime::string expectedOut(entry.toBytes, entry.toBytes + outLength); vmime::string actualOut; vmime::utility::outputStreamStringAdapter osa(actualOut); vmime::ref <vmime::charsetConverter> conv = vmime::charsetConverter::create(entry.fromCharset, entry.toCharset); vmime::ref <vmime::utility::charsetFilteredOutputStream> os = conv->getFilteredOutputStream(osa); VASSERT_NOT_NULL("filteredOutputStream availability", os); vmime::utility::inputStreamStringAdapter is(in); vmime::utility::bufferedStreamCopy(is, *os); os->flush(); VASSERT_EQ(testName.str(), toHex(expectedOut), toHex(actualOut)); } }
void testInvalidInput1() { vmime::string in("foo\xab\xcd\xef bar"); vmime::string expectedOut("foo??? bar"); vmime::string actualOut; vmime::utility::outputStreamStringAdapter osa(actualOut); vmime::ref <vmime::charsetConverter> conv = vmime::charsetConverter::create (vmime::charset("utf-8"), vmime::charset("iso-8859-1")); vmime::ref <vmime::utility::charsetFilteredOutputStream> os = conv->getFilteredOutputStream(osa); VASSERT_NOT_NULL("filteredOutputStream availability", os); vmime::utility::inputStreamStringAdapter is(in); vmime::utility::stream::value_type buffer[16]; for (int i = 0 ; !is.eof() ; ++i) os->write(buffer, is.read(buffer, 1)); os->flush(); VASSERT_EQ("1", toHex(expectedOut), toHex(actualOut)); }
FBHCProblemTest::~FBHCProblemTest() { std::cout.rdbuf(defaultOutBuf_); std::cin.rdbuf(defaultInBuf_); in_.close(); out_.close(); std::ifstream expectedOut(filename_ + "out_expected.txt"); std::ifstream realOut(filename_ + "out.txt"); std::string strExpected((std::istreambuf_iterator<char>(expectedOut)), std::istreambuf_iterator<char>()); std::string strReal((std::istreambuf_iterator<char>(realOut)), std::istreambuf_iterator<char>()); EXPECT_EQ(strExpected, strReal); }