From 1fe0df9f1af7551355c14e90034b4842e0fd0923 Mon Sep 17 00:00:00 2001 From: Joe Thornber Date: Mon, 29 Apr 2013 12:03:47 +0100 Subject: [PATCH] [block_t] make sure validator->check isn't called unexpectedly. --- unit-tests/block_t.cc | 35 +++++++++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/unit-tests/block_t.cc b/unit-tests/block_t.cc index 9b554d4..adf78fa 100644 --- a/unit-tests/block_t.cc +++ b/unit-tests/block_t.cc @@ -230,6 +230,10 @@ namespace { EXPECT_CALL(*v, check(_, Eq(0ull))).Times(1); } + void expect_no_check(validator_mock::ptr v) { + EXPECT_CALL(*v, check(_, Eq(0ull))).Times(0); + } + void expect_prepare(validator_mock::ptr v) { EXPECT_CALL(*v, prepare(_, Eq(0ull))).Times(1); } @@ -255,6 +259,7 @@ TEST_F(ValidatorTests, check_only_called_once_on_read_lock) bm4096::read_ref rr = bm->read_lock(0, vmock); } + expect_no_check(vmock); bm4096::read_ref rr = bm->read_lock(0, vmock); } @@ -266,6 +271,7 @@ TEST_F(ValidatorTests, validator_can_be_changed_by_read_lock) } { + expect_no_check(vmock); expect_check(vmock2); bm4096::read_ref rr = bm->read_lock(0, vmock2); } @@ -287,8 +293,10 @@ TEST_F(ValidatorTests, check_only_called_once_on_write_lock) bm4096::write_ref wr = bm->write_lock(0, vmock); } - bm4096::write_ref wr = bm->write_lock(0, vmock); + expect_no_check(vmock); expect_prepare(vmock); + + bm4096::write_ref wr = bm->write_lock(0, vmock); } TEST_F(ValidatorTests, validator_can_be_changed_by_write_lock) @@ -310,19 +318,21 @@ TEST_F(ValidatorTests, validator_can_be_changed_by_write_lock) TEST_F(ValidatorTests, no_check_but_prepare_on_write_lock_zero) { + expect_no_check(vmock); expect_prepare(vmock); bm4096::write_ref wr = bm->write_lock_zero(0, vmock); } TEST_F(ValidatorTests, validator_can_be_changed_by_write_lock_zero) { - expect_prepare(vmock); - expect_prepare(vmock2); - { + expect_no_check(vmock); + expect_prepare(vmock); bm4096::write_ref wr = bm->write_lock_zero(0, vmock); } + expect_no_check(vmock2); + expect_prepare(vmock2); bm4096::write_ref wr = bm->write_lock_zero(0, vmock2); } @@ -343,8 +353,10 @@ TEST_F(ValidatorTests, check_only_called_once_on_superblock_lock) bm4096::write_ref wr = bm->superblock(0, vmock); } - bm4096::write_ref wr = bm->superblock(0, vmock); + expect_no_check(vmock); expect_prepare(vmock); + + bm4096::write_ref wr = bm->superblock(0, vmock); } TEST_F(ValidatorTests, validator_can_be_changed_by_superblock_lock) @@ -352,12 +364,15 @@ TEST_F(ValidatorTests, validator_can_be_changed_by_superblock_lock) { expect_check(vmock); expect_prepare(vmock); + bm4096::write_ref wr = bm->write_lock(0, vmock); } { + expect_no_check(vmock); expect_check(vmock2); expect_prepare(vmock2); + bm4096::write_ref wr = bm->write_lock(0, vmock2); } } @@ -366,19 +381,23 @@ TEST_F(ValidatorTests, validator_can_be_changed_by_superblock_lock) TEST_F(ValidatorTests, no_check_but_prepare_on_superblock_lock_zero) { + expect_no_check(vmock); expect_prepare(vmock); + bm4096::write_ref wr = bm->superblock_zero(0, vmock); } TEST_F(ValidatorTests, validator_can_be_changed_by_superblock_zero) { - expect_prepare(vmock); - expect_prepare(vmock2); - { + expect_no_check(vmock); + expect_prepare(vmock); bm4096::write_ref wr = bm->write_lock(0, vmock); } + expect_no_check(vmock2); + expect_prepare(vmock2); + bm4096::write_ref wr = bm->write_lock(0, vmock2); }