github.com/filecoin-project/specs-actors/v4@v4.0.2/actors/builtin/miner/quantize_test.go (about) 1 package miner 2 3 import ( 4 "testing" 5 6 "github.com/filecoin-project/go-state-types/abi" 7 "github.com/stretchr/testify/assert" 8 ) 9 10 func TestQuantizeUp(t *testing.T) { 11 t.Run("no quantization", func(t *testing.T) { 12 q := NoQuantization 13 assert.Equal(t, abi.ChainEpoch(0), q.QuantizeUp(0)) 14 assert.Equal(t, abi.ChainEpoch(1), q.QuantizeUp(1)) 15 assert.Equal(t, abi.ChainEpoch(2), q.QuantizeUp(2)) 16 assert.Equal(t, abi.ChainEpoch(123456789), q.QuantizeUp(123456789)) 17 }) 18 t.Run("zero offset", func(t *testing.T) { 19 assert.Equal(t, abi.ChainEpoch(50), quantizeUp(42, 10, 0)) 20 assert.Equal(t, abi.ChainEpoch(16000), quantizeUp(16000, 100, 0)) 21 assert.Equal(t, abi.ChainEpoch(0), quantizeUp(-5, 10, 0)) 22 assert.Equal(t, abi.ChainEpoch(-50), quantizeUp(-50, 10, 0)) 23 assert.Equal(t, abi.ChainEpoch(-50), quantizeUp(-53, 10, 0)) 24 }) 25 26 t.Run("non zero offset", func(t *testing.T) { 27 assert.Equal(t, abi.ChainEpoch(6), quantizeUp(4, 5, 1)) 28 assert.Equal(t, abi.ChainEpoch(1), quantizeUp(0, 5, 1)) 29 assert.Equal(t, abi.ChainEpoch(-4), quantizeUp(-6, 5, 1)) 30 assert.Equal(t, abi.ChainEpoch(4), quantizeUp(2, 10, 4)) 31 }) 32 33 t.Run("offset seed bigger than unit is normalized", func(t *testing.T) { 34 assert.Equal(t, abi.ChainEpoch(13), quantizeUp(9, 5, 28)) // offset should be 3 35 assert.Equal(t, abi.ChainEpoch(10000), quantizeUp(10000, 100, 2000000)) 36 }) 37 } 38 39 func TestQuantizeDown(t *testing.T) { 40 t.Run("no quantization", func(t *testing.T) { 41 q := NoQuantization 42 assert.Equal(t, abi.ChainEpoch(0), q.QuantizeDown(0)) 43 assert.Equal(t, abi.ChainEpoch(1), q.QuantizeDown(1)) 44 assert.Equal(t, abi.ChainEpoch(1337), q.QuantizeDown(1337)) 45 }) 46 t.Run("zero offset", func(t *testing.T) { 47 q := NewQuantSpec(abi.ChainEpoch(10), abi.ChainEpoch(0)) 48 assert.Equal(t, abi.ChainEpoch(6660), q.QuantizeDown(6666)) 49 assert.Equal(t, abi.ChainEpoch(50), q.QuantizeDown(50)) 50 assert.Equal(t, abi.ChainEpoch(50), q.QuantizeDown(59)) 51 }) 52 53 t.Run("non zero offset", func(t *testing.T) { 54 q := NewQuantSpec(abi.ChainEpoch(10), abi.ChainEpoch(1)) 55 assert.Equal(t, abi.ChainEpoch(11), q.QuantizeDown(20)) 56 assert.Equal(t, abi.ChainEpoch(11), q.QuantizeDown(11)) 57 }) 58 }