@@ -674,7 +674,8 @@ class SingleEntryCacheTest
674674static 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
720705static 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
766735static void CheckAddCoin (const CAmount base_value, const MaybeCoin& cache_coin, const CAmount modify_value, const CoinOrError& expected, const bool coinbase)
0 commit comments