@@ -674,7 +674,8 @@ class SingleEntryCacheTest
674
674
static void CheckAccessCoin (const CAmount base_value, const MaybeCoin& cache_coin, const MaybeCoin& expected)
675
675
{
676
676
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));
678
679
test.cache .SelfTest (/* sanity_check=*/ false );
679
680
BOOST_CHECK_EQUAL (GetCoinsMapEntry (test.cache .map ()), expected);
680
681
}
@@ -684,37 +685,21 @@ BOOST_AUTO_TEST_CASE(ccoins_access)
684
685
/* Check AccessCoin behavior, requesting a coin from a cache view layered on
685
686
* top of a base view, and checking the resulting entry in the cache after
686
687
* the access.
687
- * Base Cache Expected
688
+ * Base Cache Expected
688
689
*/
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
+ }
718
703
}
719
704
720
705
static void CheckSpendCoins (const CAmount base_value, const MaybeCoin& cache_coin, const MaybeCoin& expected)
@@ -730,37 +715,21 @@ BOOST_AUTO_TEST_CASE(ccoins_spend)
730
715
/* Check SpendCoin behavior, requesting a coin from a cache view layered on
731
716
* top of a base view, spending, and then checking
732
717
* the resulting entry in the cache after the modification.
733
- * Base Cache Expected
718
+ * Base Cache Expected
734
719
*/
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
+ }
764
733
}
765
734
766
735
static void CheckAddCoin (const CAmount base_value, const MaybeCoin& cache_coin, const CAmount modify_value, const CoinOrError& expected, const bool coinbase)
0 commit comments