github.com/status-im/status-go@v1.1.0/services/wallet/blockchainstate/blockchainstate_test.go (about) 1 package blockchainstate 2 3 import ( 4 "testing" 5 "time" 6 7 "github.com/stretchr/testify/require" 8 ) 9 10 var mockupTime = time.Unix(946724400, 0) // 2000-01-01 12:00:00 11 12 func mockupSince(t time.Time) time.Duration { 13 return mockupTime.Sub(t) 14 } 15 16 func setupTestState(t *testing.T) (s *BlockChainState) { 17 state := NewBlockChainState() 18 state.sinceFn = mockupSince 19 return state 20 } 21 22 func TestEstimateLatestBlockNumber(t *testing.T) { 23 state := setupTestState(t) 24 25 state.setLatestBlockDataForChain(1, LatestBlockData{ 26 blockNumber: uint64(100), 27 timestamp: mockupTime.Add(-31 * time.Second), 28 blockDuration: 10 * time.Second, 29 }) 30 31 state.setLatestBlockDataForChain(2, LatestBlockData{ 32 blockNumber: uint64(200), 33 timestamp: mockupTime.Add(-5 * time.Second), 34 blockDuration: 12 * time.Second, 35 }) 36 37 val, ok := state.estimateLatestBlockNumber(1) 38 require.True(t, ok) 39 require.Equal(t, uint64(103), val) 40 val, ok = state.estimateLatestBlockNumber(2) 41 require.True(t, ok) 42 require.Equal(t, uint64(200), val) 43 val, ok = state.estimateLatestBlockNumber(3) 44 require.False(t, ok) 45 require.Equal(t, uint64(0), val) 46 }