@@ -514,7 +514,7 @@ public void WithRtl_ReturnsBidi(string dir, bool? expectedValue)
514
514
}
515
515
516
516
[ Test ]
517
- public void NestedNumberList_ReturnsIncrementalIdentation ( )
517
+ public void NestedNumberList_ReturnsIncrementalIndentation ( )
518
518
{
519
519
const int maxLevel = 8 ;
520
520
var sb = new System . Text . StringBuilder ( ) ;
@@ -541,5 +541,45 @@ public void NestedNumberList_ReturnsIncrementalIdentation()
541
541
TestContext . Out . WriteLine ( $ "{ i } . { ident ? . Left ? . Value } ") ;
542
542
}
543
543
}
544
+
545
+ [ Test ( Description = "Nested list must be a children of a `li` tag but some editor are not respecting the W3C standard (issue #173)" ) ]
546
+ public async Task NestedNumberList_NonCompliant_ReturnsIncrementalIndentation ( )
547
+ {
548
+ await converter . ParseBody ( @"<ol>
549
+ <li>Item1</li>
550
+ <li>Item2</li>
551
+ <ol><li>Item 2.1</li></ol>
552
+ </ol>" ) ;
553
+
554
+ var absNum = mainPart . NumberingDefinitionsPart ? . Numbering
555
+ . Elements < AbstractNum > ( )
556
+ . SingleOrDefault ( ) ;
557
+ Assert . That ( absNum , Is . Not . Null ) ;
558
+
559
+ var inst = mainPart . NumberingDefinitionsPart ? . Numbering
560
+ . Elements < NumberingInstance > ( ) . Where ( i => i . AbstractNumId ? . Val == absNum . AbstractNumberId )
561
+ . SingleOrDefault ( ) ;
562
+ Assert . That ( inst , Is . Not . Null ) ;
563
+ Assert . That ( inst . NumberID ? . Value , Is . Not . Null ) ;
564
+
565
+ var elements = mainPart . Document . Body ! . ChildElements ;
566
+ Assert . Multiple ( ( ) => {
567
+ Assert . That ( elements , Has . Count . EqualTo ( 3 ) ) ;
568
+ Assert . That ( elements , Is . All . TypeOf < Paragraph > ( ) ) ;
569
+ Assert . That ( mainPart . NumberingDefinitionsPart ? . Numbering , Is . Not . Null ) ;
570
+ } ) ;
571
+
572
+ // assert paragraphs linked to numbering instance
573
+ Assert . Multiple ( ( ) =>
574
+ {
575
+ Assert . That ( elements . Cast < Paragraph > ( ) . Select ( e =>
576
+ e . ParagraphProperties ? . NumberingProperties ? . NumberingId ? . Val ? . Value ) ,
577
+ Has . All . EqualTo ( inst . NumberID . Value ) ,
578
+ "All paragraphs are linked to the same list instance" ) ;
579
+ Assert . That ( elements . Take ( 2 ) . Select ( p => p . GetFirstChild < ParagraphProperties > ( ) ? . NumberingProperties ? . NumberingLevelReference ? . Val ? . Value ) , Has . All . EqualTo ( 0 ) ) ;
580
+ Assert . That ( elements . Last ( ) . GetFirstChild < ParagraphProperties > ( ) ? . NumberingProperties ? . NumberingLevelReference ? . Val ? . Value , Is . EqualTo ( 1 ) ) ;
581
+ } ) ;
582
+ AssertThatOpenXmlDocumentIsValid ( ) ;
583
+ }
544
584
}
545
585
}
0 commit comments