Merged
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #887 +/- ##
========================================
Coverage ? 100.00%
========================================
Files ? 20
Lines ? 1486
Branches ? 0
========================================
Hits ? 1486
Misses ? 0
Partials ? 0 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
miguelmtzinf
approved these changes
Oct 10, 2025
Forge Build Sizes🔕 Unchanged
|
♻️ Forge Gas Snapshots🔕 Unchanged
|
🌈 Test ResultsNo files changed, compilation skipped
Ran 17 tests for tests/unit/AaveOracle.t.sol:AaveOracleTest
[PASS] test_constructor() (gas: 440456)
[PASS] test_decimals() (gas: 8387)
[PASS] test_deploy_revertsWith_InvalidAddress() (gas: 38089)
[PASS] test_description() (gas: 12094)
[PASS] test_fuzz_constructor(uint8) (runs: 5000, μ: 444398, ~: 444703)
[PASS] test_getReservePrice() (gas: 47409)
[PASS] test_getReservePrice_revertsWith_InvalidPrice() (gas: 46669)
[PASS] test_getReservePrice_revertsWith_InvalidSource() (gas: 10976)
[PASS] test_getReservePrices() (gas: 79551)
[PASS] test_getReservePrices_revertsWith_InvalidSource() (gas: 49352)
[PASS] test_getReserveSource() (gas: 47584)
[PASS] test_setReserveSource() (gas: 44466)
[PASS] test_setReserveSource_revertsWith_InvalidPrice() (gas: 97683)
[PASS] test_setReserveSource_revertsWith_InvalidSource() (gas: 15327)
[PASS] test_setReserveSource_revertsWith_InvalidSourceDecimals() (gas: 15149)
[PASS] test_setReserveSource_revertsWith_OnlySpoke() (gas: 11049)
[PASS] test_spoke() (gas: 10614)
Suite result: ok. 17 passed; 0 failed; 0 skipped; finished in 500.55ms (493.81ms CPU time)
Ran 23 tests for tests/unit/AssetInterestRateStrategy.t.sol:AssetInterestRateStrategyTest
[PASS] test_calculateInterestRate_AtKinkPoint() (gas: 24686)
Logs:
Bound result 2000
Bound result 778565440757296803935461404101
[PASS] test_calculateInterestRate_AtMaxUtilization() (gas: 24958)
Logs:
Bound result 10000
Bound result 778565440757296803935461404101
[PASS] test_calculateInterestRate_LeftToKinkPoint(uint256) (runs: 5000, μ: 24529, ~: 24690)
[PASS] test_calculateInterestRate_RightToKinkPoint(uint256) (runs: 5000, μ: 25648, ~: 25690)
[PASS] test_calculateInterestRate_ZeroDebtZeroLiquidity() (gas: 18944)
Logs:
Bound result 0
[PASS] test_calculateInterestRate_fuzz_ZeroDebt(uint256) (runs: 5000, μ: 19157, ~: 18950)
[PASS] test_calculateInterestRate_revertsWith_InterestRateDataNotSet() (gas: 11361)
[PASS] test_deploy_revertsWith_InvalidAddress() (gas: 36318)
[PASS] test_getBaseVariableBorrowRate() (gas: 14864)
[PASS] test_getInterestRateData() (gas: 19653)
[PASS] test_getMaxVariableBorrowRate() (gas: 15312)
[PASS] test_getOptimalUsageRatio() (gas: 14735)
[PASS] test_getVariableRateSlope1() (gas: 14810)
[PASS] test_getVariableRateSlope2() (gas: 14877)
[PASS] test_maxBorrowRate() (gas: 8431)
[PASS] test_maxOptimalRatio() (gas: 8431)
[PASS] test_minOptimalRatio() (gas: 8440)
[PASS] test_setInterestRateData() (gas: 69812)
[PASS] test_setInterestRateData_revertsWith_InvalidMaxRate() (gas: 42072)
[PASS] test_setInterestRateData_revertsWith_InvalidOptimalUsageRatio() (gas: 43120)
[PASS] test_setInterestRateData_revertsWith_InvalidRateData() (gas: 35395)
[PASS] test_setInterestRateData_revertsWith_OnlyHub() (gas: 23786)
[PASS] test_setInterestRateData_revertsWith_Slope2MustBeGteSlope1() (gas: 37980)
Suite result: ok. 23 passed; 0 failed; 0 skipped; finished in 1.08s (1.07s CPU time)
Ran 6 tests for tests/unit/Hub/Hub.Access.t.sol:HubAccessTest
[PASS] test_change_authority() (gas: 2313734)
[PASS] test_change_role_responsibility() (gas: 101302)
[PASS] test_hub_access_manager_exposure() (gas: 12728)
[PASS] test_hub_admin_access() (gas: 1132477)
[PASS] test_migrate_role_responsibility() (gas: 397008)
[PASS] test_setInterestRateData_access() (gas: 101112)
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 21.22ms (3.94ms CPU time)
Ran 20 tests for tests/unit/Hub/Hub.Add.t.sol:HubAddTest
[PASS] test_add_AddCapReachedButNotExceeded_rounding() (gas: 650304)
[PASS] test_add_fuzz_AddCapReachedButNotExceeded(uint56) (runs: 5000, μ: 156102, ~: 155950)
[PASS] test_add_fuzz_multi_asset_multi_spoke(uint256,uint256,uint256) (runs: 5000, μ: 310287, ~: 310442)
[PASS] test_add_fuzz_revertsWith_AddCapExceeded(uint56) (runs: 5000, μ: 77812, ~: 77660)
[PASS] test_add_fuzz_revertsWith_AddCapExceeded_due_to_interest(uint56,uint256,uint256) (runs: 5000, μ: 282422, ~: 284987)
[PASS] test_add_fuzz_revertsWith_ERC20InsufficientAllowance(uint256) (runs: 5000, μ: 78921, ~: 78654)
[PASS] test_add_fuzz_revertsWith_InvalidShares_due_to_index(uint256,uint256,uint256) (runs: 5000, μ: 217053, ~: 217233)
[PASS] test_add_fuzz_single_asset(uint256,address,uint256) (runs: 5000, μ: 337190, ~: 337112)
[PASS] test_add_fuzz_single_spoke_multi_add(uint256,uint256) (runs: 5000, μ: 821888, ~: 823975)
[PASS] test_add_multi_add_minimal_shares() (gas: 345410)
[PASS] test_add_revertsWith_AmountDowncastOverflow() (gas: 206591)
[PASS] test_add_revertsWith_ERC20InsufficientAllowance() (gas: 75191)
[PASS] test_add_revertsWith_InvalidAddress() (gas: 15791)
[PASS] test_add_revertsWith_InvalidAmount() (gas: 15858)
[PASS] test_add_revertsWith_InvalidShares() (gas: 220924)
[PASS] test_add_revertsWith_SharesDowncastOverflow() (gas: 36639)
[PASS] test_add_revertsWith_SpokeNotActive() (gas: 56417)
[PASS] test_add_single_asset() (gas: 325116)
Logs:
Bound result 2
Bound result 100000000000000000000
[PASS] test_add_with_increased_index() (gas: 324610)
[PASS] test_add_with_increased_index_with_premium() (gas: 674295)
Suite result: ok. 20 passed; 0 failed; 0 skipped; finished in 45.13s (45.11s CPU time)
Ran 5 tests for tests/unit/Spoke/Spoke.Borrow.EdgeCases.t.sol:SpokeBorrowEdgeCasesTest
[PASS] test_borrow_fuzz_rounding_effect(uint256,uint256) (runs: 5000, μ: 1063084, ~: 1063218)
[PASS] test_borrow_fuzz_rounding_effect_inflated_ex_rate(uint256,uint256,uint256) (runs: 5000, μ: 1451017, ~: 1451141)
[PASS] test_borrow_fuzz_rounding_effect_shares(uint256,uint256) (runs: 5000, μ: 1118010, ~: 1117772)
[PASS] test_borrow_rounding_effect_multiple_actions() (gas: 1173030)
[PASS] test_borrow_rounding_effect_shares() (gas: 1116987)
Logs:
Bound result 5000000000000000000
Bound result 94608000
Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 69.66s (69.62s CPU time)
Ran 31 tests for tests/unit/Hub/Hub.Config.t.sol:HubConfigTest
[PASS] test_addAsset_fuzz(address,uint8,address) (runs: 5000, μ: 840069, ~: 840100)
[PASS] test_addAsset_fuzz_revertsWith_InvalidAddress_feeReceiver(address,uint8,address) (runs: 5000, μ: 46645, ~: 46948)
[PASS] test_addAsset_fuzz_revertsWith_InvalidAddress_irStrategy(address,uint8,address) (runs: 5000, μ: 46654, ~: 46957)
[PASS] test_addAsset_fuzz_revertsWith_InvalidAddress_underlying(uint8,address,address) (runs: 5000, μ: 37645, ~: 37645)
[PASS] test_addAsset_fuzz_revertsWith_InvalidAssetDecimals(address,uint8,address,address) (runs: 5000, μ: 47231, ~: 47048)
[PASS] test_addAsset_fuzz_revertsWith_InvalidAssetDecimals_tooLow(address,uint8,address,address) (runs: 5000, μ: 47484, ~: 47703)
[PASS] test_addAsset_fuzz_reverts_InvalidIrData(address,uint8,address,address) (runs: 5000, μ: 40499, ~: 43623)
[PASS] test_addAsset_revertsWith_BlockTimestampDowncastOverflow() (gas: 81114)
[PASS] test_addAsset_revertsWith_DrawnRateDowncastOverflow() (gas: 78065)
[PASS] test_addSpoke_fuzz(uint256,(bool,uint56,uint56)) (runs: 5000, μ: 121632, ~: 121700)
[PASS] test_addSpoke_fuzz_revertsWith_AssetNotListed(uint256,(bool,uint56,uint56)) (runs: 5000, μ: 34523, ~: 34512)
[PASS] test_addSpoke_fuzz_revertsWith_InvalidAddress_spoke(uint256,(bool,uint56,uint56)) (runs: 5000, μ: 33114, ~: 33170)
[PASS] test_addSpoke_revertsWith_SpokeAlreadyListed() (gas: 38416)
[PASS] test_hub_deploy_revertsWith_InvalidAddress() (gas: 46975)
[PASS] test_updateAssetConfig_UseExistingSpokeAndListedAsFeeReceiver_revertsWith_SpokeAlreadyListed() (gas: 59738)
[PASS] test_updateAssetConfig_fuzz(uint256,(address,uint16,address,address)) (runs: 5000, μ: 241382, ~: 241274)
[PASS] test_updateAssetConfig_fuzz_FromZeroLiquidityFee(uint256,uint16) (runs: 5000, μ: 759233, ~: 759155)
[PASS] test_updateAssetConfig_fuzz_LiquidityFee(uint256,uint16) (runs: 5000, μ: 658130, ~: 658052)
[PASS] test_updateAssetConfig_fuzz_NewFeeReceiver(uint256) (runs: 5000, μ: 727198, ~: 727260)
[PASS] test_updateAssetConfig_fuzz_NewInterestRateStrategy(uint256) (runs: 5000, μ: 1132664, ~: 1132774)
[PASS] test_updateAssetConfig_fuzz_ReuseFeeReceiver_revertsWith_SpokeAlreadyListed(uint256) (runs: 5000, μ: 766559, ~: 766621)
[PASS] test_updateAssetConfig_fuzz_Scenario(uint256) (runs: 5000, μ: 603584, ~: 603640)
[PASS] test_updateAssetConfig_fuzz_UseExistingSpokeAsFeeReceiver_revertsWith_SpokeAlreadyListed(uint256) (runs: 5000, μ: 59410, ~: 59410)
[PASS] test_updateAssetConfig_fuzz_revertsWith_InvalidInterestRateStrategy(uint256) (runs: 5000, μ: 57888, ~: 57944)
[PASS] test_updateAssetConfig_fuzz_revertsWith_InvalidLiquidityFee(uint256,(address,uint16,address,address)) (runs: 5000, μ: 41101, ~: 40957)
[PASS] test_updateAssetConfig_fuzz_revertsWith_InvalidReinvestmentController() (gas: 494867)
[PASS] test_updateAssetConfig_fuzz_revertsWith_calculateInterestRateReverts(uint256,(address,uint16,address,address)) (runs: 5000, μ: 190724, ~: 190581)
[PASS] test_updateAssetConfig_fuzz_revertsWith_setInterestRateDataReverts(uint256,(address,uint16,address,address)) (runs: 5000, μ: 65214, ~: 65071)
[PASS] test_updateSpokeConfig_fuzz(uint256,(bool,uint56,uint56)) (runs: 5000, μ: 54358, ~: 54428)
[PASS] test_updateSpokeConfig_fuzz_revertsWith_SpokeNotListed(uint256,address,(bool,uint56,uint56)) (runs: 5000, μ: 40216, ~: 40285)
[PASS] test_updateSpokeConfig_revertsWith_AssetNotListed() (gas: 29201)
Suite result: ok. 31 passed; 0 failed; 0 skipped; finished in 84.98s (84.95s CPU time)
Ran 15 tests for tests/unit/Hub/Hub.Draw.t.sol:HubDrawTest
[PASS] test_draw_DifferentSpokes() (gas: 362570)
[PASS] test_draw_fuzz_IncreasedBorrowRate(uint256,uint256) (runs: 5000, μ: 685268, ~: 685353)
[PASS] test_draw_fuzz_amounts_same_block(uint256,uint256) (runs: 5000, μ: 286042, ~: 285884)
[PASS] test_draw_fuzz_revertsWith_DrawCapExceeded(uint56) (runs: 5000, μ: 78076, ~: 77927)
[PASS] test_draw_fuzz_revertsWith_DrawCapExceeded_due_to_interest(uint56,uint256,uint256) (runs: 5000, μ: 300262, ~: 300563)
[PASS] test_draw_fuzz_revertsWith_InsufficientLiquidity(uint256,uint256) (runs: 5000, μ: 33939, ~: 33732)
[PASS] test_draw_fuzz_revertsWith_InsufficientLiquidity_due_to_draw(uint256) (runs: 5000, μ: 183108, ~: 182844)
[PASS] test_draw_fuzz_revertsWith_InsufficientLiquidity_due_to_remove(uint256) (runs: 5000, μ: 129596, ~: 129408)
[PASS] test_draw_fuzz_revertsWith_InvalidAddress(uint256) (runs: 5000, μ: 15763, ~: 15763)
[PASS] test_draw_revertsWith_DrawCapExceeded_due_to_deficit() (gas: 255508)
[PASS] test_draw_revertsWith_InsufficientLiquidity() (gas: 28010)
[PASS] test_draw_revertsWith_InsufficientLiquidity_due_to_draw() (gas: 179419)
[PASS] test_draw_revertsWith_InsufficientLiquidity_due_to_remove() (gas: 126717)
[PASS] test_draw_revertsWith_InvalidAmount() (gas: 15816)
[PASS] test_draw_revertsWith_SpokeNotActive() (gas: 56274)
Suite result: ok. 15 passed; 0 failed; 0 skipped; finished in 24.41s (24.39s CPU time)
Ran 5 tests for tests/unit/Hub/Hub.EliminateDeficit.t.sol:HubEliminateDeficitTest
[PASS] test_eliminateDeficit(uint256) (runs: 5000, μ: 508128, ~: 508128)
[PASS] test_eliminateDeficit_fuzz_revertsWith_InvalidAmount_Excess(uint256) (runs: 5000, μ: 254095, ~: 254095)
[PASS] test_eliminateDeficit_fuzz_revertsWith_callerSpokeNotActive(address) (runs: 5000, μ: 28682, ~: 28682)
[PASS] test_eliminateDeficit_revertsWith_InvalidAmount_ZeroAmountNoDeficit() (gas: 19956)
[PASS] test_eliminateDeficit_revertsWith_InvalidAmount_ZeroAmountWithDeficit() (gas: 255217)
Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 10.80s (10.78s CPU time)
Ran 7 tests for tests/gas/Hub.Operations.gas.t.sol:HubOperations_Gas_Tests
[PASS] test_add() (gas: 128904)
[PASS] test_deficit() (gas: 1052979)
[PASS] test_draw() (gas: 372273)
[PASS] test_payFee_transferShares() (gas: 925615)
[PASS] test_refreshPremium() (gas: 127868)
[PASS] test_remove() (gas: 278229)
[PASS] test_restore() (gas: 734275)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 27.75ms (5.14ms CPU time)
Ran 6 tests for tests/unit/Hub/Hub.PayFee.t.sol:HubPayFeeTest
[PASS] test_payFee_fuzz(uint256,uint256) (runs: 5000, μ: 668977, ~: 668951)
[PASS] test_payFee_fuzz_with_interest(uint256,uint256,uint256) (runs: 5000, μ: 669232, ~: 669380)
[PASS] test_payFee_revertsWith_AddedSharesExceeded() (gas: 132668)
[PASS] test_payFee_revertsWith_AddedSharesExceeded_with_interest() (gas: 635404)
[PASS] test_payFee_revertsWith_InvalidShares() (gas: 19997)
[PASS] test_payFee_revertsWith_SpokeNotActive() (gas: 56255)
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 18.96s (18.94s CPU time)
Ran 10 tests for tests/unit/Hub/Hub.Reclaim.t.sol:HubReclaimTest
[PASS] test_reclaim() (gas: 678367)
Logs:
Bound result 1000000000000000000000
Bound result 500000000000000000000
Bound result 200000000000000000000
[PASS] test_reclaim_fullAmount() (gas: 659113)
[PASS] test_reclaim_fuzz(uint256,uint256,uint256) (runs: 5000, μ: 679899, ~: 679364)
[PASS] test_reclaim_multipleSweepsAndReclaims() (gas: 787127)
[PASS] test_reclaim_revertsWith_AssetNotListed() (gas: 12513)
[PASS] test_reclaim_revertsWith_InvalidAmount_exceedsSwept() (gas: 92282)
[PASS] test_reclaim_revertsWith_InvalidAmount_exceedsSwept_afterSweep() (gas: 465881)
[PASS] test_reclaim_revertsWith_InvalidAmount_zero() (gas: 90614)
[PASS] test_reclaim_revertsWith_OnlyReinvestmentController(address) (runs: 5000, μ: 91592, ~: 91592)
[PASS] test_reclaim_revertsWith_OnlyReinvestmentController_init() (gas: 38048)
Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 12.38s (12.36s CPU time)
Ran 17 tests for tests/unit/Spoke/Spoke.Borrow.HealthFactor.t.sol:SpokeBorrowHealthFactorTest
[PASS] test_borrow_fuzz_revertsWith_HealthFactorBelowThreshold_collateral_price_drop(uint256,uint256) (runs: 5000, μ: 898846, ~: 898907)
[PASS] test_borrow_fuzz_revertsWith_HealthFactorBelowThreshold_multiple_colls(uint256,uint256) (runs: 5000, μ: 859088, ~: 860002)
[PASS] test_borrow_fuzz_revertsWith_HealthFactorBelowThreshold_multiple_colls_with_interest(uint256,uint256,uint256) (runs: 5000, μ: 905265, ~: 902605)
[PASS] test_borrow_fuzz_revertsWith_HealthFactorBelowThreshold_multiple_debts(uint256,uint256) (runs: 5000, μ: 1123269, ~: 1123389)
[PASS] test_borrow_fuzz_revertsWith_HealthFactorBelowThreshold_multiple_debts_with_interest(uint256,uint256,uint256) (runs: 5000, μ: 1186073, ~: 1187657)
[PASS] test_borrow_fuzz_revertsWith_HealthFactorBelowThreshold_with_interest(uint256,uint256) (runs: 5000, μ: 694036, ~: 694588)
[PASS] test_borrow_revertsWith_HealthFactorBelowThreshold() (gas: 649964)
[PASS] test_borrow_revertsWith_HealthFactorBelowThreshold_collateral_price_drop_weth() (gas: 892990)
[PASS] test_borrow_revertsWith_HealthFactorBelowThreshold_multiple_colls() (gas: 853602)
[PASS] test_borrow_revertsWith_HealthFactorBelowThreshold_multiple_colls_collateral_price_drop_dai() (gas: 1107409)
[PASS] test_borrow_revertsWith_HealthFactorBelowThreshold_multiple_colls_collateral_price_drop_weth() (gas: 1107453)
[PASS] test_borrow_revertsWith_HealthFactorBelowThreshold_multiple_colls_with_interest() (gas: 905963)
[PASS] test_borrow_revertsWith_HealthFactorBelowThreshold_multiple_debts() (gas: 1116447)
[PASS] test_borrow_revertsWith_HealthFactorBelowThreshold_multiple_debts_with_interest() (gas: 1180455)
[PASS] test_borrow_revertsWith_HealthFactorBelowThreshold_with_interest() (gas: 689860)
[PASS] test_fuzz_borrow_revertsWith_HealthFactorBelowThreshold_multiple_colls_collateral_price_drop_dai(uint256,uint256,uint256) (runs: 5000, μ: 1111104, ~: 1112209)
[PASS] test_fuzz_borrow_revertsWith_HealthFactorBelowThreshold_multiple_colls_collateral_price_drop_weth(uint256,uint256,uint256) (runs: 5000, μ: 1111740, ~: 1112231)
Suite result: ok. 17 passed; 0 failed; 0 skipped; finished in 139.92s (139.90s CPU time)
Ran 7 tests for tests/unit/Hub/Hub.RefreshPremium.t.sol:HubRefreshPremiumTest
[PASS] test_refreshPremium_emitsEvent() (gas: 172658)
[PASS] test_refreshPremium_fuzz_positiveDeltas(int256,int256,int256) (runs: 5000, μ: 145737, ~: 146476)
[PASS] test_refreshPremium_fuzz_withAccrual(uint256,uint256,uint256,uint256) (runs: 5000, μ: 570333, ~: 570898)
[PASS] test_refreshPremium_negativeDeltas(int256,int256) (runs: 5000, μ: 478666, ~: 479187)
[PASS] test_refreshPremium_negativeDeltas_withAccrual(uint256,uint256) (runs: 5000, μ: 552296, ~: 561323)
[PASS] test_refreshPremium_revertsWith_SpokeNotActive() (gas: 54141)
[PASS] test_refreshPremium_spokePremiumUpdateIsContained() (gas: 746227)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 21.91s (21.89s CPU time)
Ran 12 tests for tests/unit/Hub/Hub.Remove.t.sol:HubRemoveTest
[PASS] test_remove() (gas: 199960)
Logs:
Bound result 2
Bound result 100000000000000000000
[PASS] test_remove_all_with_interest() (gas: 402060)
[PASS] test_remove_fuzz(uint256,uint256) (runs: 5000, μ: 198489, ~: 198284)
[PASS] test_remove_fuzz_all_liquidity_with_interest(uint256,uint256) (runs: 5000, μ: 439923, ~: 442365)
[PASS] test_remove_fuzz_multi_spoke(uint256,uint256) (runs: 5000, μ: 280207, ~: 280346)
[PASS] test_remove_fuzz_multi_spoke_with_interest(uint256,uint256,uint256,uint256) (runs: 5000, μ: 453640, ~: 456754)
[PASS] test_remove_revertsWith_AddedAmountExceeded() (gas: 142150)
[PASS] test_remove_revertsWith_AddedAmountExceeded_zero_added() (gas: 29951)
[PASS] test_remove_revertsWith_InsufficientLiquidity() (gas: 171653)
[PASS] test_remove_revertsWith_InvalidAddress() (gas: 15746)
[PASS] test_remove_revertsWith_InvalidAmount() (gas: 17803)
[PASS] test_remove_revertsWith_SpokeNotActive() (gas: 56308)
Suite result: ok. 12 passed; 0 failed; 0 skipped; finished in 30.40s (30.38s CPU time)
Ran 5 tests for tests/unit/Hub/Hub.ReportDeficit.t.sol:HubReportDeficitTest
[PASS] test_reportDeficit_fuzz_revertsWith_SurplusDeficitReported(uint256,uint256,uint256,uint256) (runs: 5000, μ: 160682, ~: 160695)
[PASS] test_reportDeficit_fuzz_with_premium(uint256,uint256,uint256,uint256) (runs: 5000, μ: 341877, ~: 343828)
[PASS] test_reportDeficit_revertsWith_InvalidAmount() (gas: 18021)
[PASS] test_reportDeficit_revertsWith_SpokeNotActive(address) (runs: 5000, μ: 26179, ~: 26179)
[PASS] test_reportDeficit_with_premium() (gas: 342295)
Logs:
Bound result 10000000000
Bound result 31536000
Bound result 5000000000
Bound result 0
Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 7.34s (7.32s CPU time)
Ran 19 tests for tests/unit/Hub/Hub.Restore.t.sol:HubRestoreTest
[PASS] test_restore_full_amount_with_interest() (gas: 359948)
Logs:
Bound result 1000000000000000000000
Bound result 500000000000000000000
Bound result 31536000
[PASS] test_restore_full_amount_with_interest_and_premium() (gas: 668432)
Logs:
Bound result 100000000000000000000
Bound result 50000000000000000000
Bound result 31536000
Bound result 1
[PASS] test_restore_fuzz_full_amount_with_interest(uint256,uint256,uint256) (runs: 5000, μ: 358538, ~: 360877)
[PASS] test_restore_fuzz_full_amount_with_interest_and_premium(uint256,uint256,uint256,uint256) (runs: 5000, μ: 651886, ~: 669858)
[PASS] test_restore_fuzz_revertsWith_SurplusAmountRestored_with_interest(uint256,uint256,uint256) (runs: 5000, μ: 249110, ~: 252828)
[PASS] test_restore_fuzz_revertsWith_SurplusAmountRestored_with_interest_and_premium(uint256,uint256,uint256,uint256) (runs: 5000, μ: 633629, ~: 637296)
[PASS] test_restore_partial_drawn() (gas: 335524)
[PASS] test_restore_partial_same_block() (gas: 314013)
[PASS] test_restore_premiumDeltas_twoWeiIncrease_realizedDelta() (gas: 254858)
[PASS] test_restore_revertsWith_InvalidAmount_zero() (gas: 44823)
[PASS] test_restore_revertsWith_InvalidPremiumChange_premiumIncrease() (gas: 238860)
[PASS] test_restore_revertsWith_InvalidPremiumChange_premiumSharesIncrease() (gas: 238880)
[PASS] test_restore_revertsWith_SpokeNotActive_whenPaused() (gas: 151755)
[PASS] test_restore_revertsWith_SurplusAmountRestored() (gas: 339224)
[PASS] test_restore_revertsWith_SurplusAmountRestored_with_interest() (gas: 252070)
Logs:
Bound result 100000000000000000000
Bound result 50000000000000000000
Bound result 15768000
[PASS] test_restore_revertsWith_SurplusAmountRestored_with_interest_and_premium() (gas: 635956)
Logs:
Bound result 100000000000000000000
Bound result 50000000000000000000
Bound result 31536000
Bound result 1
[PASS] test_restore_revertsWith_underflow_offsetIncrease() (gas: 238687)
[PASS] test_restore_two_wei_shares_delta_increase() (gas: 249527)
[PASS] test_restore_when_asset_frozen() (gas: 413158)
Suite result: ok. 19 passed; 0 failed; 0 skipped; finished in 20.14s (20.12s CPU time)
Ran 1 test for tests/unit/Hub/Hub.Rounding.t.sol:HubRoundingTest
[PASS] test_sharePriceWithMultipleDonations() (gas: 700580873)
Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 3.81s (3.79s CPU time)
Ran 8 tests for tests/unit/Hub/Hub.Sweep.t.sol:HubSweepTest
[PASS] test_sweep() (gas: 484180)
Logs:
Bound result 1000000000000000000000
Bound result 1000000000000000000000
[PASS] test_sweep_does_not_impact_utilization(uint256,uint256) (runs: 5000, μ: 647029, ~: 648272)
[PASS] test_sweep_fuzz(uint256,uint256) (runs: 5000, μ: 484695, ~: 484702)
[PASS] test_sweep_revertsWith_AssetNotListed() (gas: 12362)
[PASS] test_sweep_revertsWith_InsufficientLiquidity() (gas: 234819)
[PASS] test_sweep_revertsWith_InvalidAmount() (gas: 101518)
[PASS] test_sweep_revertsWith_OnlyReinvestmentController(address) (runs: 5000, μ: 92052, ~: 92052)
[PASS] test_sweep_revertsWith_OnlyReinvestmentController_init() (gas: 37943)
Suite result: ok. 8 passed; 0 failed; 0 skipped; finished in 15.48s (15.46s CPU time)
Ran 6 tests for tests/unit/Hub/Hub.TransferShares.t.sol:HubTransferSharesTest
[PASS] test_transferShares() (gas: 170580)
Logs:
Bound result 1000000000000000000000
Bound result 1000000000000000000000
[PASS] test_transferShares_fuzz(uint256,uint256) (runs: 5000, μ: 174023, ~: 174165)
[PASS] test_transferShares_fuzz_revertsWith_AddedSharesExceeded(uint256) (runs: 5000, μ: 140481, ~: 140219)
[PASS] test_transferShares_revertsWith_AddCapExceeded() (gas: 183071)
[PASS] test_transferShares_revertsWith_InactiveSpoke() (gas: 163958)
[PASS] test_transferShares_zeroShares_revertsWith_InvalidShares() (gas: 22183)
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 3.87s (3.85s CPU time)
Ran 6 tests for tests/unit/Hub/HubAccrueInterest.t.sol:HubAccrueInterestTest
[PASS] test_accrueInterest_NoActionTaken() (gas: 41386)
[PASS] test_accrueInterest_NoInterest_NoDebt(uint32) (runs: 5000, μ: 333782, ~: 333707)
[PASS] test_accrueInterest_NoInterest_OnlyAdd(uint32) (runs: 5000, μ: 187471, ~: 187396)
[PASS] test_accrueInterest_fuzz_BorrowAmountAndElapsed(uint256,uint32) (runs: 5000, μ: 263043, ~: 265319)
[PASS] test_accrueInterest_fuzz_BorrowAmountRateAndElapsed(uint256,uint256,uint32) (runs: 5000, μ: 363300, ~: 366991)
[PASS] test_accrueInterest_fuzz_BorrowAndWait(uint32) (runs: 5000, μ: 264350, ~: 264275)
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 22.32s (22.30s CPU time)
Ran 51 tests for tests/unit/HubConfigurator.t.sol:HubConfiguratorTest
[PASS] test_addAsset_fuzz(bool,address,uint8,address,uint16,uint32,uint32,uint32) (runs: 5000, μ: 850764, ~: 851122)
[PASS] test_addAsset_fuzz_revertsWith_InvalidAssetDecimals(bool,address,uint8,address,address) (runs: 5000, μ: 56317, ~: 56745)
[PASS] test_addAsset_fuzz_revertsWith_OwnableUnauthorizedAccount(address) (runs: 5000, μ: 34820, ~: 34820)
[PASS] test_addAsset_revertsWith_InvalidAddress_irStrategy() (gas: 50467)
[PASS] test_addAsset_revertsWith_InvalidAddress_underlying() (gas: 50388)
[PASS] test_addAsset_reverts_invalidIrData() (gas: 44306)
[PASS] test_addSpoke() (gas: 122976)
[PASS] test_addSpokeToAssets() (gas: 216144)
[PASS] test_addSpokeToAssets_revertsWith_MismatchedConfigs() (gas: 24368)
[PASS] test_addSpokeToAssets_revertsWith_OwnableUnauthorizedAccount() (gas: 17149)
[PASS] test_addSpoke_revertsWith_OwnableUnauthorizedAccount() (gas: 16730)
[PASS] test_freezeAsset() (gas: 152694)
[PASS] test_freezeAsset_revertsWith_OwnableUnauthorizedAccount() (gas: 18029)
[PASS] test_freezeSpoke() (gas: 149872)
[PASS] test_freezeSpoke_revertsWith_OwnableUnauthorizedAccount() (gas: 17994)
[PASS] test_pauseAsset() (gas: 149920)
[PASS] test_pauseAsset_revertsWith_OwnableUnauthorizedAccount() (gas: 17876)
[PASS] test_pauseSpoke() (gas: 147175)
[PASS] test_pauseSpoke_revertsWith_OwnableUnauthorizedAccount() (gas: 18058)
[PASS] test_updateFeeConfig_Scenario() (gas: 320937)
Logs:
Bound result 0
Bound result 1800
Bound result 0
Bound result 400
Bound result 0
Bound result 0
[PASS] test_updateFeeConfig_fuzz(uint256,uint16,address) (runs: 5000, μ: 173558, ~: 173449)
[PASS] test_updateFeeConfig_fuzz_revertsWith_OwnableUnauthorizedAccount(address) (runs: 5000, μ: 17639, ~: 17639)
[PASS] test_updateFeeConfig_revertsWith_InvalidAddress_spoke() (gas: 48037)
[PASS] test_updateFeeConfig_revertsWith_InvalidLiquidityFee() (gas: 50070)
[PASS] test_updateFeeReceiver_Scenario() (gas: 203866)
[PASS] test_updateFeeReceiver_WithdrawFromOldSpoke() (gas: 959009)
[PASS] test_updateFeeReceiver_correctAccruals() (gas: 986508)
[PASS] test_updateFeeReceiver_fuzz(address) (runs: 5000, μ: 170001, ~: 170001)
[PASS] test_updateFeeReceiver_fuzz_revertsWith_OwnableUnauthorizedAccount(address) (runs: 5000, μ: 17247, ~: 17247)
[PASS] test_updateFeeReceiver_revertsWith_InvalidAddress_spoke() (gas: 52706)
[PASS] test_updateFeeReceiver_revertsWith_SpokeAlreadyListed() (gas: 73873)
[PASS] test_updateInterestRateData() (gas: 71508)
[PASS] test_updateInterestRateData_revertsWith_OwnableUnauthorizedAccount() (gas: 19193)
[PASS] test_updateInterestRateStrategy() (gas: 91086)
[PASS] test_updateInterestRateStrategy_fuzz_revertsWith_OwnableUnauthorizedAccount(address) (runs: 5000, μ: 28636, ~: 28636)
[PASS] test_updateInterestRateStrategy_revertsWith_InterestRateStrategyReverts() (gas: 74583)
[PASS] test_updateInterestRateStrategy_revertsWith_InvalidAddress_irStrategy() (gas: 64264)
[PASS] test_updateInterestRateStrategy_revertsWith_InvalidInterestRateStrategy() (gas: 64780)
[PASS] test_updateLiquidityFee_fuzz(uint256,uint16) (runs: 5000, μ: 84254, ~: 84112)
[PASS] test_updateLiquidityFee_revertsWith_InvalidLiquidityFee() (gas: 52632)
[PASS] test_updateLiquidityFee_revertsWith_OwnableUnauthorizedAccount() (gas: 16589)
[PASS] test_updateReinvestmentController() (gas: 98982)
[PASS] test_updateReinvestmentController_fuzz_revertsWith_OwnableUnauthorizedAccount(address) (runs: 5000, μ: 17249, ~: 17249)
[PASS] test_updateSpokeActive() (gas: 76881)
[PASS] test_updateSpokeActive_revertsWith_OwnableUnauthorizedAccount() (gas: 20213)
[PASS] test_updateSpokeCaps() (gas: 60604)
[PASS] test_updateSpokeCaps_revertsWith_OwnableUnauthorizedAccount() (gas: 20194)
[PASS] test_updateSpokeDrawCap() (gas: 60467)
[PASS] test_updateSpokeDrawCap_revertsWith_OwnableUnauthorizedAccount() (gas: 20267)
[PASS] test_updateSpokeSupplyCap() (gas: 60329)
[PASS] test_updateSpokeSupplyCap_revertsWith_OwnableUnauthorizedAccount() (gas: 20126)
Suite result: ok. 51 passed; 0 failed; 0 skipped; finished in 9.65s (9.64s CPU time)
Ran 2 tests for tests/invariant/HubInvariant.t.sol:HubInvariant
[SKIP] invariant_exchangeRateMonotonicallyIncreasing() (runs: 1, calls: 1, reverts: 1)
[SKIP] invariant_reserveTotalAssets() (runs: 1, calls: 1, reverts: 1)
Suite result: ok. 0 passed; 0 failed; 2 skipped; finished in 5.22ms (609.07µs CPU time)
Ran 6 tests for tests/unit/Spoke/Spoke.Borrow.Scenario.t.sol:SpokeBorrowScenarioTest
[PASS] test_borrow_fuzz_multi_spoke_multi_reserves(uint256,uint256,uint256,uint256,uint256) (runs: 5000, μ: 2214715, ~: 2225441)
[PASS] test_borrow_fuzz_single_spoke_multi_reserves(uint256,uint256,uint256,uint256) (runs: 5000, μ: 2362602, ~: 2372039)
[PASS] test_borrow_fuzz_single_spoke_multi_reserves_multi_user(uint256,uint256,uint256,uint256) (runs: 5000, μ: 2766822, ~: 2776034)
[PASS] test_borrow_fuzz_skip_borrow(uint256,uint256,uint256) (runs: 5000, μ: 1084896, ~: 1087347)
[PASS] test_borrow_skip_borrow() (gas: 1086532)
Logs:
Bound result 10000000000000000000
Bound result 20000000000000000000
Bound result 31536000
[PASS] test_userAccountData_does_not_include_zero_cf_collateral() (gas: 1161311)
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 190.64s (190.62s CPU time)
Ran 6 tests for tests/unit/KeyValueList.t.sol:KeyValueListTest
[PASS] test_fuzz_get(uint256[]) (runs: 5000, μ: 420051, ~: 421661)
[PASS] test_fuzz_get_uninitialized(uint256[]) (runs: 5000, μ: 265792, ~: 253588)
[PASS] test_fuzz_get_uninitialized_sorted(uint256[]) (runs: 5000, μ: 207499, ~: 189065)
[PASS] test_fuzz_sortByKey(uint256[]) (runs: 5000, μ: 472409, ~: 468157)
[PASS] test_fuzz_sortByKey_length(uint256) (runs: 5000, μ: 201626, ~: 204412)
[PASS] test_fuzz_sortByKey_with_collision(uint256[]) (runs: 5000, μ: 557706, ~: 555919)
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 74.15s (74.15s CPU time)
Ran 3 tests for tests/unit/libraries/LiquidationLogic/LiquidationLogic.DebtToLiquidate.t.sol:LiquidationLogicDebtToLiquidateTest
[PASS] test_calculateDebtToLiquidate_fuzz((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 30548, ~: 30489)
[PASS] test_calculateDebtToLiquidate_fuzz_AmountAdjustedDueToDust((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 32284, ~: 32369)
[PASS] test_calculateDebtToLiquidate_fuzz_ImpossibleToAdjustForDust((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 34441, ~: 34418)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 3.59s (3.57s CPU time)
Ran 7 tests for tests/unit/libraries/LiquidationLogic/LiquidationLogic.DebtToTargetHealthFactor.t.sol:LiquidationLogicDebtToTargetHealthFactorTest
[PASS] test_calculateDebtToTargetHealthFactor_HealthFactorEqualsTargetHealthFactor((uint256,uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 22988, ~: 23049)
[PASS] test_calculateDebtToTargetHealthFactor_NoPrecisionLoss() (gas: 25367)
[PASS] test_calculateDebtToTargetHealthFactor_PrecisionLoss() (gas: 15341)
[PASS] test_calculateDebtToTargetHealthFactor_UnitPrice() (gas: 25300)
[PASS] test_calculateDebtToTargetHealthFactor_fuzz_NoRevert((uint256,uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 20046, ~: 20107)
[PASS] test_calculateDebtToTargetHealthFactor_fuzz_revertsWith_DivisionByZero_ZeroAssetPrice((uint256,uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 22745, ~: 22806)
[PASS] test_calculateDebtToTargetHealthFactor_revertsWith_ArithmeticError_TargetHealthFactorLessThanHealthFactor((uint256,uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 22828, ~: 22889)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 2.96s (2.94s CPU time)
Ran 16 tests for tests/unit/libraries/LiquidationLogic/LiquidationLogic.EvaluateDeficit.t.sol:LiquidationLogicEvaluateDeficitTest
[PASS] test_evaluateDeficit_CRE_SCCM_DRE_BRCM() (gas: 9003)
[PASS] test_evaluateDeficit_CRE_SCCM_DRE_BRCO() (gas: 8971)
[PASS] test_evaluateDeficit_CRE_SCCM_DRN_BRCM() (gas: 8992)
[PASS] test_evaluateDeficit_CRE_SCCM_DRN_BRCO() (gas: 8959)
[PASS] test_evaluateDeficit_CRE_SCCO_DRE_BRCM() (gas: 8985)
[PASS] test_evaluateDeficit_CRE_SCCO_DRE_BRCO() (gas: 9052)
[PASS] test_evaluateDeficit_CRE_SCCO_DRN_BRCM() (gas: 9017)
[PASS] test_evaluateDeficit_CRE_SCCO_DRN_BRCO() (gas: 9005)
[PASS] test_evaluateDeficit_CRN_SCCM_DRE_BRCM() (gas: 9005)
[PASS] test_evaluateDeficit_CRN_SCCM_DRE_BRCO() (gas: 8994)
[PASS] test_evaluateDeficit_CRN_SCCM_DRN_BRCM() (gas: 8928)
[PASS] test_evaluateDeficit_CRN_SCCM_DRN_BRCO() (gas: 8961)
[PASS] test_evaluateDeficit_CRN_SCCO_DRE_BRCM() (gas: 8938)
[PASS] test_evaluateDeficit_CRN_SCCO_DRE_BRCO() (gas: 8995)
[PASS] test_evaluateDeficit_CRN_SCCO_DRN_BRCM() (gas: 8946)
[PASS] test_evaluateDeficit_CRN_SCCO_DRN_BRCO() (gas: 9024)
Suite result: ok. 16 passed; 0 failed; 0 skipped; finished in 18.46ms (948.05µs CPU time)
Ran 14 tests for tests/unit/Spoke/Spoke.Borrow.Validation.t.sol:SpokeBorrowValidationTest
[PASS] test_borrow_fuzz_revertsWith_DrawCapExceeded(uint256,uint56) (runs: 5000, μ: 104282, ~: 104184)
[PASS] test_borrow_fuzz_revertsWith_DrawCapExceeded_due_to_interest(uint256) (runs: 5000, μ: 698178, ~: 698471)
[PASS] test_borrow_fuzz_revertsWith_InsufficientLiquidity(uint256,uint256,uint256) (runs: 5000, μ: 280620, ~: 280440)
[PASS] test_borrow_fuzz_revertsWith_InvalidAmount(uint256) (runs: 5000, μ: 32624, ~: 32684)
[PASS] test_borrow_fuzz_revertsWith_ReserveFrozen(uint256,uint256) (runs: 5000, μ: 69356, ~: 69141)
[PASS] test_borrow_fuzz_revertsWith_ReserveNotBorrowable(uint256,uint256) (runs: 5000, μ: 69591, ~: 69376)
[PASS] test_borrow_fuzz_revertsWith_ReserveNotListed(uint256,uint256) (runs: 5000, μ: 26058, ~: 25790)
[PASS] test_borrow_fuzz_revertsWith_ReservePaused(uint256,uint256) (runs: 5000, μ: 69213, ~: 68998)
[PASS] test_borrow_revertsWith_InsufficientLiquidity() (gas: 280354)
Logs:
Bound result 10000000000000000000
[PASS] test_borrow_revertsWith_InvalidAmount() (gas: 34295)
Logs:
Bound result 2
[PASS] test_borrow_revertsWith_ReserveFrozen() (gas: 70747)
Logs:
Bound result 2
Bound result 1
[PASS] test_borrow_revertsWith_ReserveNotBorrowable() (gas: 70936)
Logs:
Bound result 2
Bound result 1
[PASS] test_borrow_revertsWith_ReserveNotListed() (gas: 27052)
Logs:
Bound result 1
[PASS] test_borrow_revertsWith_ReservePaused() (gas: 70624)
Logs:
Bound result 2
Bound result 1
Suite result: ok. 14 passed; 0 failed; 0 skipped; finished in 15.47s (15.45s CPU time)
Ran 3 tests for tests/unit/libraries/LiquidationLogic/LiquidationLogic.LiquidateCollateral.t.sol:LiquidationLogicLiquidateCollateralTest
[PASS] test_liquidateCollateral_fuzz(uint256,uint256) (runs: 5000, μ: 238463, ~: 238875)
[PASS] test_liquidateCollateral_fuzz_revertsWith_ArithmeticUnderflow(uint256,uint256) (runs: 5000, μ: 92477, ~: 92273)
[PASS] test_liquidateCollateral_fuzz_revertsWith_InvalidAmount(uint256) (runs: 5000, μ: 74762, ~: 74742)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 4.15s (4.13s CPU time)
Ran 4 tests for tests/unit/libraries/LiquidationLogic/LiquidationLogic.LiquidateDebt.t.sol:LiquidationLogicLiquidateDebtTest
[PASS] test_liquidateDebt_fuzz(uint256) (runs: 5000, μ: 181043, ~: 181043)
[PASS] test_liquidateDebt_revertsWith_ArithmeticUnderflow() (gas: 146039)
[PASS] test_liquidateDebt_revertsWith_InsufficientAllowance() (gas: 149953)
[PASS] test_liquidateDebt_revertsWith_InsufficientBalance() (gas: 198106)
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 2.44s (2.42s CPU time)
Ran 4 tests for tests/unit/libraries/LiquidationLogic/LiquidationLogic.LiquidateUser.t.sol:LiquidationLogicLiquidateUserTest
[PASS] test_liquidateUser() (gas: 353283)
[PASS] test_liquidateUser_revertsWith_InvalidDebtToCover() (gas: 69106)
[PASS] test_liquidateUser_revertsWith_MustNotLeaveDust_Collateral() (gas: 100637)
[PASS] test_liquidateUser_revertsWith_MustNotLeaveDust_Debt() (gas: 109615)
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 24.61ms (1.60ms CPU time)
Ran 8 tests for tests/unit/libraries/LiquidationLogic/LiquidationLogic.LiquidationAmounts.t.sol:LiquidationLogicLiquidationAmountsTest
[PASS] test_calculateLiquidationAmounts_EnoughCollateral() (gas: 15155)
[PASS] test_calculateLiquidationAmounts_InsufficientCollateral() (gas: 15402)
[PASS] test_calculateLiquidationAmounts_fuzz_EnoughCollateral_CollateralDust((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 53776, ~: 53734)
[PASS] test_calculateLiquidationAmounts_fuzz_EnoughCollateral_NoCollateralDust((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 52901, ~: 52850)
[PASS] test_calculateLiquidationAmounts_fuzz_EnoughCollateral_NoDebtLeft((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 69553, ~: 69463)
[PASS] test_calculateLiquidationAmounts_fuzz_InsufficientCollateral((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 56957, ~: 56827)
[PASS] test_calculateLiquidationAmounts_fuzz_revertsWith_MustNotLeaveDust_Collateral((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 52752, ~: 52629)
[PASS] test_calculateLiquidationAmounts_fuzz_revertsWith_MustNotLeaveDust_Debt((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 65000, ~: 65008)
Suite result: ok. 8 passed; 0 failed; 0 skipped; finished in 19.07s (19.06s CPU time)
Ran 2 tests for tests/unit/Spoke/Spoke.Borrow.t.sol:SpokeBorrowTest
[PASS] test_borrow() (gas: 1077047)
[PASS] test_borrow_fuzz_amounts(uint256,uint256) (runs: 5000, μ: 1069119, ~: 1069164)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 24.79s (24.77s CPU time)
Ran 4 tests for tests/unit/libraries/LiquidationLogic/LiquidationLogic.LiquidationBonus.t.sol:LiquidationLogicLiquidationBonusTest
[PASS] test_calculateLiquidationBonus_MinBonusDueToRounding() (gas: 9360)
[PASS] test_calculateLiquidationBonus_PartialBonus() (gas: 9381)
[PASS] test_calculateLiquidationBonus_fuzz_ConstantBonus(uint256,uint256,uint256,uint256) (runs: 5000, μ: 17229, ~: 17178)
[PASS] test_calculateLiquidationBonus_fuzz_MaxBonus(uint256,uint256,uint256,uint256) (runs: 5000, μ: 19567, ~: 19506)
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 1.02s (1.00s CPU time)
Ran 12 tests for tests/unit/libraries/LiquidationLogic/LiquidationLogic.ValidateLiquidationCall.t.sol:LiquidationLogicValidateLiquidationCallTest
[PASS] test_validateLiquidationCall() (gas: 28553)
[PASS] test_validateLiquidationCall_revertsWith_CollateralCannotBeLiquidated_NotUsingAsCollateral() (gas: 29608)
[PASS] test_validateLiquidationCall_revertsWith_CollateralCannotBeLiquidated_ZeroCollateralFactor() (gas: 29657)
[PASS] test_validateLiquidationCall_revertsWith_HealthFactorNotBelowThreshold() (gas: 34372)
[PASS] test_validateLiquidationCall_revertsWith_InvalidDebtToCover() (gas: 29343)
[PASS] test_validateLiquidationCall_revertsWith_ReserveNotBorrowed() (gas: 29742)
[PASS] test_validateLiquidationCall_revertsWith_ReserveNotListed_ZeroCollateralHub() (gas: 29440)
[PASS] test_validateLiquidationCall_revertsWith_ReserveNotListed_ZeroDebtHub() (gas: 29497)
[PASS] test_validateLiquidationCall_revertsWith_ReserveNotSupplied() (gas: 29644)
[PASS] test_validateLiquidationCall_revertsWith_ReservePaused_CollateralPaused() (gas: 34376)
[PASS] test_validateLiquidationCall_revertsWith_ReservePaused_DebtPaused() (gas: 34392)
[PASS] test_validateLiquidationCall_revertsWith_SelfLiquidation() (gas: 36299)
Suite result: ok. 12 passed; 0 failed; 0 skipped; finished in 19.08ms (967.37µs CPU time)
Ran 26 tests for tests/unit/MathUtils.t.sol:MathUtilsTest
[PASS] test_add_edge_cases() (gas: 4788)
[PASS] test_add_negative_operand(uint256,int256) (runs: 5000, μ: 9327, ~: 9561)
[PASS] test_add_positive_operand(uint256,int256) (runs: 5000, μ: 4013, ~: 4010)
[PASS] test_calculateLinearInterest() (gas: 4511)
[PASS] test_calculateLinearInterest_add_edge() (gas: 5087)
[PASS] test_calculateLinearInterest_edge_cases() (gas: 16870)
Logs:
Bound result 0
Bound result 1
Bound result 864000000
Bound result 864000000
[PASS] test_calculateLinearInterest_reverts_on_past_timestamp(uint32) (runs: 5000, μ: 7588, ~: 7508)
[PASS] test_constants() (gas: 3211)
[PASS] test_fuzz_calculateLinearInterest(uint96,uint32,uint256) (runs: 5000, μ: 8687, ~: 8997)
[PASS] test_fuzz_mulDivDown(uint256,uint256,uint256) (runs: 5000, μ: 3491, ~: 3545)
[PASS] test_fuzz_mulDivUp(uint256,uint256,uint256) (runs: 5000, μ: 3665, ~: 3781)
[PASS] test_min(uint256,uint256) (runs: 5000, μ: 3338, ~: 3339)
[PASS] test_mulDivDown_NoRemainder() (gas: 3324)
[PASS] test_mulDivDown_RevertOnDivByZero() (gas: 3191)
[PASS] test_mulDivDown_RevertOnOverflow() (gas: 3203)
[PASS] test_mulDivDown_WithRemainder() (gas: 3236)
[PASS] test_mulDivDown_ZeroAOrB() (gas: 3768)
[PASS] test_mulDivUp_NoRemainder() (gas: 3350)
[PASS] test_mulDivUp_RevertOnDivByZero() (gas: 3146)
[PASS] test_mulDivUp_RevertOnOverflow() (gas: 3204)
[PASS] test_mulDivUp_WithRemainder() (gas: 3349)
[PASS] test_mulDivUp_ZeroAOrB() (gas: 3818)
[PASS] test_signedSub(uint256,uint256) (runs: 5000, μ: 8639, ~: 8594)
[PASS] test_uncheckedAdd(uint256,uint256) (runs: 5000, μ: 3461, ~: 3452)
[PASS] test_uncheckedExp(uint256,uint256) (runs: 5000, μ: 11547, ~: 7728)
[PASS] test_uncheckedSub(uint256,uint256) (runs: 5000, μ: 3457, ~: 3540)
Suite result: ok. 26 passed; 0 failed; 0 skipped; finished in 1.65s (1.65s CPU time)
Ran 24 tests for tests/unit/Spoke/Spoke.Config.t.sol:SpokeConfigTest
[PASS] test_addReserve() (gas: 390259)
[PASS] test_addReserve_fuzz_revertsWith_AssetNotListed() (gas: 245721)
[PASS] test_addReserve_revertsWith_InvalidAddress_hub() (gas: 5924045)
[PASS] test_addReserve_revertsWith_InvalidAddress_oracle() (gas: 5961170)
[PASS] test_addReserve_revertsWith_InvalidAssetId() (gas: 33171)
[PASS] test_addReserve_revertsWith_ReserveExists() (gas: 374812)
[PASS] test_spoke_deploy() (gas: 4858230)
[PASS] test_spoke_deploy_revertsWith_InvalidOracleDecimals() (gas: 46309)
[PASS] test_spoke_deploy_reverts_on_InvalidConstructorInput() (gas: 43704)
[PASS] test_updateLiquidationConfig_fuzz_liqBonusConfig((uint128,uint64,uint16)) (runs: 5000, μ: 52149, ~: 52143)
[PASS] test_updateLiquidationConfig_fuzz_revertsWith_InvalidLiquidationConfig_healthFactorForMaxBonus((uint128,uint64,uint16)) (runs: 5000, μ: 37806, ~: 37949)
[PASS] test_updateLiquidationConfig_fuzz_revertsWith_InvalidLiquidationConfig_liquidationBonusFactor((uint128,uint64,uint16)) (runs: 5000, μ: 37380, ~: 37159)
[PASS] test_updateLiquidationConfig_fuzz_targetHealthFactor(uint128) (runs: 5000, μ: 46855, ~: 47159)
[PASS] test_updateLiquidationConfig_liqBonusConfig() (gas: 51102)
Logs:
Bound result 900000000000000000
Bound result 1000
Bound result 1000000000000000000
[PASS] test_updateLiquidationConfig_revertsWith_InvalidLiquidationConfig_healthFactorForMaxBonus() (gas: 36462)
Logs:
Bound result 1000000000000000000
Bound result 1000
Bound result 1000000000000000000
[PASS] test_updateLiquidationConfig_revertsWith_InvalidLiquidationConfig_liquidationBonusFactor() (gas: 36256)
Logs:
Bound result 900000000000000000
Bound result 10001
Bound result 1000000000000000000
[PASS] test_updateLiquidationConfig_targetHealthFactor() (gas: 46442)
Logs:
Bound result 1000000000000000001
[PASS] test_updateReserveConfig() (gas: 53839)
[PASS] test_updateReserveConfig_fuzz((bool,bool,bool,uint24)) (runs: 5000, μ: 55249, ~: 55084)
[PASS] test_updateReserveConfig_revertsWith_InvalidCollateralRisk() (gas: 39560)
[PASS] test_updateReserveConfig_revertsWith_ReserveNotListed() (gas: 36209)
[PASS] test_updateReservePriceSource() (gas: 240158)
[PASS] test_updateReservePriceSource_revertsWith_AccessManagedUnauthorized(address) (runs: 5000, μ: 31123, ~: 31125)
[PASS] test_updateReservePriceSource_revertsWith_ReserveNotListed() (gas: 34299)
Suite result: ok. 24 passed; 0 failed; 0 skipped; finished in 4.10s (4.08s CPU time)
Ran 10 tests for tests/unit/Spoke/Spoke.DynamicConfig.Triggers.t.sol:SpokeDynamicConfigTriggersTest
[PASS] test_borrow_triggers_dynamicConfigUpdate() (gas: 1334044)
[PASS] test_liquidate_does_not_trigger_dynamicConfigUpdate() (gas: 1633579)
[PASS] test_repay_does_not_trigger_dynamicConfigUpdate() (gas: 916956)
[PASS] test_supply_does_not_trigger_dynamicConfigUpdate() (gas: 1073387)
[PASS] test_updateUserDynamicConfig_doesHFCheck() (gas: 804744)
[PASS] test_updateUserDynamicConfig_reverts_when_not_authorized(address) (runs: 5000, μ: 1197667, ~: 1197667)
[PASS] test_updateUserDynamicConfig_triggers_dynamicConfigUpdate() (gas: 677920)
[PASS] test_updateUserDynamicConfig_updatesRP() (gas: 1304419)
[PASS] test_usingAsCollateral_triggers_dynamicConfigUpdate() (gas: 1350611)
[PASS] test_withdraw_triggers_dynamicConfigUpdate() (gas: 1370994)
Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 28.54s (28.52s CPU time)
Ran 20 tests for tests/unit/Spoke/Spoke.DynamicConfig.t.sol:SpokeDynamicConfigTest
[PASS] test_addDynamicReserveConfig() (gas: 84967)
[PASS] test_addDynamicReserveConfig_fuzz_revertsWith_InvalidCollateralFactorAndMaxLiquidationBonus_incompatible(uint16,uint32) (runs: 5000, μ: 47681, ~: 47852)
[PASS] test_addDynamicReserveConfig_once() (gas: 541437)
[PASS] test_addDynamicReserveConfig_revertsWith_AccessManagedUnauthorized(address) (runs: 5000, μ: 52361, ~: 52361)
[PASS] test_addDynamicReserveConfig_revertsWith_InvalidCollateralFactorAndMaxLiquidationBonus_collateralFactor() (gas: 59362)
[PASS] test_addDynamicReserveConfig_revertsWith_InvalidCollateralFactorAndMaxLiquidationBonus_liquidationBonus() (gas: 41797)
[PASS] test_addDynamicReserveConfig_revertsWith_InvalidLiquidationFee() (gas: 42271)
[PASS] test_addDynamicReserveConfig_revertsWith_ReserveNotListed() (gas: 34262)
[PASS] test_fuzz_addDynamicReserveConfig_spaced_dup_updates(bytes32) (runs: 5000, μ: 154015, ~: 154015)
[PASS] test_fuzz_addDynamicReserveConfig_trailing_order(bytes32) (runs: 5000, μ: 150702, ~: 150702)
[PASS] test_offboardReserve_existing_borrows_remain_unaffected() (gas: 1161401)
[PASS] test_updateDynamicReserveConfig() (gas: 1715608)
[PASS] test_updateDynamicReserveConfig_fuzz_revertsWith_InvalidCollateralFactorAndMaxLiquidationBonus(uint16,uint32) (runs: 5000, μ: 63274, ~: 63445)
[PASS] test_updateDynamicReserveConfig_revertsWith_AccessManagedUnauthorized(address) (runs: 5000, μ: 52340, ~: 52340)
[PASS] test_updateDynamicReserveConfig_revertsWith_ConfigKeyUninitialized() (gas: 54199)
[PASS] test_updateDynamicReserveConfig_revertsWith_InvalidCollateralFactor() (gas: 56389)
[PASS] test_updateDynamicReserveConfig_revertsWith_InvalidCollateralFactorAndMaxLiquidationBonus_collateralFactor() (gas: 57175)
[PASS] test_updateDynamicReserveConfig_revertsWith_InvalidCollateralFactorAndMaxLiquidationBonus_liquidationBonus() (gas: 57323)
[PASS] test_updateDynamicReserveConfig_revertsWith_InvalidLiquidationFee() (gas: 57861)
[PASS] test_updateDynamicReserveConfig_revertsWith_ReserveNotListed() (gas: 34592)
Suite result: ok. 20 passed; 0 failed; 0 skipped; finished in 10.37s (10.35s CPU time)
Ran 5 tests for tests/gas/Spoke.Getters.gas.t.sol:SpokeGetters_Gas_Tests
[PASS] test_getUserAccountData() (gas: 22798)
[PASS] test_getUserAccountData_oneSupplies() (gas: 274217)
[PASS] test_getUserAccountData_twoSupplies() (gas: 500001)
[PASS] test_getUserAccountData_twoSupplies_oneBorrows() (gas: 1032536)
[PASS] test_getUserAccountData_twoSupplies_twoBorrows() (gas: 1604477)
Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 29.07ms (4.71ms CPU time)
Ran 5 tests for tests/unit/Spoke/Spoke.Getters.t.sol:SpokeGettersTest
[PASS] test_getLiquidationBonus_configured() (gas: 89481)
Logs:
Bound result 2
Bound result 1000000000000000000
Bound result 4000
Bound result 900000000000000000
[PASS] test_getLiquidationBonus_fuzz_configured(uint256,uint256,uint16,uint64) (runs: 5000, μ: 88133, ~: 88592)
[PASS] test_getLiquidationBonus_fuzz_notConfigured(uint256,uint256) (runs: 5000, μ: 65830, ~: 65578)
[PASS] test_getLiquidationBonus_notConfigured() (gas: 67085)
Logs:
Bound result 2
Bound result 1000000000000000000
[PASS] test_protocol_getters() (gas: 279121)
Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 1.98s (1.97s CPU time)
Ran 4 tests for tests/unit/Spoke/Liquidations/Spoke.LiquidationCall.Dust.t.sol:SpokeLiquidationCallDustTest
[PASS] test_collateralDust_min_debtToTarget() (gas: 7374895)
[PASS] test_debtToCover_exceeds_collateralValue() (gas: 7368216)
[PASS] test_dustColl_allowed() (gas: 7213133)
[PASS] test_dustDebt_allowed() (gas: 7363192)
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 48.31ms (23.32ms CPU time)
Ran 34 tests for tests/unit/NativeTokenGateway.t.sol:NativeTokenGatewayTest
[PASS] test_borrowNative() (gas: 625251)
Logs:
Bound result 5000000000000000000
[PASS] test_borrowNative_fuzz(uint256) (runs: 5000, μ: 625508, ~: 625280)
[PASS] test_borrowNative_fuzz_otherReceiver(uint256) (runs: 5000, μ: 651465, ~: 651237)
[PASS] test_borrowNative_otherReceiver() (gas: 651102)
Logs:
Bound result 5000000000000000000
[PASS] test_borrowNative_revertsWith_InvalidAddress() (gas: 30629)
[PASS] test_borrowNative_revertsWith_InvalidAmount() (gas: 30671)
[PASS] test_borrowNative_revertsWith_NotNativeWrappedAsset() (gas: 30754)
[PASS] test_constructor() (gas: 1035094)
[PASS] test_constructor_revertsWith_InvalidAddress() (gas: 129984)
[PASS] test_fallback_revertsWith_UnsupportedAction() (gas: 17453)
[PASS] test_receive_revertsWith_UnsupportedAction() (gas: 17216)
[PASS] test_renouncePositionManagerRole() (gas: 44795)
[PASS] test_renouncePositionManagerRole_revertsWith_OwnableUnauthorizedAccount() (gas: 50939)
[PASS] test_repayNative() (gas: 755999)
Logs:
Bound result 5000000000000000000
[PASS] test_repayNative_excessAmount() (gas: 643732)
[PASS] test_repayNative_fuzz(uint256) (runs: 5000, μ: 755785, ~: 756656)
[PASS] test_repayNative_fuzz_withInterest(uint256,uint256) (runs: 5000, μ: 654404, ~: 648415)
[PASS] test_repayNative_revertsWith_InvalidAmount() (gas: 30645)
[PASS] test_repayNative_revertsWith_NativeAmountMismatch() (gas: 54864)
[PASS] test_repayNative_revertsWith_NotNativeWrappedAsset() (gas: 37450)
[PASS] test_supplyNative() (gas: 234441)
Logs:
Bound result 100000000000000000000
[PASS] test_supplyNative_fuzz(uint256) (runs: 5000, μ: 234777, ~: 234513)
[PASS] test_supplyNative_revertsWith_InvalidAmount() (gas: 30647)
[PASS] test_supplyNative_revertsWith_NativeAmountMismatch() (gas: 54697)
[PASS] test_supplyNative_revertsWith_NotNativeWrappedAsset() (gas: 37363)
[PASS] test_withdrawNative() (gas: 280658)
Logs:
Bound result 100000000000000000000
[PASS] test_withdrawNative_fuzz(uint256) (runs: 5000, μ: 280694, ~: 280708)
[PASS] test_withdrawNative_fuzz_allBalance(uint256) (runs: 5000, μ: 234771, ~: 234582)
[PASS] test_withdrawNative_fuzz_allBalanceWithInterest(uint256,uint256) (runs: 5000, μ: 619722, ~: 620896)
[PASS] test_withdrawNative_fuzz_otherReceiver(uint256) (runs: 5000, μ: 264407, ~: 264219)
[PASS] test_withdrawNative_otherReceiver() (gas: 264226)
Logs:
Bound result 100000000000000000000
[PASS] test_withdrawNative_revertsWith_InvalidAddress() (gas: 30540)
[PASS] test_withdrawNative_revertsWith_InvalidAmount() (gas: 30591)
[PASS] test_withdrawNative_revertsWith_NotNativeWrappedAsset() (gas: 30623)
Suite result: ok. 34 passed; 0 failed; 0 skipped; finished in 48.54s (48.52s CPU time)
Ran 3 tests for tests/unit/NoncesKeyed.t.sol:NoncesKeyedTest
[PASS] test_useCheckedNonce_monotonic(bytes32) (runs: 5000, μ: 16119, ~: 16119)
[PASS] test_useCheckedNonce_revertsWith_InvalidAccountNonce(bytes32) (runs: 5000, μ: 105201, ~: 105201)
[PASS] test_useNonce_monotonic(bytes32) (runs: 5000, μ: 16881, ~: 16881)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 4.50s (4.49s CPU time)
Ran 10 tests for tests/unit/PercentageMath.t.sol:PercentageMathTests
[PASS] test_constants() (gas: 8664)
[PASS] test_fromBpsDown() (gas: 9678)
[PASS] test_percentDiv() (gas: 15222)
[PASS] test_percentDivUp_ge_value(uint256,uint256) (runs: 5000, μ: 15284, ~: 15509)
[PASS] test_percentDivUp_le_value(uint256,uint256) (runs: 5000, μ: 15669, ~: 15662)
[PASS] test_percentDiv_fuzz(uint256,uint256) (runs: 5000, μ: 12880, ~: 13012)
[PASS] test_percentMul() (gas: 15116)
[PASS] test_percentMulUp_ge_value(uint256,uint256) (runs: 5000, μ: 15652, ~: 15645)
[PASS] test_percentMulUp_le_value(uint256,uint256) (runs: 5000, μ: 15287, ~: 15512)
[PASS] test_percentMul_fuzz(uint256,uint256) (runs: 5000, μ: 11734, ~: 12247)
Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 1.52s (1.52s CPU time)
Ran 29 tests for tests/unit/libraries/PositionStatusMap.t.sol:PositionStatusMapTest
[PASS] test_bucketId() (gas: 8971)
[PASS] test_collateralCount() (gas: 110158)
[PASS] test_collateralCount(uint256) (runs: 5000, μ: 2046387, ~: 1846191)
[PASS] test_collateralCount_ignoresInvalidBits() (gas: 124482)
[PASS] test_constants() (gas: 44966)
[PASS] test_fls() (gas: 545261)
[PASS] test_fromBitId(uint256,uint256) (runs: 5000, μ: 14114, ~: 14336)
[PASS] test_fuzz_setBorrowing(uint256,bool) (runs: 5000, μ: 22182, ~: 12233)
[PASS] test_fuzz_setUseAsCollateral(uint256,bool) (runs: 5000, μ: 22278, ~: 12329)
[PASS] test_getBucketWord(uint256) (runs: 5000, μ: 14489, ~: 14489)
[PASS] test_isUsingAsCollateralOrBorrowing_slot0() (gas: 108801)
[PASS] test_isUsingAsCollateralOrBorrowing_slot1() (gas: 44065)
[PASS] test_isolateBorrowing(uint256) (runs: 5000, μ: 162282, ~: 162282)
[PASS] test_isolateBorrowingUntil(uint256,uint256) (runs: 5000, μ: 154738, ~: 154662)
[PASS] test_isolateCollateral(uint256) (runs: 5000, μ: 162044, ~: 162044)
[PASS] test_isolateCollateralUntil(uint256,uint256) (runs: 5000, μ: 154717, ~: 154641)
[PASS] test_isolateUntil(uint256,uint256) (runs: 5000, μ: 143620, ~: 143619)
[PASS] test_next(uint256) (runs: 5000, μ: 20436, ~: 20328)
[PASS] test_nextBorrowing(uint256) (runs: 5000, μ: 18201, ~: 18289)
[PASS] test_nextBorrowing_continuous() (gas: 63845326)
[PASS] test_nextCollateral(uint256) (runs: 5000, μ: 18132, ~: 17716)
[PASS] test_nextCollateral_continuous() (gas: 64381718)
[PASS] test_next_continuous() (gas: 91795620)
[PASS] test_popCount(bytes32) (runs: 5000, μ: 38133, ~: 38133)
[PASS] test_setBorrowing_slot0() (gas: 44129)
[PASS] test_setBorrowing_slot1() (gas: 44166)
[PASS] test_setUseAsCollateral_slot0() (gas: 44203)
[PASS] test_setUseAsCollateral_slot1() (gas: 44185)
[PASS] test_setters_use_correct_slot(uint256) (runs: 5000, μ: 22195, ~: 22195)
Suite result: ok. 29 passed; 0 failed; 0 skipped; finished in 107.32s (107.32s CPU time)
Ran 5 tests for tests/unit/Rescuable.t.sol:RescuableTest
[PASS] test_constructor() (gas: 12654)
[PASS] test_rescueNative_fuzz(uint256) (runs: 5000, μ: 33686, ~: 33370)
[PASS] test_rescueNative_revertsWith_OnlyRescueGuardian() (gas: 11400)
[PASS] test_rescueToken_fuzz(uint256) (runs: 5000, μ: 209614, ~: 209387)
[PASS] test_rescueToken_revertsWith_OnlyRescueGuardian() (gas: 183212)
Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 3.65s (3.63s CPU time)
Ran 10 tests for tests/unit/misc/SignatureGateway/SignatureGateway.Constants.t.sol:SignatureGatewayConstantsTest
[PASS] test_DOMAIN_SEPARATOR() (gas: 2001314)
[PASS] test_borrow_typeHash() (gas: 9858)
[PASS] test_constructor() (gas: 2148562)
[PASS] test_eip712Domain() (gas: 2006941)
[PASS] test_repay_typeHash() (gas: 9915)
[PASS] test_setUsingAsCollateral_typeHash() (gas: 10015)
[PASS] test_supply_typeHash() (gas: 9907)
[PASS] test_updateUserDynamicConfig_typeHash() (gas: 9941)
[PASS] test_updateUserRiskPremium_typeHash() (gas: 9860)
[PASS] test_withdraw_typeHash() (gas: 10037)
Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 19.98ms (2.04ms CPU time)
Ran 4 tests for tests/unit/misc/SignatureGateway/SignatureGateway.PermitReserve.t.sol:SignatureGatewayPermitReserveTest
[PASS] test_permitReserve() (gas: 102469)
[PASS] test_permitReserve_forwards_correct_call() (gas: 49572)
[PASS] test_permitReserve_ignores_permit_reverts() (gas: 38467)
[PASS] test_permitReserve_revertsWith_ReserveNotListed() (gas: 28403)
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 20.01ms (1.80ms CPU time)
Ran 2 tests for tests/unit/misc/SignatureGateway/SignatureGateway.Reverts.InsufficientAllowance.t.sol:SignatureGateway_InsufficientAllowance_Test
[PASS] test_repayWithSig_revertsWith_ERC20InsufficientAllowance() (gas: 469979)
[PASS] test_supplyWithSig_revertsWith_ERC20InsufficientAllowance() (gas: 84088)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 20.40ms (2.63ms CPU time)
Ran 21 tests for tests/unit/misc/SignatureGateway/SignatureGateway.Reverts.InvalidSignature.t.sol:SignatureGatewayInvalidSignatureTest
[PASS] test_borrowWithSig_revertsWith_InvalidAccountNonce(bytes32) (runs: 5000, μ: 186428, ~: 186428)
[PASS] test_borrowWithSig_revertsWith_InvalidSignature_dueTo_ExpiredDeadline() (gas: 36089)
[PASS] test_borrowWithSig_revertsWith_InvalidSignature_dueTo_InvalidSigner() (gas: 34531)
[PASS] test_repayWithSig_revertsWith_InvalidAccountNonce(bytes32) (runs: 5000, μ: 186362, ~: 186362)
[PASS] test_repayWithSig_revertsWith_InvalidSignature_dueTo_ExpiredDeadline() (gas: 36000)
[PASS] test_repayWithSig_revertsWith_InvalidSignature_dueTo_InvalidSigner() (gas: 34575)
[PASS] test_setUsingAsCollateralWithSig_revertsWith_InvalidAccountNonce(bytes32) (runs: 5000, μ: 229846, ~: 229846)
[PASS] test_setUsingAsCollateralWithSig_revertsWith_InvalidSignature_dueTo_ExpiredDeadline() (gas: 36013)
[PASS] test_setUsingAsCollateralWithSig_revertsWith_InvalidSignature_dueTo_InvalidSigner() (gas: 34609)
[PASS] test_supplyWithSig_revertsWith_InvalidAccountNonce(bytes32) (runs: 5000, μ: 186403, ~: 186403)
[PASS] test_supplyWithSig_revertsWith_InvalidSignature_dueTo_ExpiredDeadline() (gas: 36023)
[PASS] test_supplyWithSig_revertsWith_InvalidSignature_dueTo_InvalidSigner() (gas: 34518)
[PASS] test_updateUserDynamicConfigWithSig_revertsWith_InvalidAccountNonce(bytes32) (runs: 5000, μ: 64432, ~: 64432)
[PASS] test_updateUserDynamicConfigWithSig_revertsWith_InvalidSignatureDueTo_InvalidSigner() (gas: 23177)
[PASS] test_updateUserDynamicConfigWithSig_revertsWith_InvalidSignature_dueTo_ExpiredDeadline() (gas: 24609)
[PASS] test_updateUserRiskPremiumWithSig_revertsWith_InvalidAccountNonce(bytes32) (runs: 5000, μ: 64398, ~: 64398)
[PASS] test_updateUserRiskPremiumWithSig_revertsWith_InvalidSignatureDueTo_InvalidSigner() (gas: 23116)
[PASS] test_updateUserRiskPremiumWithSig_revertsWith_InvalidSignature_dueTo_ExpiredDeadline() (gas: 24631)
[PASS] test_withdrawWithSig_revertsWith_InvalidAccountNonce(bytes32) (runs: 5000, μ: 186359, ~: 186359)
[PASS] test_withdrawWithSig_revertsWith_InvalidSignature_dueTo_ExpiredDeadline() (gas: 36087)
[PASS] test_withdrawWithSig_revertsWith_InvalidSignature_dueTo_InvalidSigner() (gas: 34573)
Suite result: ok. 21 passed; 0 failed; 0 skipped; finished in 44.42s (44.41s CPU time)
Ran 7 tests for tests/unit/misc/SignatureGateway/SignatureGateway.Reverts.Unauthorized.t.sol:SignatureGateway_Unauthorized_PositionManagerActive_Test
[PASS] test_borrowWithSig_revertsWith_Unauthorized() (gas: 77394)
[PASS] test_repayWithSig_revertsWith_Unauthorized() (gas: 113815)
[PASS] test_setUsingAsCollateralWithSig_revertsWith_Unauthorized() (gas: 69485)
[PASS] test_supplyWithSig_revertsWith_Unauthorized() (gas: 138267)
[PASS] test_updateUserDynamicConfigWithSig_revertsWith_Unauthorized() (gas: 79130)
[PASS] test_updateUserRiskPremiumWithSig_revertsWith_Unauthorized() (gas: 78917)
[PASS] test_withdrawWithSig_revertsWith_Unauthorized() (gas: 99059)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 27.75ms (4.31ms CPU time)
Ran 7 tests for tests/unit/misc/SignatureGateway/SignatureGateway.Reverts.Unauthorized.t.sol:SignatureGateway_Unauthorized_PositionManagerNotActive_Test
[PASS] test_borrowWithSig_revertsWith_Unauthorized() (gas: 75193)
[PASS] test_repayWithSig_revertsWith_Unauthorized() (gas: 111614)
[PASS] test_setUsingAsCollateralWithSig_revertsWith_Unauthorized() (gas: 67284)
[PASS] test_supplyWithSig_revertsWith_Unauthorized() (gas: 136066)
[PASS] test_updateUserDynamicConfigWithSig_revertsWith_Unauthorized() (gas: 76929)
[PASS] test_updateUserRiskPremiumWithSig_revertsWith_Unauthorized() (gas: 76716)
[PASS] test_withdrawWithSig_revertsWith_Unauthorized() (gas: 96858)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 22.29ms (4.32ms CPU time)
Ran 11 tests for tests/unit/misc/SignatureGateway/SignatureGateway.t.sol:SignatureGatewayTest
[PASS] test_borrowWithSig() (gas: 818139)
[PASS] test_renouncePositionManagerRole() (gas: 26594)
[PASS] test_renouncePositionManagerRole_revertsWith_OnlyOwner() (gas: 16151)
[PASS] test_repayWithSig() (gas: 799384)
[PASS] test_setSelfAsUserPositionManagerWithSig() (gas: 308315)
[PASS] test_setUsingAsCollateralWithSig() (gas: 618102)
[PASS] test_supplyWithSig() (gas: 591044)
[PASS] test_updateUserDynamicConfigWithSig() (gas: 320537)
[PASS] test_updateUserRiskPremiumWithSig() (gas: 913385)
[PASS] test_useNonce_monotonic(bytes32) (runs: 5000, μ: 16724, ~: 16724)
[PASS] test_withdrawWithSig() (gas: 599870)
Suite result: ok. 11 passed; 0 failed; 0 skipped; finished in 446.03ms (428.22ms CPU time)
Ran 3 tests for tests/unit/Spoke/Spoke.Access.t.sol:SpokeAccessTest
[PASS] testAccess_change_authority() (gas: 2612789)
[PASS] testAccess_hub_functions_callable_by_spokes() (gas: 608142)
[PASS] testAccess_spoke_admin_config_access() (gas: 490341)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 21.02ms (3.32ms CPU time)
Ran 1 test for tests/unit/Spoke/Spoke.AccrueInterest.Scenario.t.sol:SpokeAccrueInterestScenarioTest
[SKIP: pending rft] test_accrueInterest_fuzz_RPBorrowAndSkipTime_twoActions((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256),uint32) (runs: 0, μ: 0, ~: 0)
Suite result: ok. 0 passed; 0 failed; 1 skipped; finished in 22.45ms (4.17ms CPU time)
Ran 7 tests for tests/unit/Spoke/Spoke.AccrueInterest.t.sol:SpokeAccrueInterestTest
[PASS] test_accrueInterest_NoActionTaken() (gas: 139082)
[PASS] test_accrueInterest_NoInterest_NoDebt(uint32) (runs: 5001, μ: 670219, ~: 670136)
[PASS] test_accrueInterest_NoInterest_OnlySupply(uint32) (runs: 5001, μ: 258888, ~: 259209)
[PASS] test_accrueInterest_TenPercentRp(uint256,uint32) (runs: 5001, μ: 599993, ~: 600985)
[PASS] test_accrueInterest_fuzz_BorrowAmountAndSkipTime(uint256,uint32) (runs: 5001, μ: 560358, ~: 560918)
[PASS] test_accrueInterest_fuzz_RPBorrowAndSkipTime((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256),uint32) (runs: 5001, μ: 3978803, ~: 3991064)
[PASS] test_accrueInterest_fuzz_RatesRPBorrowAndSkipTime((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256),(uint96,uint96,uint96,uint96),uint32) (runs: 5001, μ: 4034059, ~: 4049547)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 225.58s (225.56s CPU time)
Ran 5 tests for tests/unit/Spoke/Spoke.AccrueLiquidityFee.EdgeCases.t.sol:SpokeAccrueLiquidityFeeEdgeCasesTest
[PASS] test_accrueLiquidityFee_fuzz_maxLiquidityFee_with_premium(uint256,uint256,uint256,uint256) (runs: 5001, μ: 562004, ~: 562170)
[PASS] test_accrueLiquidityFee_fuzz_maxLiquidityFee_with_premium_multiple_users(uint256,uint256,uint256,uint256,uint256) (runs: 5001, μ: 807876, ~: 807877)
[PASS] test_accrueLiquidityFee_maxLiquidityFee_multi_spoke() (gas: 591295420)
[PASS] test_accrueLiquidityFee_maxLiquidityFee_multi_user() (gas: 253104830)
[PASS] test_accrueLiquidityFee_maxLiquidityFee_with_premium() (gas: 562489)
Logs:
Bound result 500000000000000000000
Bound result 5000
Bound result 34560000
Bound result 2
Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 22.13s (22.11s CPU time)
Ran 7 tests for tests/unit/Spoke/Spoke.AccrueLiquidityFee.t.sol:SpokeAccrueLiquidityFeeTest
[PASS] test_accrueLiquidityFee() (gas: 856528)
[PASS] test_accrueLiquidityFee_NoActionTaken() (gas: 98524)
[PASS] test_accrueLiquidityFee_NoInterest_OnlySupply(uint32) (runs: 5001, μ: 236567, ~: 236730)
[PASS] test_accrueLiquidityFee_exact() (gas: 845422)
[PASS] test_accrueLiquidityFee_fuzz_BorrowAmountAndSkipTime(uint256,uint32) (runs: 5001, μ: 840692, ~: 869537)
[PASS] test_accrueLiquidityFee_maxLiquidityFee() (gas: 557331)
[PASS] test_accrueLiquidityFee_setUsingAsCollateral() (gas: 890473)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 20.37s (20.35s CPU time)
Ran 10 tests for tests/gas/Spoke.Operations.gas.t.sol:SpokeOperations_Gas_Tests
[PASS] test_borrow() (gas: 1175220)
[PASS] test_liquidation() (gas: 8307641)
[PASS] test_multicall_ops() (gas: 1609544)
[PASS] test_repay() (gas: 971772)
[PASS] test_setUserPositionManagerWithSig() (gas: 293603)
[PASS] test_supply() (gas: 951367)
[PASS] test_updateRiskPremium() (gas: 1450011)
[PASS] test_updateUserDynamicConfig() (gas: 513768)
[PASS] test_usingAsCollateral() (gas: 1631179)
[PASS] test_withdraw() (gas: 2118350)
Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 47.81ms (24.53ms CPU time)
Ran 10 tests for tests/gas/Spoke.Operations.gas.t.sol:SpokeOperations_ZeroRiskPremium_Gas_Tests
[PASS] test_borrow() (gas: 961177)
[PASS] test_liquidation() (gas: 8128176)
[PASS] test_multicall_ops() (gas: 1474940)
[PASS] test_repay() (gas: 853201)
[PASS] test_setUserPositionManagerWithSig() (gas: 298129)
[PASS] test_supply() (gas: 847096)
[PASS] test_updateRiskPremium() (gas: 964732)
[PASS] test_updateUserDynamicConfig() (gas: 518294)
[PASS] test_usingAsCollateral() (gas: 1138689)
[PASS] test_withdraw() (gas: 1648219)
Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 45.48ms (19.95ms CPU time)
Ran 4 tests for tests/unit/Spoke/Spoke.PermitReserve.t.sol:SpokePermitReserveTest
[PASS] test_permitReserve() (gas: 95231)
[PASS] test_permitReserve_forwards_correct_call() (gas: 42510)
[PASS] test_permitReserve_ignores_permit_reverts() (gas: 27222)
[PASS] test_permitReserve_revertsWith_ReserveNotListedIn() (gas: 23119)
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 19.83ms (1.20ms CPU time)
Ran 12 ...*[Comment body truncated]* |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Add code coverage, gas snapshot, and code size reports to CI, which comment directly on each PR