@@ -70,7 +70,10 @@ public void GetEtag()
7070 var response = ( HttpWebResponse ) ex . Response ;
7171
7272 Assert . AreEqual ( response . StatusCode , HttpStatusCode . NotModified , "Status Code NotModified" ) ;
73+ return ;
7374 }
75+
76+ Assert . Fail ( "The Exception should raise" ) ;
7477 }
7578
7679 [ Test ]
@@ -120,6 +123,29 @@ public void GetMiddlePartial()
120123 }
121124 }
122125
126+ [ Test ]
127+ public void GetLastPart ( )
128+ {
129+ const int maxLength = 100 ;
130+ var request = ( HttpWebRequest ) WebRequest . Create ( Resources . ServerAddress + "/" + TestHelper . BigDataFile ) ;
131+ request . AddRange ( - maxLength ) ;
132+
133+ using ( var response = ( HttpWebResponse ) request . GetResponse ( ) )
134+ {
135+ Assert . AreEqual ( response . StatusCode , HttpStatusCode . PartialContent , "Status Code PartialCode" ) ;
136+
137+ var ms = new MemoryStream ( ) ;
138+ response . GetResponseStream ( ) . CopyTo ( ms ) ;
139+ var data = ms . ToArray ( ) ;
140+
141+ Assert . IsNotNull ( data , "Data is not empty" ) ;
142+ var subset = new byte [ maxLength ] ;
143+ var originalSet = TestHelper . GetBigData ( ) ;
144+ Buffer . BlockCopy ( originalSet , originalSet . Length - maxLength , subset , 0 , maxLength ) ;
145+ Assert . AreEqual ( subset , data ) ;
146+ }
147+ }
148+
123149 [ Test ]
124150 public void GetEntireFileWithChunks ( )
125151 {
@@ -154,6 +180,39 @@ public void GetEntireFileWithChunks()
154180 Assert . AreEqual ( originalSet , buffer ) ;
155181 }
156182
183+ [ Test ]
184+ public void GetInvalidChunk ( )
185+ {
186+ var originalSet = TestHelper . GetBigData ( ) ;
187+ var requestHead = ( HttpWebRequest ) WebRequest . Create ( Resources . ServerAddress + "/" + TestHelper . BigDataFile ) ;
188+ requestHead . Method = "HEAD" ;
189+
190+ var remoteSize = ( ( HttpWebResponse ) requestHead . GetResponse ( ) ) . ContentLength ;
191+ Assert . AreEqual ( remoteSize , originalSet . Length ) ;
192+
193+ var request = ( HttpWebRequest ) WebRequest . Create ( Resources . ServerAddress + "/" + TestHelper . BigDataFile ) ;
194+ request . AddRange ( 0 , remoteSize + 10 ) ;
195+
196+ try
197+ {
198+ request . GetResponse ( ) ;
199+ }
200+ catch ( WebException ex )
201+ {
202+ if ( ex . Response == null || ex . Status != WebExceptionStatus . ProtocolError )
203+ throw ;
204+
205+ var response = ( HttpWebResponse ) ex . Response ;
206+
207+ Assert . AreEqual ( response . StatusCode , HttpStatusCode . RequestedRangeNotSatisfiable , "Status Code RequestedRangeNotSatisfiable" ) ;
208+ Assert . AreEqual ( response . Headers [ "Content-Range" ] ,
209+ string . Format ( "bytes */{0}" , remoteSize ) ) ;
210+ return ;
211+ }
212+
213+ Assert . Fail ( "The Exception should raise" ) ;
214+ }
215+
157216 [ Test ]
158217 public void GetNotPartial ( )
159218 {
0 commit comments