aboutsummaryrefslogtreecommitdiffstats
path: root/tests/parser/charsetTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/parser/charsetTest.cpp')
-rw-r--r--tests/parser/charsetTest.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/tests/parser/charsetTest.cpp b/tests/parser/charsetTest.cpp
index e44bef5b..01b04e11 100644
--- a/tests/parser/charsetTest.cpp
+++ b/tests/parser/charsetTest.cpp
@@ -34,6 +34,7 @@ VMIME_TEST_SUITE_BEGIN(charsetTest)
// Test valid input
VMIME_TEST(testConvertStringValid)
VMIME_TEST(testConvertStreamValid)
+ VMIME_TEST(testConvertStreamExtract)
VMIME_TEST(testEncodingHebrew1255)
// IDNA
@@ -104,6 +105,32 @@ VMIME_TEST_SUITE_BEGIN(charsetTest)
}
}
+ void testConvertStreamExtract() {
+ vmime::bodyPart p;
+ p.getBody()->setContents(
+ vmime::make_shared <vmime::stringContentHandler>(
+ "Foo éé\r\né bar\r\nbaz"
+ ),
+ vmime::mediaType("text", "plain"),
+ vmime::charset("utf-8"),
+ vmime::encoding("quoted-printable")
+ );
+
+ vmime::string str;
+ vmime::utility::outputStreamStringAdapter outStr(str);
+ vmime::shared_ptr <vmime::charsetConverter> conv = vmime::charsetConverter::create(p.getBody()->getCharset(), vmime::charset("US-ASCII"));
+ auto filteredStream = conv->getFilteredOutputStream(outStr);
+ p.getBody()->getContents()->extract(*filteredStream);
+ filteredStream->flush();
+ VASSERT_EQ(
+ "generate",
+ "Foo ??\r\n"
+ "? bar\r\n"
+ "baz",
+ str
+ );
+ }
+
void testEncodingHebrew1255() {
// hewbrew string in windows-1255 charset