Skip to content

Commit 50cce20

Browse files
committed
test, refactor: Compact ccoins_access and ccoins_spend
Also added an extra check for `AccessCoin` in `CheckAccessCoin` to make sure its result is also validated.
1 parent 0a159f0 commit 50cce20

File tree

1 file changed

+30
-61
lines changed

1 file changed

+30
-61
lines changed

src/test/coins_tests.cpp

Lines changed: 30 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -674,7 +674,8 @@ class SingleEntryCacheTest
674674
static void CheckAccessCoin(const CAmount base_value, const MaybeCoin& cache_coin, const MaybeCoin& expected)
675675
{
676676
SingleEntryCacheTest test{base_value, cache_coin};
677-
test.cache.AccessCoin(OUTPOINT);
677+
auto& coin = test.cache.AccessCoin(OUTPOINT);
678+
BOOST_CHECK_EQUAL(coin.IsSpent(), !test.cache.GetCoin(OUTPOINT));
678679
test.cache.SelfTest(/*sanity_check=*/false);
679680
BOOST_CHECK_EQUAL(GetCoinsMapEntry(test.cache.map()), expected);
680681
}
@@ -684,37 +685,21 @@ BOOST_AUTO_TEST_CASE(ccoins_access)
684685
/* Check AccessCoin behavior, requesting a coin from a cache view layered on
685686
* top of a base view, and checking the resulting entry in the cache after
686687
* the access.
687-
* Base Cache Expected
688+
* Base Cache Expected
688689
*/
689-
CheckAccessCoin(ABSENT, MISSING, MISSING );
690-
CheckAccessCoin(ABSENT, SPENT_CLEAN, SPENT_CLEAN );
691-
CheckAccessCoin(ABSENT, SPENT_FRESH, SPENT_FRESH );
692-
CheckAccessCoin(ABSENT, SPENT_DIRTY, SPENT_DIRTY );
693-
CheckAccessCoin(ABSENT, SPENT_DIRTY_FRESH, SPENT_DIRTY_FRESH );
694-
CheckAccessCoin(ABSENT, VALUE2_CLEAN, VALUE2_CLEAN );
695-
CheckAccessCoin(ABSENT, VALUE2_FRESH, VALUE2_FRESH );
696-
CheckAccessCoin(ABSENT, VALUE2_DIRTY, VALUE2_DIRTY );
697-
CheckAccessCoin(ABSENT, VALUE2_DIRTY_FRESH, VALUE2_DIRTY_FRESH);
698-
699-
CheckAccessCoin(SPENT, MISSING, MISSING );
700-
CheckAccessCoin(SPENT, SPENT_CLEAN, SPENT_CLEAN );
701-
CheckAccessCoin(SPENT, SPENT_FRESH, SPENT_FRESH );
702-
CheckAccessCoin(SPENT, SPENT_DIRTY, SPENT_DIRTY );
703-
CheckAccessCoin(SPENT, SPENT_DIRTY_FRESH, SPENT_DIRTY_FRESH );
704-
CheckAccessCoin(SPENT, VALUE2_CLEAN, VALUE2_CLEAN );
705-
CheckAccessCoin(SPENT, VALUE2_FRESH, VALUE2_FRESH );
706-
CheckAccessCoin(SPENT, VALUE2_DIRTY, VALUE2_DIRTY );
707-
CheckAccessCoin(SPENT, VALUE2_DIRTY_FRESH, VALUE2_DIRTY_FRESH);
708-
709-
CheckAccessCoin(VALUE1, MISSING, VALUE1_CLEAN );
710-
CheckAccessCoin(VALUE1, SPENT_CLEAN, SPENT_CLEAN );
711-
CheckAccessCoin(VALUE1, SPENT_FRESH, SPENT_FRESH );
712-
CheckAccessCoin(VALUE1, SPENT_DIRTY, SPENT_DIRTY );
713-
CheckAccessCoin(VALUE1, SPENT_DIRTY_FRESH, SPENT_DIRTY_FRESH );
714-
CheckAccessCoin(VALUE1, VALUE2_CLEAN, VALUE2_CLEAN );
715-
CheckAccessCoin(VALUE1, VALUE2_FRESH, VALUE2_FRESH );
716-
CheckAccessCoin(VALUE1, VALUE2_DIRTY, VALUE2_DIRTY );
717-
CheckAccessCoin(VALUE1, VALUE2_DIRTY_FRESH, VALUE2_DIRTY_FRESH);
690+
for (auto base_value : {ABSENT, SPENT, VALUE1}) {
691+
CheckAccessCoin(base_value, MISSING, base_value == VALUE1 ? VALUE1_CLEAN : MISSING);
692+
693+
CheckAccessCoin(base_value, SPENT_CLEAN, SPENT_CLEAN );
694+
CheckAccessCoin(base_value, SPENT_FRESH, SPENT_FRESH );
695+
CheckAccessCoin(base_value, SPENT_DIRTY, SPENT_DIRTY );
696+
CheckAccessCoin(base_value, SPENT_DIRTY_FRESH, SPENT_DIRTY_FRESH );
697+
698+
CheckAccessCoin(base_value, VALUE2_CLEAN, VALUE2_CLEAN );
699+
CheckAccessCoin(base_value, VALUE2_FRESH, VALUE2_FRESH );
700+
CheckAccessCoin(base_value, VALUE2_DIRTY, VALUE2_DIRTY );
701+
CheckAccessCoin(base_value, VALUE2_DIRTY_FRESH, VALUE2_DIRTY_FRESH);
702+
}
718703
}
719704

