@@ -183,8 +183,62 @@ pub fn uncompress(src: &[u8]) -> Option<Vec<u8>> {
183183}
184184```
185185
186- For reference, the examples used here are also available as a [ library on
187- GitHub] ( https://github.com/thestinger/rust-snappy ) .
186+ Then, we can add some tests to show how to use them.
187+
188+ ``` rust
189+ # #![feature(libc)]
190+ # extern crate libc;
191+ # use libc :: {c_int, size_t};
192+ # unsafe fn snappy_compress (input : * const u8 ,
193+ # input_length : size_t ,
194+ # compressed : * mut u8 ,
195+ # compressed_length : * mut size_t )
196+ # -> c_int { 0 }
197+ # unsafe fn snappy_uncompress (compressed : * const u8 ,
198+ # compressed_length : size_t ,
199+ # uncompressed : * mut u8 ,
200+ # uncompressed_length : * mut size_t )
201+ # -> c_int { 0 }
202+ # unsafe fn snappy_max_compressed_length (source_length : size_t ) -> size_t { 0 }
203+ # unsafe fn snappy_uncompressed_length (compressed : * const u8 ,
204+ # compressed_length : size_t ,
205+ # result : * mut size_t )
206+ # -> c_int { 0 }
207+ # unsafe fn snappy_validate_compressed_buffer (compressed : * const u8 ,
208+ # compressed_length : size_t )
209+ # -> c_int { 0 }
210+ # fn main () { }
211+
212+ #[cfg(test)]
213+ mod tests {
214+ use super :: * ;
215+
216+ #[test]
217+ fn valid () {
218+ let d = vec! [0xde , 0xad , 0xd0 , 0x0d ];
219+ let c : & [u8 ] = & compress (& d );
220+ assert! (validate_compressed_buffer (c ));
221+ assert! (uncompress (c ) == Some (d ));
222+ }
223+
224+ #[test]
225+ fn invalid () {
226+ let d = vec! [0 , 0 , 0 , 0 ];
227+ assert! (! validate_compressed_buffer (& d ));
228+ assert! (uncompress (& d ). is_none ());
229+ }
230+
231+ #[test]
232+ fn empty () {
233+ let d = vec! [];
234+ assert! (! validate_compressed_buffer (& d ));
235+ assert! (uncompress (& d ). is_none ());
236+ let c = compress (& d );
237+ assert! (validate_compressed_buffer (& c ));
238+ assert! (uncompress (& c ) == Some (d ));
239+ }
240+ }
241+ ```
188242
189243# Destructors
190244
0 commit comments