aboutsummaryrefslogtreecommitdiffstats
path: root/tests/parser/charsetTest.cpp
diff options
context:
space:
mode:
authoribanic <[email protected]>2021-05-15 20:32:24 +0000
committeribanic <[email protected]>2021-05-15 20:32:24 +0000
commit5d78d879bb82d2466fe38ccaa3446fd74bf74b3b (patch)
treefa2c000b24841ed0735386ff8b82fcfb999b8d63 /tests/parser/charsetTest.cpp
parent#261 Workaround for bad SEARCH response with AOL IMAP server (diff)
downloadvmime-5d78d879bb82d2466fe38ccaa3446fd74bf74b3b.tar.gz
vmime-5d78d879bb82d2466fe38ccaa3446fd74bf74b3b.zip
Prevent accessing empty buffer
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