720705
static void CheckSpendCoins(const CAmount base_value, const MaybeCoin& cache_coin, const MaybeCoin& expected)
@@ -730,37 +715,21 @@ BOOST_AUTO_TEST_CASE(ccoins_spend)
730715
/* Check SpendCoin behavior, requesting a coin from a cache view layered on
731716
* top of a base view, spending, and then checking
732717
* the resulting entry in the cache after the modification.
733-
* Base Cache Expected
718+
* Base Cache Expected
734719
*/
735-
CheckSpendCoins(ABSENT, MISSING, MISSING );
736-
CheckSpendCoins(ABSENT, SPENT_CLEAN, SPENT_DIRTY);
737-
CheckSpendCoins(ABSENT, SPENT_FRESH, MISSING );
738-
CheckSpendCoins(ABSENT, SPENT_DIRTY, SPENT_DIRTY);
739-
CheckSpendCoins(ABSENT, SPENT_DIRTY_FRESH, MISSING );
740-
CheckSpendCoins(ABSENT, VALUE2_CLEAN, SPENT_DIRTY);
741-
CheckSpendCoins(ABSENT, VALUE2_FRESH, MISSING );
742-
CheckSpendCoins(ABSENT, VALUE2_DIRTY, SPENT_DIRTY);
743-
CheckSpendCoins(ABSENT, VALUE2_DIRTY_FRESH, MISSING );
744-
745-
CheckSpendCoins(SPENT, MISSING, MISSING );
746-
CheckSpendCoins(SPENT, SPENT_CLEAN, SPENT_DIRTY);
747-
CheckSpendCoins(SPENT, SPENT_FRESH, MISSING );
748-
CheckSpendCoins(SPENT, SPENT_DIRTY, SPENT_DIRTY);
749-
CheckSpendCoins(SPENT, SPENT_DIRTY_FRESH, MISSING );
750-
CheckSpendCoins(SPENT, VALUE2_CLEAN, SPENT_DIRTY);
751-
CheckSpendCoins(SPENT, VALUE2_FRESH, MISSING );
752-
CheckSpendCoins(SPENT, VALUE2_DIRTY, SPENT_DIRTY);
753-
CheckSpendCoins(SPENT, VALUE2_DIRTY_FRESH, MISSING );
754-
755-
CheckSpendCoins(VALUE1, MISSING, SPENT_DIRTY);
756-
CheckSpendCoins(VALUE1, SPENT_CLEAN, SPENT_DIRTY);
757-
CheckSpendCoins(VALUE1, SPENT_FRESH, MISSING );
758-
CheckSpendCoins(VALUE1, SPENT_DIRTY, SPENT_DIRTY);
759-
CheckSpendCoins(VALUE1, SPENT_DIRTY_FRESH, MISSING );
760-
CheckSpendCoins(VALUE1, VALUE2_CLEAN, SPENT_DIRTY);
761-
CheckSpendCoins(VALUE1, VALUE2_FRESH, MISSING );
762-
CheckSpendCoins(VALUE1, VALUE2_DIRTY, SPENT_DIRTY);
763-
CheckSpendCoins(VALUE1, VALUE2_DIRTY_FRESH, MISSING );
720+
for (auto base_value : {ABSENT, SPENT, VALUE1}) {
721+
CheckSpendCoins(base_value, MISSING, base_value == VALUE1 ? SPENT_DIRTY : MISSING);
722+
723+
CheckSpendCoins(base_value, SPENT_CLEAN, SPENT_DIRTY);
724+
CheckSpendCoins(base_value, SPENT_FRESH, MISSING );
725+
CheckSpendCoins(base_value, SPENT_DIRTY, SPENT_DIRTY);
726+
CheckSpendCoins(base_value, SPENT_DIRTY_FRESH, MISSING );
727+
728+
CheckSpendCoins(base_value, VALUE2_CLEAN, SPENT_DIRTY);
729+
CheckSpendCoins(base_value, VALUE2_FRESH, MISSING );
730+
CheckSpendCoins(base_value, VALUE2_DIRTY, SPENT_DIRTY);
731+
CheckSpendCoins(base_value, VALUE2_DIRTY_FRESH, MISSING );
732+
}
764733
}
765734

766735
static void CheckAddCoin(const CAmount base_value, const MaybeCoin& cache_coin, const CAmount modify_value, const CoinOrError& expected, const bool coinbase)

0 commit comments

Comments
 (0)