@@ -399,8 +399,7 @@ public void PartReaderIgnoreWhitespaceTest(bool ignoreWhitespace)
399
399
"</w:body>" +
400
400
"</w:document>" ;
401
401
402
- UTF8Encoding utf8Encoding = new UTF8Encoding ( ) ;
403
- using var stream = new MemoryStream ( utf8Encoding . GetBytes ( PartText ) , false ) ;
402
+ using var stream = new MemoryStream ( Encoding . UTF8 . GetBytes ( PartText ) , false ) ;
404
403
405
404
using var reader = OpenXmlReader . Create ( stream , false , ignoreWhitespace ) ;
406
405
Assert . False ( reader . EOF ) ;
@@ -439,24 +438,48 @@ public void TestIgnoreWhitespaceWithFormattedXml(bool ignoreWhitespace) {
439
438
<w:r>
440
439
<w:t>First Text</w:t>
441
440
</w:r>
442
- <w:r>
443
- <w:t>Second Text</w:t>
444
- </w:r>
445
441
</w:p>
446
442
</w:body>
447
443
</w:document>" ;
448
444
449
- UTF8Encoding utf8Encoding = new UTF8Encoding ( ) ;
450
- var exception = Record . Exception ( ( ) => {
451
- using var stream = new MemoryStream ( utf8Encoding . GetBytes ( PartText ) , false ) ;
452
- using var reader = OpenXmlReader . Create ( stream , false , ignoreWhitespace ) ;
453
- while ( reader . Read ( ) ) {
454
- }
445
+ using var stream = new MemoryStream ( Encoding . UTF8 . GetBytes ( PartText ) , false ) ;
446
+ using var reader = OpenXmlReader . Create ( stream , false , ignoreWhitespace ) ;
447
+ Assert . True ( reader . Read ( ) ) ;
448
+ Assert . False ( reader . EOF ) ;
449
+ Assert . Equal ( typeof ( Document ) , reader . ElementType ) ;
450
+ Assert . True ( reader . IsStartElement ) ;
451
+ Assert . True ( reader . Read ( ) ) ;
452
+ Assert . Equal ( typeof ( Body ) , reader . ElementType ) ;
453
+ Assert . True ( reader . IsStartElement ) ;
454
+ Assert . True ( reader . Read ( ) ) ;
455
+ Assert . Equal ( typeof ( Paragraph ) , reader . ElementType ) ;
456
+ Assert . True ( reader . IsStartElement ) ;
457
+ Assert . True ( reader . Read ( ) ) ;
458
+ Assert . Equal ( typeof ( Run ) , reader . ElementType ) ;
459
+ Assert . True ( reader . IsStartElement ) ;
460
+ Assert . True ( reader . Read ( ) ) ;
461
+ Assert . Equal ( typeof ( Text ) , reader . ElementType ) ;
462
+ Assert . True ( reader . IsStartElement ) ;
463
+ Assert . True ( reader . Read ( ) ) ;
464
+ Assert . Equal ( typeof ( Text ) , reader . ElementType ) ;
465
+ Assert . True ( reader . IsEndElement ) ;
466
+ Assert . True ( reader . Read ( ) ) ;
467
+ Assert . Equal ( typeof ( Run ) , reader . ElementType ) ;
468
+ Assert . True ( reader . IsEndElement ) ;
469
+ Assert . True ( reader . Read ( ) ) ;
470
+ Assert . Equal ( typeof ( Paragraph ) , reader . ElementType ) ;
471
+ Assert . True ( reader . IsEndElement ) ;
472
+ Assert . True ( reader . Read ( ) ) ;
473
+ Assert . Equal ( typeof ( Body ) , reader . ElementType ) ;
474
+ Assert . True ( reader . IsEndElement ) ;
475
+ Assert . True ( reader . Read ( ) ) ;
476
+ Assert . Equal ( typeof ( Document ) , reader . ElementType ) ;
477
+ Assert . True ( reader . IsEndElement ) ;
478
+ Assert . False ( reader . Read ( ) ) ;
479
+ Assert . True ( reader . EOF ) ;
455
480
456
- reader . Close ( ) ;
457
- } ) ;
458
- Assert . Null ( exception ) ;
459
- }
481
+ reader . Close ( ) ;
482
+ }
460
483
461
484
/// <summary>
462
485
/// Test that the OpenXmlReader can handle a whitespace after the last element.
@@ -473,16 +496,72 @@ public void TestIgnoreWhitespaceWhitespaceAfterLastElement(bool ignoreWhitespace
473
496
</w:body>
474
497
</w:document> " ;
475
498
476
- UTF8Encoding utf8Encoding = new UTF8Encoding ( ) ;
477
- var exception = Record . Exception ( ( ) => {
478
- using var stream = new MemoryStream ( utf8Encoding . GetBytes ( PartText ) , false ) ;
479
- using var reader = OpenXmlReader . Create ( stream , false , ignoreWhitespace ) ;
480
- while ( reader . Read ( ) ) {
481
- }
499
+ using var stream = new MemoryStream ( Encoding . UTF8 . GetBytes ( PartText ) , false ) ;
500
+ using var reader = OpenXmlReader . Create ( stream , false , ignoreWhitespace ) ;
501
+ Assert . True ( reader . Read ( ) ) ;
502
+ Assert . False ( reader . EOF ) ;
503
+ Assert . Equal ( typeof ( Document ) , reader . ElementType ) ;
504
+ Assert . True ( reader . IsStartElement ) ;
505
+ Assert . True ( reader . Read ( ) ) ;
506
+ Assert . Equal ( typeof ( Body ) , reader . ElementType ) ;
507
+ Assert . True ( reader . IsStartElement ) ;
508
+ Assert . True ( reader . Read ( ) ) ;
509
+ Assert . Equal ( typeof ( Paragraph ) , reader . ElementType ) ;
510
+ Assert . True ( reader . IsStartElement ) ;
511
+ Assert . True ( reader . Read ( ) ) ;
512
+ Assert . Equal ( typeof ( Paragraph ) , reader . ElementType ) ;
513
+ Assert . True ( reader . IsEndElement ) ;
514
+ Assert . True ( reader . Read ( ) ) ;
515
+ Assert . Equal ( typeof ( Body ) , reader . ElementType ) ;
516
+ Assert . True ( reader . IsEndElement ) ;
517
+ Assert . True ( reader . Read ( ) ) ;
518
+ Assert . Equal ( typeof ( Document ) , reader . ElementType ) ;
519
+ Assert . True ( reader . IsEndElement ) ;
520
+ Assert . False ( reader . Read ( ) ) ;
521
+ Assert . True ( reader . EOF ) ;
482
522
483
- reader . Close ( ) ;
484
- } ) ;
485
- Assert . Null ( exception ) ;
523
+ reader . Close ( ) ;
524
+ }
525
+
526
+ /// <summary>
527
+ /// Test that the OpenXmlReader can handle a misc node after the last element.
528
+ ///</summary>
529
+ [ Fact ]
530
+ public void TestMiscNodeAfterDocument ( ) {
531
+ const string PartText = @"
532
+ <w:document xmlns:v=""urn:schemas-microsoft-com:vml"" xmlns:w=""http://schemas.openxmlformats.org/wordprocessingml/2006/main"">
533
+ <w:body>
534
+ <w:p>
535
+ </w:p>
536
+ </w:body>
537
+ </w:document> <!--Your comment-->" ;
538
+
539
+ using var stream = new MemoryStream ( Encoding . UTF8 . GetBytes ( PartText ) , true ) ;
540
+ using var reader = OpenXmlReader . Create ( stream ) ;
541
+ Assert . True ( reader . Read ( ) ) ;
542
+ Assert . False ( reader . EOF ) ;
543
+ Assert . Equal ( typeof ( Document ) , reader . ElementType ) ;
544
+ Assert . True ( reader . IsStartElement ) ;
545
+ Assert . True ( reader . Read ( ) ) ;
546
+ Assert . Equal ( typeof ( Body ) , reader . ElementType ) ;
547
+ Assert . True ( reader . IsStartElement ) ;
548
+ Assert . True ( reader . Read ( ) ) ;
549
+ Assert . Equal ( typeof ( Paragraph ) , reader . ElementType ) ;
550
+ Assert . True ( reader . IsStartElement ) ;
551
+ Assert . True ( reader . Read ( ) ) ;
552
+ Assert . Equal ( typeof ( Paragraph ) , reader . ElementType ) ;
553
+ Assert . True ( reader . IsEndElement ) ;
554
+ Assert . True ( reader . Read ( ) ) ;
555
+ Assert . Equal ( typeof ( Body ) , reader . ElementType ) ;
556
+ Assert . True ( reader . IsEndElement ) ;
557
+ Assert . True ( reader . Read ( ) ) ;
558
+ Assert . Equal ( typeof ( Document ) , reader . ElementType ) ;
559
+ Assert . True ( reader . IsEndElement ) ;
560
+
561
+ // not reading the misc node after the end of the document
562
+ Assert . False ( reader . Read ( ) ) ;
563
+ Assert . True ( reader . EOF ) ;
564
+ reader . Close ( ) ;
486
565
}
487
566
488
567
/// <summary>
0 commit comments