@@ -351,6 +351,27 @@ mod test {
351351 use super :: * ;
352352 use io;
353353 use super :: super :: mem:: { MemReader , MemWriter } ;
354+ use Harness = extra:: test:: BenchHarness ;
355+
356+ /// A type, free to create, primarily intended for benchmarking creation of wrappers that, just
357+ /// for construction, don't need a Reader/Writer that does anything useful. Is equivalent to
358+ /// `/dev/null` in semantics.
359+ #[ deriving( Clone , Eq , Ord ) ]
360+ pub struct NullStream ;
361+
362+ impl Reader for NullStream {
363+ fn read ( & mut self , _: & mut [ u8 ] ) -> Option < uint > {
364+ None
365+ }
366+
367+ fn eof ( & mut self ) -> bool {
368+ true
369+ }
370+ }
371+
372+ impl Writer for NullStream {
373+ fn write ( & mut self , _: & [ u8 ] ) { }
374+ }
354375
355376 #[ test]
356377 fn test_buffered_reader ( ) {
@@ -470,4 +491,25 @@ mod test {
470491 writer. flush ( ) ;
471492 assert_eq ! ( * writer. inner_ref( ) . inner_ref( ) , ~[ 0 , 1 , 0 , '\n' as u8 , 1 ] ) ;
472493 }
494+
495+ #[ bench]
496+ fn bench_buffered_reader ( bh : & mut Harness ) {
497+ do bh. iter {
498+ BufferedReader :: new ( NullStream ) ;
499+ }
500+ }
501+
502+ #[ bench]
503+ fn bench_buffered_writer ( bh : & mut Harness ) {
504+ do bh. iter {
505+ BufferedWriter :: new ( NullStream ) ;
506+ }
507+ }
508+
509+ #[ bench]
510+ fn bench_buffered_stream ( bh : & mut Harness ) {
511+ do bh. iter {
512+ BufferedStream :: new ( NullStream ) ;
513+ }
514+ }
473515}
0 commit comments