mirror of
https://github.com/kaspanet/kaspad.git
synced 2025-09-13 04:50:11 +00:00
42 lines
1.5 KiB
Go
42 lines
1.5 KiB
Go
package blockdag
|
|
|
|
import (
|
|
"github.com/kaspanet/kaspad/dagconfig"
|
|
"github.com/kaspanet/kaspad/util/daghash"
|
|
"testing"
|
|
)
|
|
|
|
// This test is to ensure the size BlueAnticoneSizesSize is serialized to the size of KType.
|
|
// We verify that by serializing and deserializing the block while making sure that we stay within the expected range.
|
|
func TestBlueAnticoneSizesSize(t *testing.T) {
|
|
dag, teardownFunc, err := DAGSetup("TestBlueAnticoneSizesSize", Config{
|
|
DAGParams: &dagconfig.SimnetParams,
|
|
})
|
|
if err != nil {
|
|
t.Fatalf("TestBlueAnticoneSizesSize: Failed to setup DAG instance: %s", err)
|
|
}
|
|
defer teardownFunc()
|
|
|
|
k := dagconfig.KType(0)
|
|
k--
|
|
|
|
if k < dagconfig.KType(0) {
|
|
t.Fatalf("KType must be unsigned")
|
|
}
|
|
|
|
blockHeader := dagconfig.SimnetParams.GenesisBlock.Header
|
|
node, _ := dag.newBlockNode(&blockHeader, newBlockSet())
|
|
fakeBlue := &blockNode{hash: &daghash.Hash{1}}
|
|
dag.index.AddNode(fakeBlue)
|
|
// Setting maxKType to maximum value of KType.
|
|
// As we verify above that KType is unsigned we can be sure that maxKType is indeed the maximum value of KType.
|
|
maxKType := ^dagconfig.KType(0)
|
|
node.bluesAnticoneSizes[fakeBlue] = maxKType
|
|
serializedNode, _ := serializeBlockNode(node)
|
|
deserializedNode, _ := dag.deserializeBlockNode(serializedNode)
|
|
if deserializedNode.bluesAnticoneSizes[fakeBlue] != maxKType {
|
|
t.Fatalf("TestBlueAnticoneSizesSize: BlueAnticoneSize should not change when deserializing. Expected: %v but got %v",
|
|
maxKType, deserializedNode.bluesAnticoneSizes[fakeBlue])
|
|
}
|
|
}
|