// 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));
	}
Esempio n. 3
0
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);
}