TestFeedDeployment.t.sol
1 pragma solidity >=0.6.0; 2 3 import "truffle/Assert.sol"; 4 import "./Base.t.sol"; 5 6 contract TestFeedDeployment is Base { 7 8 uint[] timestamps3d; 9 int[] prices3d; 10 11 function testRequestValidData() public { 12 13 AggregatorV3Mock mock = new AggregatorV3Mock(roundIds, answers, updatedAts); 14 15 timestamps3d = [1 days, 2 days, 3 days]; 16 prices3d = [prices[0], prices[1], prices[2]]; 17 18 feed = new ChainlinkFeed( 19 "ETH/USD", 20 address(0), 21 address(0), 22 address(mock), 23 address(time), 24 0, 25 timestamps3d, 26 prices3d 27 ); 28 29 (, price, cached) = feed.getPriceCached(1 days); 30 Assert.equal(price, prices[0], "getPriceCached 1"); 31 Assert.isTrue(cached, "cached 1"); 32 33 (, price, cached) = feed.getPriceCached(2 days); 34 Assert.equal(price, prices[1], "getPriceCached 2"); 35 Assert.isTrue(cached, "cached 2"); 36 37 (, price, cached) = feed.getPriceCached(2 days + 12 hours); 38 Assert.equal(price, prices[2], "getPriceCached 2.5"); 39 Assert.isFalse(cached, "cached 2.5"); 40 41 (, price, cached) = feed.getPriceCached(3 days); 42 Assert.equal(price, prices[2], "getPriceCached 3"); 43 Assert.isTrue(cached, "cached 3"); 44 } 45 46 function testRequestInvalidData() public { 47 48 AggregatorV3Mock mock = new AggregatorV3Mock(roundIds, answers, updatedAts); 49 50 timestamps3d = [1 days, 2 days, 3 days]; 51 prices3d = [prices[0], prices[1], prices[2]]; 52 53 feed = new ChainlinkFeed( 54 "ETH/USD", 55 address(0), 56 address(0), 57 address(mock), 58 address(time), 59 0, 60 timestamps3d, 61 prices3d 62 ); 63 64 (bool success,) = address(feed).call( 65 abi.encodePacked( 66 feed.getPriceCached.selector, 67 abi.encode(4 days) 68 ) 69 ); 70 71 Assert.isFalse(success, "getPriceCached should fail"); 72 } 73 }