Beispiel #1
0
void run_streambuf_test()
{
    StreamBuf b;
    assert(b.size() == 0);

    std::size_t q = ystreambuf::chunk_size;
    assert( size(b.prepare(q-2)) == q-2 );
    assert( size(b.prepare(1)) == 1 );
    assert( size(b.prepare(q)) == q );
    assert( size(b.prepare(q+1)) == q+1 );

    assert( size(b.data()) == 0 && 0 == b.size());
    b.commit(1);
    assert( size(b.data()) == 1 && 1 == b.size());
    b.commit(q-1);
    assert( size(b.data()) == q && q == b.size());
    b.commit(1);
    assert( size(b.data()) == q+1 && q+1 == b.size());

    b.consume(1);
    assert( size(b.data()) == q && q == b.size());
    b.consume(q-1);
    assert( size(b.data()) == 1 && 1 == b.size());

    assert( size(b.prepare(2*q-1)) == 2*q-1 );
    b.consume(1);
    assert( size(b.data()) == 0 && 0 == b.size());
    b.commit(q);
    assert( size(b.data()) == q && q == b.size());
    b.commit(q-1);
    assert( size(b.data()) == 2*q-1 && 2*q-1 == b.size());
    b.consume(2*q-1);
    assert( size(b.data()) == 0 && 0 == b.size());
}