aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLőrinc <pap.lorinc@gmail.com>2024-09-18 09:00:52 +0200
committerLőrinc <pap.lorinc@gmail.com>2024-12-02 14:49:45 +0100
commit50cce20013c97e1257cb9f4c9319701a09b0a196 (patch)
treecb42b7fe124ea80f0963e5edae9ffb93d6b35d56 /src
parent0a159f0914775756dcac2d9fa7fe4e4d4e70ba0c (diff)
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.
Diffstat (limited to 'src')
-rw-r--r--src/test/coins_tests.cpp91
1 files changed, 30 insertions, 61 deletions
diff --git a/src/test/coins_tests.cpp b/src/test/coins_tests.cpp
index 0e6348f844..c46144b34b 100644
--- a/src/test/coins_tests.cpp
+++ b/src/test/coins_tests.cpp
@@ -674,7 +674,8 @@ public:
static void CheckAccessCoin(const CAmount base_value, const MaybeCoin& cache_coin, const MaybeCoin& expected)
{
SingleEntryCacheTest test{base_value, cache_coin};
- test.cache.AccessCoin(OUTPOINT);
+ auto& coin = test.cache.AccessCoin(OUTPOINT);
+ BOOST_CHECK_EQUAL(coin.IsSpent(), !test.cache.GetCoin(OUTPOINT));
test.cache.SelfTest(/*sanity_check=*/false);
BOOST_CHECK_EQUAL(GetCoinsMapEntry(test.cache.map()), expected);
}
@@ -684,37 +685,21 @@ BOOST_AUTO_TEST_CASE(ccoins_access)
/* Check AccessCoin behavior, requesting a coin from a cache view layered on
* top of a base view, and checking the resulting entry in the cache after
* the access.
- * Base Cache Expected
+ * Base Cache Expected
*/
- CheckAccessCoin(ABSENT, MISSING, MISSING );
- CheckAccessCoin(ABSENT, SPENT_CLEAN, SPENT_CLEAN );
- CheckAccessCoin(ABSENT, SPENT_FRESH, SPENT_FRESH );
- CheckAccessCoin(ABSENT, SPENT_DIRTY, SPENT_DIRTY );
- CheckAccessCoin(ABSENT, SPENT_DIRTY_FRESH, SPENT_DIRTY_FRESH );
- CheckAccessCoin(ABSENT, VALUE2_CLEAN, VALUE2_CLEAN );
- CheckAccessCoin(ABSENT, VALUE2_FRESH, VALUE2_FRESH );
- CheckAccessCoin(ABSENT, VALUE2_DIRTY, VALUE2_DIRTY );
- CheckAccessCoin(ABSENT, VALUE2_DIRTY_FRESH, VALUE2_DIRTY_FRESH);
-
- CheckAccessCoin(SPENT, MISSING, MISSING );
- CheckAccessCoin(SPENT, SPENT_CLEAN, SPENT_CLEAN );
- CheckAccessCoin(SPENT, SPENT_FRESH, SPENT_FRESH );
- CheckAccessCoin(SPENT, SPENT_DIRTY, SPENT_DIRTY );
- CheckAccessCoin(SPENT, SPENT_DIRTY_FRESH, SPENT_DIRTY_FRESH );
- CheckAccessCoin(SPENT, VALUE2_CLEAN, VALUE2_CLEAN );
- CheckAccessCoin(SPENT, VALUE2_FRESH, VALUE2_FRESH );
- CheckAccessCoin(SPENT, VALUE2_DIRTY, VALUE2_DIRTY );
- CheckAccessCoin(SPENT, VALUE2_DIRTY_FRESH, VALUE2_DIRTY_FRESH);
-
- CheckAccessCoin(VALUE1, MISSING, VALUE1_CLEAN );
- CheckAccessCoin(VALUE1, SPENT_CLEAN, SPENT_CLEAN );
- CheckAccessCoin(VALUE1, SPENT_FRESH, SPENT_FRESH );
- CheckAccessCoin(VALUE1, SPENT_DIRTY, SPENT_DIRTY );
- CheckAccessCoin(VALUE1, SPENT_DIRTY_FRESH, SPENT_DIRTY_FRESH );
- CheckAccessCoin(VALUE1, VALUE2_CLEAN, VALUE2_CLEAN );
- CheckAccessCoin(VALUE1, VALUE2_FRESH, VALUE2_FRESH );
- CheckAccessCoin(VALUE1, VALUE2_DIRTY, VALUE2_DIRTY );
- CheckAccessCoin(VALUE1, VALUE2_DIRTY_FRESH, VALUE2_DIRTY_FRESH);
+ for (auto base_value : {ABSENT, SPENT, VALUE1}) {
+ CheckAccessCoin(base_value, MISSING, base_value == VALUE1 ? VALUE1_CLEAN : MISSING);
+
+ CheckAccessCoin(base_value, SPENT_CLEAN, SPENT_CLEAN );
+ CheckAccessCoin(base_value, SPENT_FRESH, SPENT_FRESH );
+ CheckAccessCoin(base_value, SPENT_DIRTY, SPENT_DIRTY );
+ CheckAccessCoin(base_value, SPENT_DIRTY_FRESH, SPENT_DIRTY_FRESH );
+
+ CheckAccessCoin(base_value, VALUE2_CLEAN, VALUE2_CLEAN );
+ CheckAccessCoin(base_value, VALUE2_FRESH, VALUE2_FRESH );
+ CheckAccessCoin(base_value, VALUE2_DIRTY, VALUE2_DIRTY );
+ CheckAccessCoin(base_value, VALUE2_DIRTY_FRESH, VALUE2_DIRTY_FRESH);
+ }
}
static void CheckSpendCoins(const CAmount base_value, const MaybeCoin& cache_coin, const MaybeCoin& expected)
@@ -730,37 +715,21 @@ BOOST_AUTO_TEST_CASE(ccoins_spend)
/* Check SpendCoin behavior, requesting a coin from a cache view layered on
* top of a base view, spending, and then checking
* the resulting entry in the cache after the modification.
- * Base Cache Expected
+ * Base Cache Expected
*/
- CheckSpendCoins(ABSENT, MISSING, MISSING );
- CheckSpendCoins(ABSENT, SPENT_CLEAN, SPENT_DIRTY);
- CheckSpendCoins(ABSENT, SPENT_FRESH, MISSING );
- CheckSpendCoins(ABSENT, SPENT_DIRTY, SPENT_DIRTY);
- CheckSpendCoins(ABSENT, SPENT_DIRTY_FRESH, MISSING );
- CheckSpendCoins(ABSENT, VALUE2_CLEAN, SPENT_DIRTY);
- CheckSpendCoins(ABSENT, VALUE2_FRESH, MISSING );
- CheckSpendCoins(ABSENT, VALUE2_DIRTY, SPENT_DIRTY);
- CheckSpendCoins(ABSENT, VALUE2_DIRTY_FRESH, MISSING );
-
- CheckSpendCoins(SPENT, MISSING, MISSING );
- CheckSpendCoins(SPENT, SPENT_CLEAN, SPENT_DIRTY);
- CheckSpendCoins(SPENT, SPENT_FRESH, MISSING );
- CheckSpendCoins(SPENT, SPENT_DIRTY, SPENT_DIRTY);
- CheckSpendCoins(SPENT, SPENT_DIRTY_FRESH, MISSING );
- CheckSpendCoins(SPENT, VALUE2_CLEAN, SPENT_DIRTY);
- CheckSpendCoins(SPENT, VALUE2_FRESH, MISSING );
- CheckSpendCoins(SPENT, VALUE2_DIRTY, SPENT_DIRTY);
- CheckSpendCoins(SPENT, VALUE2_DIRTY_FRESH, MISSING );
-
- CheckSpendCoins(VALUE1, MISSING, SPENT_DIRTY);
- CheckSpendCoins(VALUE1, SPENT_CLEAN, SPENT_DIRTY);
- CheckSpendCoins(VALUE1, SPENT_FRESH, MISSING );
- CheckSpendCoins(VALUE1, SPENT_DIRTY, SPENT_DIRTY);
- CheckSpendCoins(VALUE1, SPENT_DIRTY_FRESH, MISSING );
- CheckSpendCoins(VALUE1, VALUE2_CLEAN, SPENT_DIRTY);
- CheckSpendCoins(VALUE1, VALUE2_FRESH, MISSING );
- CheckSpendCoins(VALUE1, VALUE2_DIRTY, SPENT_DIRTY);
- CheckSpendCoins(VALUE1, VALUE2_DIRTY_FRESH, MISSING );
+ for (auto base_value : {ABSENT, SPENT, VALUE1}) {
+ CheckSpendCoins(base_value, MISSING, base_value == VALUE1 ? SPENT_DIRTY : MISSING);
+
+ CheckSpendCoins(base_value, SPENT_CLEAN, SPENT_DIRTY);
+ CheckSpendCoins(base_value, SPENT_FRESH, MISSING );
+ CheckSpendCoins(base_value, SPENT_DIRTY, SPENT_DIRTY);
+ CheckSpendCoins(base_value, SPENT_DIRTY_FRESH, MISSING );
+
+ CheckSpendCoins(base_value, VALUE2_CLEAN, SPENT_DIRTY);
+ CheckSpendCoins(base_value, VALUE2_FRESH, MISSING );
+ CheckSpendCoins(base_value, VALUE2_DIRTY, SPENT_DIRTY);
+ CheckSpendCoins(base_value, VALUE2_DIRTY_FRESH, MISSING );
+ }
}
static void CheckAddCoin(const CAmount base_value, const MaybeCoin& cache_coin, const CAmount modify_value, const CoinOrError& expected, const bool coinbase)