bitset
This commit is contained in:
		@@ -153,6 +153,8 @@ BOOST_AUTO_TEST_CASE(can_create_an_empty_array)
 | 
			
		||||
 | 
			
		||||
BOOST_AUTO_TEST_CASE(read_only_array_blocks_are_possible)
 | 
			
		||||
{
 | 
			
		||||
	unsigned const COUNT = 10;
 | 
			
		||||
 | 
			
		||||
	block_address loc;
 | 
			
		||||
	transaction_manager::ptr tm = create_tm();
 | 
			
		||||
 | 
			
		||||
@@ -167,22 +169,76 @@ BOOST_AUTO_TEST_CASE(read_only_array_blocks_are_possible)
 | 
			
		||||
 | 
			
		||||
		BOOST_CHECK_THROW(b.get(0), runtime_error);
 | 
			
		||||
		BOOST_CHECK_THROW(b.set(0, 12345LL), runtime_error);
 | 
			
		||||
 | 
			
		||||
		b.grow(COUNT, 0);
 | 
			
		||||
		for (unsigned i = 0; i < COUNT; i++)
 | 
			
		||||
			b.set(i, i);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	{
 | 
			
		||||
		ablock64_r b = read_array_block(tm, loc);
 | 
			
		||||
 | 
			
		||||
		BOOST_CHECK_EQUAL(b.nr_entries(), COUNT);
 | 
			
		||||
		BOOST_CHECK_EQUAL(b.value_size(), sizeof(uint64_t));
 | 
			
		||||
		BOOST_CHECK_EQUAL(b.max_entries(), (4096 - 24) / 8);
 | 
			
		||||
 | 
			
		||||
		for (unsigned i = 0; i < COUNT; i++)
 | 
			
		||||
			BOOST_CHECK_EQUAL(b.get(i), i);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
BOOST_AUTO_TEST_CASE(updating_reopened_array_block)
 | 
			
		||||
{
 | 
			
		||||
	unsigned const COUNT = 10;
 | 
			
		||||
 | 
			
		||||
	block_address loc;
 | 
			
		||||
	transaction_manager::ptr tm = create_tm();
 | 
			
		||||
 | 
			
		||||
	{
 | 
			
		||||
		pair<ablock64, block_address> p = new_array_block(tm);
 | 
			
		||||
		ablock64 &b = p.first;
 | 
			
		||||
		loc = p.second;
 | 
			
		||||
 | 
			
		||||
		BOOST_CHECK_EQUAL(b.nr_entries(), 0);
 | 
			
		||||
		BOOST_CHECK_EQUAL(b.value_size(), sizeof(uint64_t));
 | 
			
		||||
		BOOST_CHECK_EQUAL(b.max_entries(), (4096 - 24) / 8);
 | 
			
		||||
 | 
			
		||||
		BOOST_CHECK_THROW(b.get(0), runtime_error);
 | 
			
		||||
		BOOST_CHECK_THROW(b.set(0, 12345LL), runtime_error);
 | 
			
		||||
 | 
			
		||||
		// Compile time error as expected
 | 
			
		||||
		// BOOST_CHECK_THROW(b.set(0, 12345LL), runtime_error);
 | 
			
		||||
		b.grow(COUNT, 0);
 | 
			
		||||
		for (unsigned i = 0; i < COUNT; i++)
 | 
			
		||||
			b.set(i, i);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	{
 | 
			
		||||
		ablock64 b = open_array_block(tm, loc);
 | 
			
		||||
 | 
			
		||||
		BOOST_CHECK_EQUAL(b.nr_entries(), COUNT);
 | 
			
		||||
		BOOST_CHECK_EQUAL(b.value_size(), sizeof(uint64_t));
 | 
			
		||||
		BOOST_CHECK_EQUAL(b.max_entries(), (4096 - 24) / 8);
 | 
			
		||||
 | 
			
		||||
		for (unsigned i = 0; i < COUNT; i++)
 | 
			
		||||
			BOOST_CHECK_EQUAL(b.get(i), i);
 | 
			
		||||
 | 
			
		||||
		for (unsigned i = 0; i < COUNT; i++)
 | 
			
		||||
			b.set(i, i + 37);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	{
 | 
			
		||||
		ablock64_r b = read_array_block(tm, loc);
 | 
			
		||||
 | 
			
		||||
		BOOST_CHECK_EQUAL(b.nr_entries(), COUNT);
 | 
			
		||||
		BOOST_CHECK_EQUAL(b.value_size(), sizeof(uint64_t));
 | 
			
		||||
		BOOST_CHECK_EQUAL(b.max_entries(), (4096 - 24) / 8);
 | 
			
		||||
 | 
			
		||||
		for (unsigned i = 0; i < COUNT; i++)
 | 
			
		||||
			BOOST_CHECK_EQUAL(b.get(i), i + 37);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
BOOST_AUTO_TEST_CASE(growing)
 | 
			
		||||
{
 | 
			
		||||
	uint64_t default_value = 123, new_value = 234;
 | 
			
		||||
@@ -203,6 +259,18 @@ BOOST_AUTO_TEST_CASE(growing)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
BOOST_AUTO_TEST_CASE(grow_does_not_touch_existing_values)
 | 
			
		||||
{
 | 
			
		||||
	transaction_manager::ptr tm = create_tm();
 | 
			
		||||
	pair<ablock64, block_address> p = new_array_block(tm);
 | 
			
		||||
	ablock64 &b = p.first;
 | 
			
		||||
 | 
			
		||||
	b.grow(10, 123);
 | 
			
		||||
	BOOST_CHECK_EQUAL(b.get(9), 123);
 | 
			
		||||
	b.grow(20, 234);
 | 
			
		||||
	BOOST_CHECK_EQUAL(b.get(9), 123);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
BOOST_AUTO_TEST_CASE(shrinking)
 | 
			
		||||
{
 | 
			
		||||
	uint64_t default_value = 123;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user