Go to the documentation of this file.00001
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 }