@@ -46,6 +46,96 @@ fn get_smoke() {
4646 t ! ( handle. perform( ) ) ;
4747}
4848
49+ #[ test]
50+ fn download_zero_size ( ) {
51+ let s = Server :: new ( ) ;
52+ s. receive (
53+ "\
54+ GET / HTTP/1.1\r \n \
55+ Host: 127.0.0.1:$PORT\r \n \
56+ Accept: */*\r \n \
57+ \r \n ",
58+ ) ;
59+ s. send ( "HTTP/1.1 200 OK\r \n \r \n " ) ;
60+
61+ let mut handle = handle ( ) ;
62+ t ! ( handle. url( & s. url( "/" ) ) ) ;
63+ t ! ( handle. perform( ) ) ;
64+ assert_eq ! ( handle. download_size( ) . unwrap( ) , 0_f64 ) ;
65+ }
66+
67+ #[ test]
68+ fn download_nonzero_size ( ) {
69+ let s = Server :: new ( ) ;
70+ s. receive (
71+ "\
72+ GET / HTTP/1.1\r \n \
73+ Host: 127.0.0.1:$PORT\r \n \
74+ Accept: */*\r \n \
75+ \r \n ",
76+ ) ;
77+ s. send ( "HTTP/1.1 200 OK\r \n \r \n Hello!" ) ;
78+
79+ let mut handle = handle ( ) ;
80+ t ! ( handle. url( & s. url( "/" ) ) ) ;
81+ t ! ( handle. perform( ) ) ;
82+ assert_eq ! ( handle. download_size( ) . unwrap( ) , 6_f64 ) ;
83+ }
84+
85+ #[ test]
86+ fn upload_zero_size ( ) {
87+ let s = Server :: new ( ) ;
88+ s. receive (
89+ "\
90+ GET / HTTP/1.1\r \n \
91+ Host: 127.0.0.1:$PORT\r \n \
92+ Accept: */*\r \n \
93+ \r \n ",
94+ ) ;
95+ s. send ( "HTTP/1.1 200 OK\r \n \r \n " ) ;
96+
97+ let mut handle = handle ( ) ;
98+ t ! ( handle. url( & s. url( "/" ) ) ) ;
99+ t ! ( handle. perform( ) ) ;
100+ assert_eq ! ( handle. upload_size( ) . unwrap( ) , 0_f64 ) ;
101+ }
102+
103+ #[ test]
104+ fn upload_nonzero_size ( ) {
105+ let s = Server :: new ( ) ;
106+ s. receive (
107+ "\
108+ PUT / HTTP/1.1\r \n \
109+ Host: 127.0.0.1:$PORT\r \n \
110+ Accept: */*\r \n \
111+ Content-Length: 5\r \n \
112+ \r \n \
113+ data\n ",
114+ ) ;
115+ s. send (
116+ "\
117+ HTTP/1.1 200 OK\r \n \
118+ \r \n ",
119+ ) ;
120+
121+ let mut data = "data\n " . as_bytes ( ) ;
122+ let mut list = List :: new ( ) ;
123+ t ! ( list. append( "Expect:" ) ) ;
124+ let mut h = handle ( ) ;
125+ t ! ( h. url( & s. url( "/" ) ) ) ;
126+ t ! ( h. put( true ) ) ;
127+ t ! ( h. in_filesize( 5 ) ) ;
128+ t ! ( h. upload( true ) ) ;
129+ t ! ( h. http_headers( list) ) ;
130+ {
131+ let mut h = h. transfer ( ) ;
132+ t ! ( h. read_function( |buf| Ok ( data. read( buf) . unwrap( ) ) ) ) ;
133+ t ! ( h. perform( ) ) ;
134+ }
135+
136+ assert_eq ! ( h. upload_size( ) . unwrap( ) , 5_f64 ) ;
137+ }
138+
49139#[ test]
50140fn get_path ( ) {
51141 let s = Server :: new ( ) ;
0 commit comments