MCPcopy Create free account
hub / github.com/FirebirdSQL/firebird / test

Method test

extern/libcds/test/unit/pqueue/test_fcpqueue.h:17–81  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

15 protected:
16 template <class PQueue>
17 void test( PQueue& pq )
18 {
19 data_array<value_type> arr( PQueueTest::c_nCapacity );
20 value_type * pFirst = arr.begin();
21 value_type * pLast = arr.end();
22
23 ASSERT_TRUE( pq.empty());
24 ASSERT_TRUE( pq.size() == 0 );
25
26 size_t nSize = 0;
27
28 // Push test
29 for ( value_type * p = pFirst; p < pLast; ++p ) {
30 ASSERT_TRUE( pq.push( *p ));
31 ASSERT_TRUE( !pq.empty());
32 ASSERT_EQ( pq.size(), ++nSize );
33 }
34
35 ASSERT_EQ( pq.size(), static_cast<size_t>(PQueueTest::c_nCapacity ));
36
37 // Pop test
38 key_type nPrev = PQueueTest::c_nMinValue + key_type( PQueueTest::c_nCapacity ) - 1;
39 value_type kv( 0 );
40
41 ASSERT_TRUE( pq.pop( kv ));
42 EXPECT_EQ( kv.k, nPrev );
43
44 ASSERT_EQ( pq.size(), static_cast<size_t>( PQueueTest::c_nCapacity - 1 ));
45 ASSERT_TRUE( !pq.empty());
46
47 nSize = pq.size();
48 while ( pq.size() > 1 ) {
49 ASSERT_TRUE( pq.pop( kv ));
50 EXPECT_EQ( kv.k, nPrev - 1 );
51 nPrev = kv.k;
52
53 --nSize;
54 ASSERT_EQ( pq.size(), nSize );
55 }
56
57 ASSERT_TRUE( !pq.empty());
58 ASSERT_EQ( pq.size(), 1u );
59
60 ASSERT_TRUE( pq.pop( kv ));
61 EXPECT_EQ( kv.k, PQueueTest::c_nMinValue );
62
63 ASSERT_TRUE( pq.empty());
64 ASSERT_EQ( pq.size(), 0u );
65
66 // pop from empty pqueue
67 kv.k = PQueueTest::c_nCapacity * 2;
68 ASSERT_FALSE( pq.pop( kv ));
69 EXPECT_EQ( kv.k, PQueueTest::c_nCapacity * 2 );
70
71 // Clear test
72 for ( value_type * p = pFirst; p < pLast; ++p )
73 ASSERT_TRUE( pq.push( *p ));
74

Callers

nothing calls this directly

Calls 8

key_typeClass · 0.50
beginMethod · 0.45
endMethod · 0.45
emptyMethod · 0.45
sizeMethod · 0.45
pushMethod · 0.45
popMethod · 0.45
clearMethod · 0.45

Tested by

no test coverage detected