// SPDX-License-Identifier: MIT pragma solidity ^0.8.24; import {Test} from "forge-std/Test.sol"; import {PluginStalenessDefaults as D} from "../src/PluginStalenessDefaults.sol"; /// Design decisions 2026-10-21: weekend-aware daily feeds, observed defaults kept for slow crypto feeds, /// reverting proxies flagged (access-controlled or broken). contract StalenessDefaultsTest is Test { address constant EUR_USD = 0xc3AEf7663a6022561FfdD84aCAA41572B049E717; address constant AAPL_USD = 0xd73aDd20E3905410B3817725CCabbE639B75B7Cc; address constant XDC_USDT = 0x896CC6fE8AD04dF9f481332606c445768e286076; address constant ALGO = 0x164B762AB770E93eb923451125C18fd2E7f41427; address constant DOGE = 0xA5FA74bC1214Bb7723382F0CdAe12E7998a8DA47; address constant ATOM = 0x2d5637324E912d0C008348D7C9fB6fEF9BEF9Ab2; address constant POL = 0xe6e1D97CC9Dcc053507b7F10569F7D2A9559cC34; address constant BTC_USDT = 0xEe28565FF7583dcB188554BE434665b4235fBCDb; function test_DailyFeedsAreWeekendAware() public pure { assertEq(D.get(EUR_USD), 72 hours); assertEq(D.get(AAPL_USD), 72 hours); assertTrue(D.marketHours(EUR_USD) && D.marketHours(AAPL_USD)); assertFalse(D.marketHours(XDC_USDT)); } function test_SlowCryptoKeepObservedDefaults() public pure { assertEq(D.get(ALGO), 4 hours); assertEq(D.get(DOGE), 5 hours); assertEq(D.get(ATOM), 2 hours); assertEq(D.get(POL), 2 hours); assertEq(D.get(XDC_USDT), 1 hours); } function test_RevertingProxiesFlagged() public pure { assertTrue(D.knownReverting(BTC_USDT)); // empty-data revert: reverting (access-controlled or broken) assertFalse(D.knownReverting(XDC_USDT)); assertEq(D.get(BTC_USDT), 0); // no default for reverting feeds } }