MCPcopy Create free account
hub / github.com/cinder/Cinder / testStreamingBufferBlockSize

Function testStreamingBufferBlockSize

test/unit/src/Utilities.cpp:33–126  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

31}
32
33void testStreamingBufferBlockSize( int blockSize )
34{
35 StreamingBuffer sb( blockSize );
36 sb.pushFront( "abc", 4 );
37 REQUIRE( sb.getSize() == 4 );
38 REQUIRE( ! sb.empty() );
39 std::vector<char> chv( ' ', 4 );
40 REQUIRE( sb.popBack( &chv[0], 4 ) == 4 );
41 REQUIRE( std::string( &chv[0] ) == "abc" );
42 REQUIRE( sb.empty() );
43 REQUIRE( sb.getSize() == 0 );
44
45 // push 2; sz = 2
46 sb.pushFront( "a", 2 );
47 REQUIRE( sb.getSize() == 2 );
48 // push 2; sz = 4
49 sb.pushFront( "a", 2 );
50 REQUIRE( sb.getSize() == 4 );
51 // pop 2; sz = 2
52 REQUIRE( sb.popBack( &chv[0], 2 ) == 2 );
53 REQUIRE( sb.getSize() == 2 );
54 // pop 2 (attempting 10 ); sz = 0
55 REQUIRE( sb.popBack( &chv[0], 10 ) == 2 );
56 REQUIRE( sb.getSize() == 0 );
57
58 // popping on empty
59 REQUIRE( sb.popBack( &chv[0], 100 ) == 0 );
60 // 0 length pop on empty
61 REQUIRE( sb.popBack( &chv[0], 0 ) == 0 );
62 // 0 length pop on non-empty
63 sb.pushFront( "abc", 4 );
64 REQUIRE( sb.popBack( &chv[0], 0 ) == 0 );
65 sb.clear();
66 REQUIRE( sb.empty() );
67 // attempt to clear empty
68 sb.clear();
69
70 // rolling read/write activity that forces block reallocation
71 for( int i = 0; i < 100; ++i ) {
72 sb.pushFront( "abc", 4 );
73 REQUIRE( sb.getSize() == 4 );
74 REQUIRE( ! sb.empty() );
75 std::vector<char> chv( ' ', 4 );
76 REQUIRE( sb.popBack( &chv[0], 4 ) == 4 );
77 REQUIRE( std::string( &chv[0] ) == "abc" );
78 REQUIRE( sb.empty() );
79 }
80
81 // build up with pushes, then empty out with pops; verify FIFO values
82 for( int i = 0; i < 100; ++i ) {
83 uint16_t v = i;
84 sb.pushFront( &v, sizeof(uint16_t) );
85 REQUIRE( sb.getSize() == (i + 1) * sizeof(uint16_t) );
86 }
87 for( int i = 0; i < 100; ++i ) {
88 uint16_t v = i;
89 REQUIRE( sb.popBack( &v, sizeof( uint16_t ) ) == sizeof( uint16_t ) );
90 REQUIRE( v == i );

Callers 1

Utilities.cppFile · 0.85

Calls 10

stringFunction · 0.85
pushFrontMethod · 0.45
getSizeMethod · 0.45
emptyMethod · 0.45
popBackMethod · 0.45
clearMethod · 0.45
resizeMethod · 0.45
copyToMethod · 0.45
dataMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected