buffer_t.cc: more tests
This commit is contained in:
parent
0f5fc39694
commit
ca7de05e62
@ -32,19 +32,19 @@
|
||||
//----------------------------------------------------------------
|
||||
|
||||
namespace persistent_data {
|
||||
// Joe has buffer<> in other parts of the code, so...
|
||||
uint32_t const DEFAULT_BUFFER_SIZE = 4096;
|
||||
|
||||
// Allocate buffer of Size with Alignment imposed.
|
||||
//
|
||||
// Allocation needs to be on the heap in order to provide alignment guarantees!
|
||||
// Allocation needs to be on the heap in order to provide alignment
|
||||
// guarantees.
|
||||
//
|
||||
// Alignment must be a power of two.
|
||||
|
||||
template <uint32_t Size = DEFAULT_BUFFER_SIZE, uint32_t Alignment = 512>
|
||||
class buffer : private boost::noncopyable {
|
||||
public:
|
||||
typedef boost::shared_ptr<buffer> ptr;
|
||||
typedef boost::shared_ptr<buffer const> const_ptr;
|
||||
|
||||
unsigned char &operator[](unsigned index) {
|
||||
check_index(index);
|
||||
|
@ -82,12 +82,20 @@ BOOST_AUTO_TEST_CASE(buffer_8_a_8_access)
|
||||
BOOST_CHECK_EQUAL((*b)[0], '\0');
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(buffer_8_a_8_oob)
|
||||
{
|
||||
uint32_t const sz = 8, align = 8;
|
||||
buffer<sz, align>::ptr b = create_buffer<sz, align>();
|
||||
|
||||
BOOST_CHECK_NO_THROW((*b)[8] = 0);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(buffer_8_a_8_const_access)
|
||||
{
|
||||
uint32_t const sz = 8, align = 8;
|
||||
buffer<sz, align>::ptr const b = create_buffer<sz, align>();
|
||||
buffer<sz, align>::const_ptr b = create_buffer<sz, align>();
|
||||
|
||||
(*b)[0] = 0; // Compile time error accessing read-only location
|
||||
// (*b)[0] = 0; // Compile time error accessing read-only location
|
||||
}
|
||||
|
||||
// 8 byte buffer size, varying alignment from 1 - 7
|
||||
|
Loading…
Reference in New Issue
Block a user