@@ -11,59 +11,74 @@ import {Float, LibDecimalFloat} from "rain.math.float/lib/LibDecimalFloat.sol";
1111contract LibPythGetPriceNoOlderThanTest is Test {
1212 using LibIntOrAString for string ;
1313
14- function getPriceNoOlderThanExternal (IntOrAString symbol , Float maxAge ) external view returns (Float) {
14+ function getPriceNoOlderThanExternal (IntOrAString symbol , Float maxAge ) external view returns (Float, Float ) {
1515 return LibPyth.getPriceNoOlderThan (symbol, maxAge);
1616 }
1717
18- function checkPriceNoOlderThan (IntOrAString symbol , Float maxAge , Float expectedPrice ) internal view {
19- Float actualPrice = this .getPriceNoOlderThanExternal (symbol, maxAge);
18+ function checkPriceNoOlderThan (IntOrAString symbol , Float maxAge , Float expectedPrice , Float expectedConf )
19+ internal
20+ view
21+ {
22+ (Float actualPrice , Float actualConf ) = LibPyth.getPriceNoOlderThan (symbol, maxAge);
2023 (int256 actualSignedCoefficient , int256 actualExponent ) = LibDecimalFloat.unpack (actualPrice);
2124 console2.logInt (actualSignedCoefficient);
2225 console2.logInt (actualExponent);
23- assertEq (Float.unwrap (LibPyth.getPriceNoOlderThan (symbol, maxAge)), Float.unwrap (expectedPrice));
26+ (actualSignedCoefficient, actualExponent) = LibDecimalFloat.unpack (actualConf);
27+ console2.logInt (actualSignedCoefficient);
28+ console2.logInt (actualExponent);
29+ assertEq (Float.unwrap (actualPrice), Float.unwrap (expectedPrice));
30+ assertEq (Float.unwrap (actualConf), Float.unwrap (expectedConf));
2431 }
2532
2633 function testPriceNoOlderThanArbitrum () external {
2734 vm.createSelectFork (FORK_RPC_URL_ARBITRUM, FORK_BLOCK_ARBITRUM);
2835 checkPriceNoOlderThan (
2936 LibIntOrAString.fromString2 ("Equity.US.GOOG/USD " ),
3037 LibDecimalFloat.packLossless (72 hours, 0 ),
31- LibDecimalFloat.packLossless (172.3176e5 , - 5 )
38+ LibDecimalFloat.packLossless (172.3176e5 , - 5 ),
39+ LibDecimalFloat.packLossless (2.00302e5 , - 5 )
3240 );
3341 checkPriceNoOlderThan (
3442 LibIntOrAString.fromString2 ("Equity.US.AMZN/USD " ),
3543 LibDecimalFloat.packLossless (500 hours, 0 ),
36- LibDecimalFloat.packLossless (205.06198e5 , - 5 )
44+ LibDecimalFloat.packLossless (205.06198e5 , - 5 ),
45+ LibDecimalFloat.packLossless (0.27188e5 , - 5 )
3746 );
3847 checkPriceNoOlderThan (
3948 LibIntOrAString.fromString2 ("Equity.US.AAPL/USD " ),
4049 LibDecimalFloat.packLossless (72 hours, 0 ),
41- LibDecimalFloat.packLossless (202.86002e5 , - 5 )
50+ LibDecimalFloat.packLossless (202.86002e5 , - 5 ),
51+ LibDecimalFloat.packLossless (1.91401e5 , - 5 )
4252 );
4353 checkPriceNoOlderThan (
4454 LibIntOrAString.fromString2 ("Equity.US.MSFT/USD " ),
4555 LibDecimalFloat.packLossless (72 hours, 0 ),
46- LibDecimalFloat.packLossless (469.8035e5 , - 5 )
56+ LibDecimalFloat.packLossless (469.8035e5 , - 5 ),
57+ LibDecimalFloat.packLossless (2.02763e5 , - 5 )
4758 );
4859 checkPriceNoOlderThan (
4960 LibIntOrAString.fromString2 ("Equity.US.TSLA/USD " ),
5061 LibDecimalFloat.packLossless (300 hours, 0 ),
51- LibDecimalFloat.packLossless (360.02978e5 , - 5 )
62+ LibDecimalFloat.packLossless (360.02978e5 , - 5 ),
63+ LibDecimalFloat.packLossless (0.35259e5 , - 5 )
5264 );
5365 checkPriceNoOlderThan (
5466 LibIntOrAString.fromString2 ("Equity.US.NVDA/USD " ),
5567 LibDecimalFloat.packLossless (1000 hours, 0 ),
56- LibDecimalFloat.packLossless (104.5623e5 , - 5 )
68+ LibDecimalFloat.packLossless (104.5623e5 , - 5 ),
69+ LibDecimalFloat.packLossless (0.1513e5 , - 5 )
5770 );
5871 checkPriceNoOlderThan (
5972 LibIntOrAString.fromString2 ("Equity.US.META/USD " ),
6073 LibDecimalFloat.packLossless (8000 hours, 0 ),
61- LibDecimalFloat.packLossless (448.73e5 , - 5 )
74+ LibDecimalFloat.packLossless (448.73e5 , - 5 ),
75+ LibDecimalFloat.packLossless (0.72984e5 , - 5 )
6276 );
6377 checkPriceNoOlderThan (
6478 LibIntOrAString.fromString2 ("Equity.US.GME/USD " ),
6579 LibDecimalFloat.packLossless (8000 hours, 0 ),
66- LibDecimalFloat.packLossless (29.3177e5 , - 5 )
80+ LibDecimalFloat.packLossless (29.3177e5 , - 5 ),
81+ LibDecimalFloat.packLossless (0.26199e5 , - 5 )
6782 );
6883 }
6984
@@ -72,57 +87,68 @@ contract LibPythGetPriceNoOlderThanTest is Test {
7287 checkPriceNoOlderThan (
7388 LibIntOrAString.fromString2 ("Equity.US.GOOG/USD " ),
7489 LibDecimalFloat.packLossless (24 hours, 0 ),
75- LibDecimalFloat.packLossless (246.29352e5 , - 5 )
90+ LibDecimalFloat.packLossless (246.29352e5 , - 5 ),
91+ LibDecimalFloat.packLossless (0.40327e5 , - 5 )
7692 );
7793 checkPriceNoOlderThan (
7894 LibIntOrAString.fromString2 ("Equity.US.AMZN/USD " ),
7995 LibDecimalFloat.packLossless (24 hours, 0 ),
80- LibDecimalFloat.packLossless (222.43512e5 , - 5 )
96+ LibDecimalFloat.packLossless (222.43512e5 , - 5 ),
97+ LibDecimalFloat.packLossless (0.10153e5 , - 5 )
8198 );
8299 checkPriceNoOlderThan (
83100 LibIntOrAString.fromString2 ("Equity.US.AAPL/USD " ),
84101 LibDecimalFloat.packLossless (24 hours, 0 ),
85- LibDecimalFloat.packLossless (257.33026e5 , - 5 )
102+ LibDecimalFloat.packLossless (257.33026e5 , - 5 ),
103+ LibDecimalFloat.packLossless (0.13478e5 , - 5 )
86104 );
87105 checkPriceNoOlderThan (
88106 LibIntOrAString.fromString2 ("Equity.US.MSFT/USD " ),
89107 LibDecimalFloat.packLossless (24 hours, 0 ),
90- LibDecimalFloat.packLossless (515.64431e5 , - 5 )
108+ LibDecimalFloat.packLossless (515.64431e5 , - 5 ),
109+ LibDecimalFloat.packLossless (0.21746e5 , - 5 )
91110 );
92111 checkPriceNoOlderThan (
93112 LibIntOrAString.fromString2 ("Equity.US.TSLA/USD " ),
94113 LibDecimalFloat.packLossless (24 hours, 0 ),
95- LibDecimalFloat.packLossless (436.03414e5 , - 5 )
114+ LibDecimalFloat.packLossless (436.03414e5 , - 5 ),
115+ LibDecimalFloat.packLossless (0.28529e5 , - 5 )
96116 );
97117 checkPriceNoOlderThan (
98118 LibIntOrAString.fromString2 ("Equity.US.NVDA/USD " ),
99119 LibDecimalFloat.packLossless (24 hours, 0 ),
100- LibDecimalFloat.packLossless (188.92e5 , - 5 )
120+ LibDecimalFloat.packLossless (188.92e5 , - 5 ),
121+ LibDecimalFloat.packLossless (0.13648e5 , - 5 )
101122 );
102123 checkPriceNoOlderThan (
103124 LibIntOrAString.fromString2 ("Equity.US.META/USD " ),
104125 LibDecimalFloat.packLossless (24 hours, 0 ),
105- LibDecimalFloat.packLossless (727.0145e5 , - 5 )
126+ LibDecimalFloat.packLossless (727.0145e5 , - 5 ),
127+ LibDecimalFloat.packLossless (0.40439e5 , - 5 )
106128 );
107129 checkPriceNoOlderThan (
108130 LibIntOrAString.fromString2 ("Equity.US.GME/USD " ),
109131 LibDecimalFloat.packLossless (24 hours, 0 ),
110- LibDecimalFloat.packLossless (27.24202e5 , - 5 )
132+ LibDecimalFloat.packLossless (27.24202e5 , - 5 ),
133+ LibDecimalFloat.packLossless (0.05212e5 , - 5 )
111134 );
112135 checkPriceNoOlderThan (
113136 LibIntOrAString.fromString2 ("Equity.US.MSTR/USD " ),
114137 LibDecimalFloat.packLossless (24 hours, 0 ),
115- LibDecimalFloat.packLossless (352.34642e5 , - 5 )
138+ LibDecimalFloat.packLossless (352.34642e5 , - 5 ),
139+ LibDecimalFloat.packLossless (0.32048e5 , - 5 )
116140 );
117141 checkPriceNoOlderThan (
118142 LibIntOrAString.fromString2 ("Equity.US.BRK-B/USD " ),
119143 LibDecimalFloat.packLossless (24 hours, 0 ),
120- LibDecimalFloat.packLossless (496.12003e5 , - 5 )
144+ LibDecimalFloat.packLossless (496.12003e5 , - 5 ),
145+ LibDecimalFloat.packLossless (0.1009e5 , - 5 )
121146 );
122147 checkPriceNoOlderThan (
123148 LibIntOrAString.fromString2 ("Equity.US.SPLG/USD " ),
124149 LibDecimalFloat.packLossless (24 hours, 0 ),
125- LibDecimalFloat.packLossless (78.71367e5 , - 5 )
150+ LibDecimalFloat.packLossless (78.71367e5 , - 5 ),
151+ LibDecimalFloat.packLossless (0.03281e5 , - 5 )
126152 );
127153 }
128154}
0 commit comments