24
24
// THE SOFTWARE.
25
25
//
26
26
27
+ using System . IO ;
27
28
using System . Text ;
29
+ using System . Buffers ;
28
30
29
31
using MimeKit ;
30
32
using MimeKit . Utils ;
@@ -523,16 +525,16 @@ public async Task TestTranscodingAsync ()
523
525
}
524
526
}
525
527
526
- [ TestCase ( "content" , TestName = "TestWriteToNoNewLine " ) ]
527
- [ TestCase ( "content\r \n " , TestName = "TestWriteToNewLine " ) ]
528
+ [ TestCase ( "content" , TestName = "TestWriteTo_NoNewLine " ) ]
529
+ [ TestCase ( "content\r \n " , TestName = "TestWriteTo_NewLine " ) ]
528
530
public void TestWriteTo ( string text )
529
531
{
530
532
var builder = new BodyBuilder ( ) ;
531
533
532
534
builder . Attachments . Add ( "filename" , new MemoryStream ( Encoding . UTF8 . GetBytes ( text ) ) ) ;
533
535
builder . TextBody = "This is the text body." ;
534
536
535
- var body = builder . ToMessageBody ( ) ;
537
+ using var body = builder . ToMessageBody ( ) ;
536
538
537
539
using ( var stream = new MemoryStream ( ) ) {
538
540
var options = FormatOptions . Default . Clone ( ) ;
@@ -541,7 +543,7 @@ public void TestWriteTo (string text)
541
543
body . WriteTo ( options , stream ) ;
542
544
stream . Position = 0 ;
543
545
544
- var multipart = ( Multipart ) MimeEntity . Load ( stream ) ;
546
+ using var multipart = ( Multipart ) MimeEntity . Load ( stream ) ;
545
547
using ( var input = ( ( MimePart ) multipart [ 1 ] ) . Content . Open ( ) ) {
546
548
var buffer = new byte [ 1024 ] ;
547
549
int n ;
@@ -555,16 +557,16 @@ public void TestWriteTo (string text)
555
557
}
556
558
}
557
559
558
- [ TestCase ( "content" , TestName = "TestWriteToNoNewLine " ) ]
559
- [ TestCase ( "content\r \n " , TestName = "TestWriteToNewLine " ) ]
560
+ [ TestCase ( "content" , TestName = "TestWriteToAsync_NoNewLine " ) ]
561
+ [ TestCase ( "content\r \n " , TestName = "TestWriteToAsync_NewLine " ) ]
560
562
public async Task TestWriteToAsync ( string text )
561
563
{
562
564
var builder = new BodyBuilder ( ) ;
563
565
564
566
builder . Attachments . Add ( "filename" , new MemoryStream ( Encoding . UTF8 . GetBytes ( text ) ) ) ;
565
567
builder . TextBody = "This is the text body." ;
566
568
567
- var body = builder . ToMessageBody ( ) ;
569
+ using var body = builder . ToMessageBody ( ) ;
568
570
569
571
using ( var stream = new MemoryStream ( ) ) {
570
572
var options = FormatOptions . Default . Clone ( ) ;
@@ -573,7 +575,7 @@ public async Task TestWriteToAsync (string text)
573
575
await body . WriteToAsync ( options , stream ) ;
574
576
stream . Position = 0 ;
575
577
576
- var multipart = ( Multipart ) await MimeEntity . LoadAsync ( stream ) ;
578
+ using var multipart = ( Multipart ) await MimeEntity . LoadAsync ( stream ) ;
577
579
using ( var input = ( ( MimePart ) multipart [ 1 ] ) . Content . Open ( ) ) {
578
580
var buffer = new byte [ 1024 ] ;
579
581
int n ;
@@ -587,6 +589,62 @@ public async Task TestWriteToAsync (string text)
587
589
}
588
590
}
589
591
592
+ [ TestCase ( "content" , TestName = "TestWriteToFile_NoNewLine" ) ]
593
+ [ TestCase ( "content\r \n " , TestName = "TestWriteToFile_NewLine" ) ]
594
+ public void TestWriteToFile ( string text )
595
+ {
596
+ var fileName = Path . GetTempFileName ( ) ;
597
+ using var body = new TextPart ( "plain" ) {
598
+ Text = text
599
+ } ;
600
+
601
+ try {
602
+ var options = FormatOptions . Default . Clone ( ) ;
603
+ options . NewLineFormat = NewLineFormat . Dos ;
604
+
605
+ body . WriteTo ( options , fileName ) ;
606
+
607
+ using ( var loaded = ( TextPart ) MimeEntity . Load ( fileName ) )
608
+ Assert . That ( loaded . Text , Is . EqualTo ( text ) ) ;
609
+
610
+ options . NewLineFormat = NewLineFormat . Unix ;
611
+ body . WriteTo ( options , fileName ) ;
612
+
613
+ using ( var loaded = ( TextPart ) MimeEntity . Load ( fileName ) )
614
+ Assert . That ( loaded . Text , Is . EqualTo ( text ) ) ;
615
+ } finally {
616
+ File . Delete ( fileName ) ;
617
+ }
618
+ }
619
+
620
+ [ TestCase ( "content" , TestName = "TestWriteToFileAsync_NoNewLine" ) ]
621
+ [ TestCase ( "content\r \n " , TestName = "TestWriteToFileAsync_NewLine" ) ]
622
+ public async Task TestWriteToFileAsync ( string text )
623
+ {
624
+ var fileName = Path . GetTempFileName ( ) ;
625
+ using var body = new TextPart ( "plain" ) {
626
+ Text = text
627
+ } ;
628
+
629
+ try {
630
+ var options = FormatOptions . Default . Clone ( ) ;
631
+ options . NewLineFormat = NewLineFormat . Dos ;
632
+
633
+ await body . WriteToAsync ( options , fileName ) ;
634
+
635
+ using ( var loaded = ( TextPart ) await MimeEntity . LoadAsync ( fileName ) )
636
+ Assert . That ( loaded . Text , Is . EqualTo ( text ) ) ;
637
+
638
+ options . NewLineFormat = NewLineFormat . Unix ;
639
+ await body . WriteToAsync ( options , fileName ) ;
640
+
641
+ using ( var loaded = ( TextPart ) await MimeEntity . LoadAsync ( fileName ) )
642
+ Assert . That ( loaded . Text , Is . EqualTo ( text ) ) ;
643
+ } finally {
644
+ File . Delete ( fileName ) ;
645
+ }
646
+ }
647
+
590
648
[ Test ]
591
649
public void TestLoadHttpWebResponse ( )
592
650
{
0 commit comments