wibble
0.1.28
|
00001 // -*- C++ -*- (c) 2006 Petr Rockai <me@mornfall.net> 00002 00003 #include <wibble/consumer.h> 00004 #include <wibble/operators.h> 00005 #include <list> 00006 00007 namespace { 00008 00009 using namespace wibble::operators; 00010 using namespace wibble; 00011 00012 struct TestConsumer { 00013 Test stlInserterConsumer() { 00014 std::list<int> a; 00015 a.push_back( 10 ); 00016 a.push_back( 20 ); 00017 Range< int > r = range( a.begin(), a.end() ); 00018 std::list<int> b; 00019 assert( a != b ); 00020 Consumer< int > c = consumer( back_inserter( b ) ); 00021 std::copy( r.begin(), r.end(), c ); 00022 assert( a == b ); 00023 } 00024 00025 Test stlSetConsumer() { 00026 std::set< int > s; 00027 Consumer< int > c = consumer( s ); 00028 c.consume( 1 ); 00029 assert( *s.begin() == 1 ); 00030 assert( s.begin() + 1 == s.end() ); 00031 } 00032 00033 Test stlVectorConsumer() { 00034 std::vector< int > v; 00035 Consumer< int > c = consumer( v ); 00036 c.consume( 2 ); 00037 c.consume( 1 ); 00038 assert( *v.begin() == 2 ); 00039 assert( *(v.begin() + 1) == 1 ); 00040 assert( (v.begin() + 2) == v.end() ); 00041 } 00042 00043 }; 00044 00045 }