@@ -14,15 +14,15 @@ void main() {
1414 group ("encoder" , () {
1515 test ("adds a header to the chunk of bytes" , () {
1616 expect (chunkedCoding.encode ([1 , 2 , 3 ]),
17- equals ([$3, $cr, $lf, 1 , 2 , 3 , $0, $cr, $lf, $cr, $lf]));
17+ equals ([$3, $cr, $lf, 1 , 2 , 3 , $cr, $lf, $ 0, $cr, $lf, $cr, $lf]));
1818 });
1919
2020 test ("uses hex for chunk size" , () {
2121 var data = new Iterable .generate (0xA7 ).toList ();
2222 expect (chunkedCoding.encode (data),
2323 equals ([$a, $7, $cr, $lf]
2424 ..addAll (data)
25- ..addAll ([$0, $cr, $lf, $cr, $lf])));
25+ ..addAll ([$cr, $lf, $ 0, $cr, $lf, $cr, $lf])));
2626 });
2727
2828 test ("just generates a footer for an empty input" , () {
@@ -41,18 +41,18 @@ void main() {
4141
4242 test ("adds headers to each chunk of bytes" , () {
4343 sink.add ([1 , 2 , 3 , 4 ]);
44- expect (results, equals ([[$4, $cr, $lf, 1 , 2 , 3 , 4 ]]));
44+ expect (results, equals ([[$4, $cr, $lf, 1 , 2 , 3 , 4 , $cr, $lf ]]));
4545
4646 sink.add ([5 , 6 , 7 ]);
4747 expect (results, equals ([
48- [$4, $cr, $lf, 1 , 2 , 3 , 4 ],
49- [$3, $cr, $lf, 5 , 6 , 7 ],
48+ [$4, $cr, $lf, 1 , 2 , 3 , 4 , $cr, $lf ],
49+ [$3, $cr, $lf, 5 , 6 , 7 , $cr, $lf ],
5050 ]));
5151
5252 sink.close ();
5353 expect (results, equals ([
54- [$4, $cr, $lf, 1 , 2 , 3 , 4 ],
55- [$3, $cr, $lf, 5 , 6 , 7 ],
54+ [$4, $cr, $lf, 1 , 2 , 3 , 4 , $cr, $lf ],
55+ [$3, $cr, $lf, 5 , 6 , 7 , $cr, $lf ],
5656 [$0, $cr, $lf, $cr, $lf],
5757 ]));
5858 });
@@ -62,15 +62,15 @@ void main() {
6262 expect (results, equals ([[]]));
6363
6464 sink.add ([1 , 2 , 3 ]);
65- expect (results, equals ([[], [$3, $cr, $lf, 1 , 2 , 3 ]]));
65+ expect (results, equals ([[], [$3, $cr, $lf, 1 , 2 , 3 , $cr, $lf ]]));
6666
6767 sink.add ([]);
68- expect (results, equals ([[], [$3, $cr, $lf, 1 , 2 , 3 ], []]));
68+ expect (results, equals ([[], [$3, $cr, $lf, 1 , 2 , 3 , $cr, $lf ], []]));
6969
7070 sink.close ();
7171 expect (results, equals ([
7272 [],
73- [$3, $cr, $lf, 1 , 2 , 3 ],
73+ [$3, $cr, $lf, 1 , 2 , 3 , $cr, $lf ],
7474 [],
7575 [$0, $cr, $lf, $cr, $lf],
7676 ]));
@@ -79,7 +79,7 @@ void main() {
7979 group ("addSlice()" , () {
8080 test ("adds bytes from the specified slice" , () {
8181 sink.addSlice ([1 , 2 , 3 , 4 , 5 ], 1 , 4 , false );
82- expect (results, equals ([[$3, $cr, $lf, 2 , 3 , 4 ]]));
82+ expect (results, equals ([[$3, $cr, $lf, 2 , 3 , 4 , $cr, $lf ]]));
8383 });
8484
8585 test ("doesn't add a header if the slice is empty" , () {
@@ -89,8 +89,8 @@ void main() {
8989
9090 test ("adds a footer if isLast is true" , () {
9191 sink.addSlice ([1 , 2 , 3 , 4 , 5 ], 1 , 4 , true );
92- expect (results,
93- equals ( [[$3, $cr, $lf, 2 , 3 , 4 , $0, $cr, $lf, $cr, $lf]]));
92+ expect (results, equals (
93+ [[$3, $cr, $lf, 2 , 3 , 4 , $cr, $lf , $0, $cr, $lf, $cr, $lf]]));
9494
9595 // Setting isLast shuld close the sink.
9696 expect (() => sink.add ([]), throwsStateError);
@@ -119,8 +119,8 @@ void main() {
119119 group ("decoder" , () {
120120 test ("parses chunked data" , () {
121121 expect (chunkedCoding.decode ([
122- $3, $cr, $lf, 1 , 2 , 3 ,
123- $4, $cr, $lf, 4 , 5 , 6 , 7 ,
122+ $3, $cr, $lf, 1 , 2 , 3 , $cr, $lf,
123+ $4, $cr, $lf, 4 , 5 , 6 , 7 , $cr, $lf,
124124 $0, $cr, $lf, $cr, $lf,
125125 ]), equals ([1 , 2 , 3 , 4 , 5 , 6 , 7 ]));
126126 });
@@ -130,7 +130,7 @@ void main() {
130130 expect (
131131 chunkedCoding.decode ([$a, $7, $cr, $lf]
132132 ..addAll (data)
133- ..addAll ([$0, $cr, $lf, $cr, $lf])),
133+ ..addAll ([$cr, $lf, $ 0, $cr, $lf, $cr, $lf])),
134134 equals (data));
135135 });
136136
@@ -139,7 +139,7 @@ void main() {
139139 expect (
140140 chunkedCoding.decode ([$A , $7, $cr, $lf]
141141 ..addAll (data)
142- ..addAll ([$0, $cr, $lf, $cr, $lf])),
142+ ..addAll ([$cr, $lf, $ 0, $cr, $lf, $cr, $lf])),
143143 equals (data));
144144 });
145145
@@ -170,11 +170,21 @@ void main() {
170170 throwsFormatException);
171171 });
172172
173- test ("that ends at a chunk boundary " , () {
173+ test ("that ends after a chunk's bytes " , () {
174174 expect (() => chunkedCoding.decode ([$1, $cr, $lf, 1 ]),
175175 throwsFormatException);
176176 });
177177
178+ test ("that ends after a chunk's CR" , () {
179+ expect (() => chunkedCoding.decode ([$1, $cr, $lf, 1 , $cr]),
180+ throwsFormatException);
181+ });
182+
183+ test ("that ends atfter a chunk's LF" , () {
184+ expect (() => chunkedCoding.decode ([$1, $cr, $lf, 1 , $cr, $lf]),
185+ throwsFormatException);
186+ });
187+
178188 test ("that ends after the empty chunk" , () {
179189 expect (() => chunkedCoding.decode ([$0, $cr, $lf]),
180190 throwsFormatException);
@@ -208,10 +218,10 @@ void main() {
208218 });
209219
210220 test ("decodes each chunk of bytes" , () {
211- sink.add ([$4, $cr, $lf, 1 , 2 , 3 , 4 ]);
221+ sink.add ([$4, $cr, $lf, 1 , 2 , 3 , 4 , $cr, $lf ]);
212222 expect (results, equals ([[1 , 2 , 3 , 4 ]]));
213223
214- sink.add ([$3, $cr, $lf, 5 , 6 , 7 ]);
224+ sink.add ([$3, $cr, $lf, 5 , 6 , 7 , $cr, $lf ]);
215225 expect (results, equals ([[1 , 2 , 3 , 4 ], [5 , 6 , 7 ]]));
216226
217227 sink.add ([$0, $cr, $lf, $cr, $lf]);
@@ -223,7 +233,7 @@ void main() {
223233 sink.add ([]);
224234 expect (results, isEmpty);
225235
226- sink.add ([$3, $cr, $lf, 1 , 2 , 3 ]);
236+ sink.add ([$3, $cr, $lf, 1 , 2 , 3 , $cr, $lf ]);
227237 expect (results, equals ([[1 , 2 , 3 ]]));
228238
229239 sink.add ([]);
@@ -281,6 +291,30 @@ void main() {
281291 expect (results, equals ([[1 , 2 ], [3 ]]));
282292 });
283293
294+ test ("after all bytes" , () {
295+ sink.add ([$3, $cr, $lf, 1 , 2 , 3 ]);
296+ expect (results, equals ([[1 , 2 , 3 ]]));
297+
298+ sink.add ([$cr, $lf, $3, $cr, $lf, 2 , 3 , 4 , $cr, $lf]);
299+ expect (results, equals ([[1 , 2 , 3 ], [2 , 3 , 4 ]]));
300+ });
301+
302+ test ("after a post-chunk CR" , () {
303+ sink.add ([$3, $cr, $lf, 1 , 2 , 3 , $cr]);
304+ expect (results, equals ([[1 , 2 , 3 ]]));
305+
306+ sink.add ([$lf, $3, $cr, $lf, 2 , 3 , 4 , $cr, $lf]);
307+ expect (results, equals ([[1 , 2 , 3 ], [2 , 3 , 4 ]]));
308+ });
309+
310+ test ("after a post-chunk LF" , () {
311+ sink.add ([$3, $cr, $lf, 1 , 2 , 3 , $cr, $lf]);
312+ expect (results, equals ([[1 , 2 , 3 ]]));
313+
314+ sink.add ([$3, $cr, $lf, 2 , 3 , 4 , $cr, $lf]);
315+ expect (results, equals ([[1 , 2 , 3 ], [2 , 3 , 4 ]]));
316+ });
317+
284318 test ("after empty chunk size" , () {
285319 sink.add ([$0]);
286320 expect (results, isEmpty);
0 commit comments