/ test / feeds / ChainlinkFeed / TestFeedDeployment.t.sol
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  }