@@ -509,3 +509,30 @@ TEST(GumboParserTest, BrRemappings) {
509509 " <p><b>Asdasdasd</b></p><br><br><p>Sent with <a "
510510 " href=\" https://google.com\" >Net</a></p>" );
511511}
512+
513+ TEST (GumboParserTest, InterBlockWhitespace) {
514+ // Pretty-printed consecutive paragraphs must not gain empty <p>s from the
515+ // newlines between them (those would later serialize as extra <br>s).
516+ EXPECT_EQ (GumboParser::normalizeHtml (
517+ " <p>Asdasd</p>\n <p>Asdasd</p>\n <p>Asdasda</p>" ),
518+ " <p>Asdasd</p><p>Asdasd</p><p>Asdasda</p>" );
519+ EXPECT_EQ (GumboParser::normalizeHtml (
520+ " <p>Asdasd</p>\n\n <p>Asdasd</p>\n\n <p>Asdasda</p>" ),
521+ " <p>Asdasd</p><p>Asdasd</p><p>Asdasda</p>" );
522+ EXPECT_EQ (GumboParser::normalizeHtml (
523+ " <html>\n <p>Asdasd</p>\n <p>Asdasd</p>\n <p>Asdasda</p>\n </html>" ),
524+ " <p>Asdasd</p><p>Asdasd</p><p>Asdasda</p>" );
525+ EXPECT_EQ (GumboParser::normalizeHtml (" <p>Asdasd</p> <p>Asdasd</p>" ),
526+ " <p>Asdasd</p><p>Asdasd</p>" );
527+
528+ // Significant inline content between blocks is still wrapped in <p>.
529+ EXPECT_EQ (GumboParser::normalizeHtml (" <p>a</p> hello <p>b</p>" ),
530+ " <p>a</p><p> hello </p><p>b</p>" );
531+
532+ // Spaces inside text / between inlines must be preserved.
533+ EXPECT_EQ (GumboParser::normalizeHtml (" hello world" ), " hello world" );
534+ EXPECT_EQ (GumboParser::normalizeHtml (" <p>hello world</p>" ),
535+ " <p>hello world</p>" );
536+ EXPECT_EQ (GumboParser::normalizeHtml (" <b>hello</b> <i>world</i>" ),
537+ " <b>hello</b> <i>world</i>" );
538+ }
0 commit comments