7
7
using System . Text ;
8
8
using System . Threading . Tasks ;
9
9
using Microsoft . AspNet . Testing ;
10
+ using Moq ;
10
11
using Xunit ;
11
12
12
13
namespace Microsoft . AspNet . Mvc . Razor . Test
@@ -19,7 +20,7 @@ public void Write_WritesDataTypes_ToBuffer()
19
20
{
20
21
// Arrange
21
22
var expected = new [ ] { "True" , "3" , "18446744073709551615" , "Hello world" , "3.14" , "2.718" , "m" } ;
22
- var writer = new RazorTextWriter ( Encoding . UTF8 ) ;
23
+ var writer = new RazorTextWriter ( TextWriter . Null , Encoding . UTF8 ) ;
23
24
24
25
// Act
25
26
writer . Write ( true ) ;
@@ -34,14 +35,81 @@ public void Write_WritesDataTypes_ToBuffer()
34
35
Assert . Equal < object > ( expected , writer . Buffer . BufferEntries ) ;
35
36
}
36
37
38
+ [ Fact ]
39
+ [ ReplaceCulture ]
40
+ public void Write_WritesDataTypes_ToUnderlyingStream_WhenNotBuffering ( )
41
+ {
42
+ // Arrange
43
+ var expected = new [ ] { "True" , "3" , "18446744073709551615" , "Hello world" , "3.14" , "2.718" } ;
44
+ var unbufferedWriter = new Mock < TextWriter > ( ) ;
45
+ var writer = new RazorTextWriter ( unbufferedWriter . Object , Encoding . UTF8 ) ;
46
+ var testClass = new TestClass ( ) ;
47
+
48
+ // Act
49
+ writer . Flush ( ) ;
50
+ writer . Write ( true ) ;
51
+ writer . Write ( 3 ) ;
52
+ writer . Write ( ulong . MaxValue ) ;
53
+ writer . Write ( testClass ) ;
54
+ writer . Write ( 3.14 ) ;
55
+ writer . Write ( 2.718m ) ;
56
+
57
+ // Assert
58
+ Assert . Empty ( writer . Buffer . BufferEntries ) ;
59
+ foreach ( var item in expected )
60
+ {
61
+ unbufferedWriter . Verify ( v => v . Write ( item ) , Times . Once ( ) ) ;
62
+ }
63
+ }
64
+
65
+ [ Fact ]
66
+ [ ReplaceCulture ]
67
+ public void Write_WritesCharValues_ToUnderlyingStream_WhenNotBuffering ( )
68
+ {
69
+ // Arrange
70
+ var unbufferedWriter = new Mock < TextWriter > { CallBase = true } ;
71
+ var writer = new RazorTextWriter ( unbufferedWriter . Object , Encoding . UTF8 ) ;
72
+ var buffer = new [ ] { 'a' , 'b' , 'c' } ;
73
+
74
+ // Act
75
+ writer . Flush ( ) ;
76
+ writer . Write ( 'a' ) ;
77
+ writer . Write ( buffer , 1 , 2 ) ;
78
+
79
+ // Assert
80
+ Assert . Empty ( writer . Buffer . BufferEntries ) ;
81
+ unbufferedWriter . Verify ( v => v . Write ( 'a' ) , Times . Once ( ) ) ;
82
+ unbufferedWriter . Verify ( v => v . Write ( buffer , 1 , 2 ) , Times . Once ( ) ) ;
83
+ }
84
+
85
+ [ Fact ]
86
+ [ ReplaceCulture ]
87
+ public async Task Write_WritesStringValues_ToUnbufferedStream_WhenNotBuffering ( )
88
+ {
89
+ // Arrange
90
+ var unbufferedWriter = new Mock < TextWriter > ( ) ;
91
+ var writer = new RazorTextWriter ( unbufferedWriter . Object , Encoding . UTF8 ) ;
92
+ var buffer = new [ ] { 'a' , 'b' , 'c' } ;
93
+
94
+ // Act
95
+ await writer . FlushAsync ( ) ;
96
+ writer . Write ( "a" ) ;
97
+ writer . WriteLine ( "ab" ) ;
98
+
99
+ // Assert
100
+ Assert . Empty ( writer . Buffer . BufferEntries ) ;
101
+ unbufferedWriter . Verify ( v => v . WriteLine ( "a" ) , Times . Once ( ) ) ;
102
+ unbufferedWriter . Verify ( v => v . WriteLine ( "ab" ) , Times . Once ( ) ) ;
103
+ }
104
+
37
105
[ Fact ]
38
106
[ ReplaceCulture ]
39
107
public void WriteLine_WritesDataTypes_ToBuffer ( )
40
108
{
41
109
// Arrange
42
110
var newLine = Environment . NewLine ;
43
111
var expected = new List < object > { "False" , newLine , "1.1" , newLine , "3" , newLine } ;
44
- var writer = new RazorTextWriter ( Encoding . UTF8 ) ;
112
+ var writer = new RazorTextWriter ( TextWriter . Null , Encoding . UTF8 ) ;
45
113
46
114
// Act
47
115
writer . WriteLine ( false ) ;
@@ -52,14 +120,36 @@ public void WriteLine_WritesDataTypes_ToBuffer()
52
120
Assert . Equal ( expected , writer . Buffer . BufferEntries ) ;
53
121
}
54
122
123
+ [ Fact ]
124
+ [ ReplaceCulture ]
125
+ public void WriteLine_WritesDataTypes_ToUnbufferedStream_WhenNotBuffering ( )
126
+ {
127
+ // Arrange
128
+ var unbufferedWriter = new Mock < TextWriter > ( ) ;
129
+ var writer = new RazorTextWriter ( unbufferedWriter . Object , Encoding . UTF8 ) ;
130
+
131
+ // Act
132
+ writer . Flush ( ) ;
133
+ writer . WriteLine ( false ) ;
134
+ writer . WriteLine ( 1.1f ) ;
135
+ writer . WriteLine ( 3L ) ;
136
+
137
+ // Assert
138
+ Assert . Empty ( writer . Buffer . BufferEntries ) ;
139
+ unbufferedWriter . Verify ( v => v . Write ( "False" ) , Times . Once ( ) ) ;
140
+ unbufferedWriter . Verify ( v => v . Write ( 1.1f ) , Times . Once ( ) ) ;
141
+ unbufferedWriter . Verify ( v => v . Write ( 3L ) , Times . Once ( ) ) ;
142
+ unbufferedWriter . Verify ( v => v . WriteLine ( ) , Times . Exactly ( 3 ) ) ;
143
+ }
144
+
55
145
[ Fact ]
56
146
public async Task Write_WritesCharBuffer ( )
57
147
{
58
148
// Arrange
59
149
var input1 = new ArraySegment < char > ( new char [ ] { 'a' , 'b' , 'c' , 'd' } , 1 , 3 ) ;
60
150
var input2 = new ArraySegment < char > ( new char [ ] { 'e' , 'f' } , 0 , 2 ) ;
61
151
var input3 = new ArraySegment < char > ( new char [ ] { 'g' , 'h' , 'i' , 'j' } , 3 , 1 ) ;
62
- var writer = new RazorTextWriter ( Encoding . UTF8 ) ;
152
+ var writer = new RazorTextWriter ( TextWriter . Null , Encoding . UTF8 ) ;
63
153
64
154
// Act
65
155
writer . Write ( input1 . Array , input1 . Offset , input1 . Count ) ;
@@ -80,7 +170,7 @@ public async Task WriteLines_WritesCharBuffer()
80
170
{
81
171
// Arrange
82
172
var newLine = Environment . NewLine ;
83
- var writer = new RazorTextWriter ( Encoding . UTF8 ) ;
173
+ var writer = new RazorTextWriter ( TextWriter . Null , Encoding . UTF8 ) ;
84
174
85
175
// Act
86
176
writer . WriteLine ( ) ;
@@ -100,7 +190,7 @@ public async Task Write_WritesStringBuffer()
100
190
var input2 = "from" ;
101
191
var input3 = "ASP" ;
102
192
var input4 = ".Net" ;
103
- var writer = new RazorTextWriter ( Encoding . UTF8 ) ;
193
+ var writer = new RazorTextWriter ( TextWriter . Null , Encoding . UTF8 ) ;
104
194
105
195
// Act
106
196
writer . Write ( input1 ) ;
@@ -117,8 +207,8 @@ public async Task Write_WritesStringBuffer()
117
207
public void Copy_CopiesContent_IfTargetTextWriterIsARazorTextWriter ( )
118
208
{
119
209
// Arrange
120
- var source = new RazorTextWriter ( Encoding . UTF8 ) ;
121
- var target = new RazorTextWriter ( Encoding . UTF8 ) ;
210
+ var source = new RazorTextWriter ( TextWriter . Null , Encoding . UTF8 ) ;
211
+ var target = new RazorTextWriter ( TextWriter . Null , Encoding . UTF8 ) ;
122
212
123
213
// Act
124
214
source . Write ( "Hello world" ) ;
@@ -136,7 +226,7 @@ public void Copy_CopiesContent_IfTargetTextWriterIsARazorTextWriter()
136
226
public void Copy_WritesContent_IfTargetTextWriterIsNotARazorTextWriter ( )
137
227
{
138
228
// Arrange
139
- var source = new RazorTextWriter ( Encoding . UTF8 ) ;
229
+ var source = new RazorTextWriter ( TextWriter . Null , Encoding . UTF8 ) ;
140
230
var target = new StringWriter ( ) ;
141
231
var expected = @"Hello world
142
232
abc" ;
@@ -154,8 +244,8 @@ public void Copy_WritesContent_IfTargetTextWriterIsNotARazorTextWriter()
154
244
public async Task CopyAsync_WritesContent_IfTargetTextWriterIsARazorTextWriter ( )
155
245
{
156
246
// Arrange
157
- var source = new RazorTextWriter ( Encoding . UTF8 ) ;
158
- var target = new RazorTextWriter ( Encoding . UTF8 ) ;
247
+ var source = new RazorTextWriter ( TextWriter . Null , Encoding . UTF8 ) ;
248
+ var target = new RazorTextWriter ( TextWriter . Null , Encoding . UTF8 ) ;
159
249
160
250
// Act
161
251
source . WriteLine ( "Hello world" ) ;
@@ -172,7 +262,7 @@ public async Task CopyAsync_WritesContent_IfTargetTextWriterIsARazorTextWriter()
172
262
public async Task CopyAsync_WritesContent_IfTargetTextWriterIsNotARazorTextWriter ( )
173
263
{
174
264
// Arrange
175
- var source = new RazorTextWriter ( Encoding . UTF8 ) ;
265
+ var source = new RazorTextWriter ( TextWriter . Null , Encoding . UTF8 ) ;
176
266
var target = new StringWriter ( ) ;
177
267
var expected = @"Hello world
178
268
" ;
0 commit comments