commit e4e6f3c57b072afc963915aab9b6682e4a5002cb
parent 44de8b2a53f2e42ef505e7e5b2c5d949509e0f08
Author: Edgar Chen <echen@mozilla.com>
Date: Thu, 16 Oct 2025 07:23:05 +0000
Bug 1992067 - Add more nsPlainTextSerializer gtest for <blockquote type=cite>; r=masayuki
Differential Revision: https://phabricator.services.mozilla.com/D267174
Diffstat:
1 file changed, 102 insertions(+), 1 deletion(-)
diff --git a/dom/serializers/gtest/TestPlainTextSerializerBlockQuoteCite.cpp b/dom/serializers/gtest/TestPlainTextSerializerBlockQuoteCite.cpp
@@ -12,7 +12,7 @@
#include "nsServiceManagerUtils.h"
#include "nsString.h"
-TEST(PlainTextSerializerBlockQuoteCite, BlockQuoteCite)
+TEST(PlainTextSerializerBlockQuoteCite, BlockQuoteCiteWrap)
{
nsAutoString test;
test.AppendLiteral(u"<blockquote type=cite>hello world</blockquote>");
@@ -31,3 +31,104 @@ TEST(PlainTextSerializerBlockQuoteCite, BlockQuoteCite)
ASSERT_EQ(test, expect) << "Wrong blockquote cite to text serialization";
}
+
+TEST(PlainTextSerializerBlockQuoteCite, BlockQuoteCiteNested)
+{
+ nsAutoString test;
+ test.AppendLiteral(
+ u"<blockquote type=cite>aaa"
+ u"<blockquote type=cite>bbb"
+ u"<blockquote type=cite>ccc"
+ u"</blockquote><pre>ddd</pre>"
+ u"</blockquote>eee"
+ u"</blockquote>");
+
+ const uint32_t wrapColumn = 20;
+ ConvertBufToPlainText(test,
+ nsIDocumentEncoder::OutputFormatted |
+ nsIDocumentEncoder::OutputFormatFlowed |
+ nsIDocumentEncoder::OutputCRLineBreak |
+ nsIDocumentEncoder::OutputLFLineBreak,
+ wrapColumn);
+
+ constexpr auto expect = NS_LITERAL_STRING_FROM_CSTRING(
+ "> aaa\r\n"
+ ">> bbb\r\n"
+ ">>> ccc\r\n"
+ ">> ddd\r\n"
+ "> eee\r\n");
+
+ ASSERT_EQ(test, expect)
+ << "Wrong nested blockquote cite to text serialization";
+}
+
+TEST(PlainTextSerializerBlockQuoteCite, LineBreakAfterBlockQuoteCite)
+{
+ nsAutoString test;
+ test.AppendLiteral(
+ u"<blockquote type=cite>hello world</blockquote>\n<pre>aaa</pre>bbb");
+
+ const uint32_t wrapColumn = 20;
+ ConvertBufToPlainText(test,
+ nsIDocumentEncoder::OutputFormatted |
+ nsIDocumentEncoder::OutputFormatFlowed |
+ nsIDocumentEncoder::OutputCRLineBreak |
+ nsIDocumentEncoder::OutputLFLineBreak,
+ wrapColumn);
+
+ constexpr auto expect = NS_LITERAL_STRING_FROM_CSTRING(
+ "> hello world\r\n"
+ "aaa\r\n\r\n"
+ "bbb\r\n");
+
+ ASSERT_EQ(test, expect) << "Wrong blockquote cite to text serialization";
+}
+
+TEST(PlainTextSerializerBlockQuoteCite, TextAfterBlockQuoteCite)
+{
+ nsAutoString test;
+ test.AppendLiteral(
+ u"<blockquote type=cite>hello world</blockquote>aaa<pre>bbb</pre>ccc");
+
+ const uint32_t wrapColumn = 20;
+ ConvertBufToPlainText(test,
+ nsIDocumentEncoder::OutputFormatted |
+ nsIDocumentEncoder::OutputFormatFlowed |
+ nsIDocumentEncoder::OutputCRLineBreak |
+ nsIDocumentEncoder::OutputLFLineBreak,
+ wrapColumn);
+
+ constexpr auto expect = NS_LITERAL_STRING_FROM_CSTRING(
+ "> hello world\r\n"
+ "aaa\r\n\r\n"
+ "bbb\r\n\r\n"
+ "ccc\r\n");
+
+ ASSERT_EQ(test, expect) << "Wrong blockquote cite to text serialization";
+}
+
+TEST(PlainTextSerializerBlockQuoteCite, SelectAfterBlockQuoteCite)
+{
+ nsAutoString test;
+ test.AppendLiteral(
+ u"<blockquote type=cite>first blockquote</blockquote>"
+ u"<select><option>aaa</option></select><pre>bbb</pre>"
+ u"<blockquote type=cite>second blockquote</blockquote>"
+ u"<select><option>\r\n</option></select><pre>ccc</pre>");
+
+ const uint32_t wrapColumn = 20;
+ ConvertBufToPlainText(test,
+ nsIDocumentEncoder::OutputFormatted |
+ nsIDocumentEncoder::OutputFormatFlowed |
+ nsIDocumentEncoder::OutputCRLineBreak |
+ nsIDocumentEncoder::OutputLFLineBreak,
+ wrapColumn);
+
+ constexpr auto expect = NS_LITERAL_STRING_FROM_CSTRING(
+ "> first blockquote\r\n\r\n"
+ "bbb\r\n"
+ "> second blockquote\r\n\r\n"
+ "ccc\r\n");
+
+ ASSERT_EQ(test, expect) << "Wrong blockquote cite to text serialization";
+}