@@ -50,6 +50,11 @@ describe("Cached Twap Spec", () => {
50
50
let testPriceFeed : TestPriceFeed
51
51
let round : number
52
52
53
+ async function setNextBlockTimestamp ( timestamp : number ) {
54
+ await ethers . provider . send ( "evm_setNextBlockTimestamp" , [ timestamp ] )
55
+ await ethers . provider . send ( "evm_mine" , [ ] )
56
+ }
57
+
53
58
async function updatePrice ( price : number , forward : boolean = true ) : Promise < void > {
54
59
await bandReference . setReferenceData ( {
55
60
rate : parseEther ( price . toString ( ) ) ,
@@ -63,12 +68,11 @@ describe("Cached Twap Spec", () => {
63
68
64
69
if ( forward ) {
65
70
currentTime += 15
66
- await ethers . provider . send ( "evm_setNextBlockTimestamp" , [ currentTime ] )
67
- await ethers . provider . send ( "evm_mine" , [ ] )
71
+ await setNextBlockTimestamp ( currentTime )
68
72
}
69
73
}
70
74
71
- before ( async ( ) => {
75
+ beforeEach ( async ( ) => {
72
76
const _fixture = await loadFixture ( priceFeedFixture )
73
77
bandReference = _fixture . bandReference
74
78
bandPriceFeed = _fixture . bandPriceFeed
@@ -127,5 +131,25 @@ describe("Cached Twap Spec", () => {
127
131
128
132
expect ( price1 . cachedTwap ) . to . not . eq ( price2 . cachedTwap )
129
133
} )
134
+
135
+ it ( "re-calculate twap if block timestamp is different from last cached twap timestamp" , async ( ) => {
136
+ const price1 = await testPriceFeed . callStatic . getPrice ( 45 )
137
+ await testPriceFeed . getPrice ( 45 )
138
+
139
+ // forword block timestamp 15sec
140
+ currentTime += 15
141
+ await setNextBlockTimestamp ( currentTime )
142
+
143
+ const price2 = await bandPriceFeed . getPrice ( 45 )
144
+ expect ( price2 ) . to . not . eq ( price1 . twap )
145
+ } )
146
+
147
+ it ( "re-calculate twap if interval is different from interval of cached twap" , async ( ) => {
148
+ await bandPriceFeed . cacheTwap ( 45 )
149
+ const price1 = await bandPriceFeed . getPrice ( 45 )
150
+ const price2 = await bandPriceFeed . getPrice ( 15 )
151
+ // shoule re-calculate twap
152
+ expect ( price2 ) . to . not . eq ( price1 )
153
+ } )
130
154
} )
131
155
} )
0 commit comments