@@ -3,6 +3,7 @@ var assert = common.assert;
33var FormData = require ( common . dir . lib + '/form_data' ) ;
44var fake = require ( 'fake' ) . create ( ) ;
55var fs = require ( 'fs' ) ;
6+ var Readable = require ( 'stream' ) . Readable ;
67
78( function testEmptyForm ( ) {
89 var form = new FormData ( ) ;
@@ -89,3 +90,40 @@ var fs = require('fs');
8990 fake . expectAnytime ( callback , [ null , expectedLength ] ) ;
9091 form . getLength ( callback ) ;
9192} ) ( ) ;
93+
94+ ( function testReadableStreamData ( ) {
95+ var form = new FormData ( ) ;
96+ // var expectedLength = 0;
97+
98+ var util = require ( 'util' ) ;
99+ util . inherits ( CustomReadable , Readable ) ;
100+
101+ /**
102+ * Custion readable constructor
103+ * @param {Object } opt options
104+ * @constructor
105+ */
106+ function CustomReadable ( opt ) {
107+ Readable . call ( this , opt ) ;
108+ this . _max = 2 ;
109+ this . _index = 1 ;
110+ }
111+
112+ CustomReadable . prototype . _read = function ( ) {
113+ var i = this . _index ++ ;
114+ if ( i > this . _max ) {
115+ this . push ( null ) ;
116+ } else {
117+ this . push ( '' + i ) ;
118+ }
119+ } ;
120+ form . append ( 'my_txt' , new CustomReadable ( ) ) ;
121+
122+ // expectedLength += form._overheadLength + form._lastBoundary().length;
123+
124+ // there is no way to determine the length of this readable stream.
125+ var callback = fake . callback ( arguments . callee . name + '-getLength' ) ;
126+ fake . expectAnytime ( callback , [ 'Unknown stream' , undefined ] ) ;
127+ form . getLength ( function ( err , len ) { callback ( err , len ) ; } ) ;
128+
129+ } ) ( ) ;
0 commit comments