@@ -357,16 +357,71 @@ public void ParseElement_CanHandleMixedInlineAndBlockLevelBlocks()
357
357
Assert . IsEmpty ( blockLevelBlock . Elements ) ;
358
358
}
359
359
360
+ private const string TestParagraph = "What follows from <strong>here</strong> <em>is</em> <a href=\" #\" >just</a> a bunch of text." ;
361
+
360
362
[ Test ]
361
363
public void ParseElement_CanHandleWhitespaceAroundInlineElemements ( )
362
364
{
363
365
var parser = CreateRichTextElementParser ( ) ;
364
366
365
- var element = parser . Parse ( "<p>What follows from <strong>here</strong> <em>is</em> <a href= \" # \" >just</a> a bunch of text. </p>" , RichTextBlockModel . Empty ) as RichTextRootElement ;
367
+ var element = parser . Parse ( $ "<p>{ TestParagraph } </p>", RichTextBlockModel . Empty ) as RichTextRootElement ;
366
368
Assert . IsNotNull ( element ) ;
367
369
var paragraphElement = element . Elements . Single ( ) as RichTextGenericElement ;
368
370
Assert . IsNotNull ( paragraphElement ) ;
369
371
372
+ AssertTestParagraph ( paragraphElement ) ;
373
+ }
374
+
375
+ [ TestCase ( 1 , "\n " ) ]
376
+ [ TestCase ( 2 , "\n " ) ]
377
+ [ TestCase ( 1 , "\r " ) ]
378
+ [ TestCase ( 2 , "\r " ) ]
379
+ [ TestCase ( 1 , "\r \n " ) ]
380
+ [ TestCase ( 2 , "\r \n " ) ]
381
+ public void ParseElement_RemovesNewLinesAroundHtmlStructuralElements ( int numberOfNewLineCharacters , string newlineCharacter )
382
+ {
383
+ var parser = CreateRichTextElementParser ( ) ;
384
+
385
+ var newLineSeparator = string . Concat ( Enumerable . Repeat ( newlineCharacter , numberOfNewLineCharacters ) ) ;
386
+ var element = parser . Parse ( $ "<table>{ newLineSeparator } <tr>{ newLineSeparator } <td>{ TestParagraph } </td>{ newLineSeparator } </tr>{ newLineSeparator } </table>", RichTextBlockModel . Empty ) as RichTextRootElement ;
387
+ Assert . IsNotNull ( element ) ;
388
+ var tableElement = element . Elements . Single ( ) as RichTextGenericElement ;
389
+ Assert . IsNotNull ( tableElement ) ;
390
+
391
+ var rowElement = tableElement . Elements . Single ( ) as RichTextGenericElement ;
392
+ Assert . IsNotNull ( rowElement ) ;
393
+
394
+ var cellElement = rowElement . Elements . Single ( ) as RichTextGenericElement ;
395
+ Assert . IsNotNull ( cellElement ) ;
396
+
397
+ AssertTestParagraph ( cellElement ) ;
398
+ }
399
+
400
+ [ TestCase ( 1 , "\n " ) ]
401
+ [ TestCase ( 2 , "\n " ) ]
402
+ [ TestCase ( 1 , "\r " ) ]
403
+ [ TestCase ( 2 , "\r " ) ]
404
+ [ TestCase ( 1 , "\r \n " ) ]
405
+ [ TestCase ( 2 , "\r \n " ) ]
406
+ public void ParseElement_RemovesNewLinesAroundHtmlContentElements ( int numberOfNewLineCharacters , string newlineCharacter )
407
+ {
408
+ var parser = CreateRichTextElementParser ( ) ;
409
+
410
+ var newLineSeparator = string . Concat ( Enumerable . Repeat ( newlineCharacter , numberOfNewLineCharacters ) ) ;
411
+ var element = parser . Parse ( $ "<div><p>{ TestParagraph } </p>{ newLineSeparator } <p></p>{ newLineSeparator } <p> </p>{ newLineSeparator } <p>{ TestParagraph } </p></div>", RichTextBlockModel . Empty ) as RichTextRootElement ;
412
+ Assert . IsNotNull ( element ) ;
413
+ var divElement = element . Elements . Single ( ) as RichTextGenericElement ;
414
+ Assert . IsNotNull ( divElement ) ;
415
+
416
+ var paragraphELements = divElement . Elements ;
417
+ Assert . AreEqual ( 4 , paragraphELements . Count ( ) ) ;
418
+
419
+ AssertTestParagraph ( paragraphELements . First ( ) as RichTextGenericElement ) ;
420
+ AssertTestParagraph ( paragraphELements . Last ( ) as RichTextGenericElement ) ;
421
+ }
422
+
423
+ private static void AssertTestParagraph ( RichTextGenericElement paragraphElement )
424
+ {
370
425
var childElements = paragraphElement . Elements . ToArray ( ) ;
371
426
Assert . AreEqual ( 7 , childElements . Length ) ;
372
427
0 commit comments