Merge pull request #1258 from LeoHChen/implement_is_epoch_block
Implement is epoch blockpull/1264/head
commit
98cb315a9a
@ -0,0 +1,67 @@ |
|||||||
|
package core |
||||||
|
|
||||||
|
import ( |
||||||
|
"math/big" |
||||||
|
"testing" |
||||||
|
|
||||||
|
"github.com/harmony-one/harmony/core/types" |
||||||
|
shardingconfig "github.com/harmony-one/harmony/internal/configs/sharding" |
||||||
|
) |
||||||
|
|
||||||
|
func TestIsEpochBlock(t *testing.T) { |
||||||
|
block1 := types.NewBlock(&types.Header{Number: big.NewInt(10)}, nil, nil) |
||||||
|
block2 := types.NewBlock(&types.Header{Number: big.NewInt(0)}, nil, nil) |
||||||
|
block3 := types.NewBlock(&types.Header{Number: big.NewInt(327680)}, nil, nil) |
||||||
|
block4 := types.NewBlock(&types.Header{Number: big.NewInt(77)}, nil, nil) |
||||||
|
block5 := types.NewBlock(&types.Header{Number: big.NewInt(78)}, nil, nil) |
||||||
|
block6 := types.NewBlock(&types.Header{Number: big.NewInt(188)}, nil, nil) |
||||||
|
block7 := types.NewBlock(&types.Header{Number: big.NewInt(189)}, nil, nil) |
||||||
|
tests := []struct { |
||||||
|
schedule shardingconfig.Schedule |
||||||
|
block *types.Block |
||||||
|
expected bool |
||||||
|
}{ |
||||||
|
{ |
||||||
|
shardingconfig.MainnetSchedule, |
||||||
|
block1, |
||||||
|
false, |
||||||
|
}, |
||||||
|
{ |
||||||
|
shardingconfig.MainnetSchedule, |
||||||
|
block2, |
||||||
|
true, |
||||||
|
}, |
||||||
|
{ |
||||||
|
shardingconfig.MainnetSchedule, |
||||||
|
block3, |
||||||
|
true, |
||||||
|
}, |
||||||
|
{ |
||||||
|
shardingconfig.TestnetSchedule, |
||||||
|
block4, |
||||||
|
false, |
||||||
|
}, |
||||||
|
{ |
||||||
|
shardingconfig.TestnetSchedule, |
||||||
|
block5, |
||||||
|
true, |
||||||
|
}, |
||||||
|
{ |
||||||
|
shardingconfig.TestnetSchedule, |
||||||
|
block6, |
||||||
|
false, |
||||||
|
}, |
||||||
|
{ |
||||||
|
shardingconfig.TestnetSchedule, |
||||||
|
block7, |
||||||
|
true, |
||||||
|
}, |
||||||
|
} |
||||||
|
for _, test := range tests { |
||||||
|
ShardingSchedule = test.schedule |
||||||
|
r := IsEpochBlock(test.block) |
||||||
|
if r != test.expected { |
||||||
|
t.Errorf("expected: %v, got: %v\n", test.expected, r) |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,72 @@ |
|||||||
|
package shardingconfig |
||||||
|
|
||||||
|
import ( |
||||||
|
"math/big" |
||||||
|
"testing" |
||||||
|
) |
||||||
|
|
||||||
|
func TestMainnetInstanceForEpoch(t *testing.T) { |
||||||
|
tests := []struct { |
||||||
|
epoch *big.Int |
||||||
|
instance Instance |
||||||
|
}{ |
||||||
|
{ |
||||||
|
big.NewInt(0), |
||||||
|
mainnetV0, |
||||||
|
}, |
||||||
|
{ |
||||||
|
big.NewInt(1), |
||||||
|
mainnetV1, |
||||||
|
}, |
||||||
|
{ |
||||||
|
big.NewInt(2), |
||||||
|
mainnetV1, |
||||||
|
}, |
||||||
|
} |
||||||
|
|
||||||
|
for _, test := range tests { |
||||||
|
in := MainnetSchedule.InstanceForEpoch(test.epoch) |
||||||
|
if in.NumShards() != test.instance.NumShards() || in.NumNodesPerShard() != test.instance.NumNodesPerShard() { |
||||||
|
t.Errorf("can't get the right instane for epoch: %v\n", test.epoch) |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
func TestCalcEpochNumber(t *testing.T) { |
||||||
|
tests := []struct { |
||||||
|
block uint64 |
||||||
|
epoch *big.Int |
||||||
|
}{ |
||||||
|
{ |
||||||
|
0, |
||||||
|
big.NewInt(0), |
||||||
|
}, |
||||||
|
{ |
||||||
|
1, |
||||||
|
big.NewInt(0), |
||||||
|
}, |
||||||
|
{ |
||||||
|
327679, |
||||||
|
big.NewInt(0), |
||||||
|
}, |
||||||
|
{ |
||||||
|
327680, |
||||||
|
big.NewInt(1), |
||||||
|
}, |
||||||
|
{ |
||||||
|
344064, |
||||||
|
big.NewInt(2), |
||||||
|
}, |
||||||
|
{ |
||||||
|
344063, |
||||||
|
big.NewInt(1), |
||||||
|
}, |
||||||
|
} |
||||||
|
|
||||||
|
for _, test := range tests { |
||||||
|
ep := MainnetSchedule.CalcEpochNumber(test.block) |
||||||
|
if ep.Cmp(test.epoch) != 0 { |
||||||
|
t.Errorf("CalcEpochNumber error: got %v, expect %v\n", ep, test.epoch) |
||||||
|
} |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue