Skip to content

Commit

Permalink
add ut + newManager func
Browse files Browse the repository at this point in the history
  • Loading branch information
RodrigoVillar committed Oct 11, 2024
1 parent 8053cbf commit bfab1bf
Show file tree
Hide file tree
Showing 2 changed files with 84 additions and 0 deletions.
12 changes: 12 additions & 0 deletions state/metadata/state_manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,18 @@ type MetadataManager struct {
timestampPrefix []byte
}

func NewManager(
heightPrefix []byte,
feePrefix []byte,
timestampPrefix []byte,
) MetadataManager {
return MetadataManager{
heightPrefix: heightPrefix,
feePrefix: feePrefix,
timestampPrefix: timestampPrefix,
}
}

func NewDefaultManager() MetadataManager {
return MetadataManager{
heightPrefix: []byte{defaultHeightPrefix},
Expand Down
72 changes: 72 additions & 0 deletions state/metadata/state_manager_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
// Copyright (C) 2024, Ava Labs, Inc. All rights reserved.
// See the file LICENSE for licensing terms.

package metadata_test

import (
"testing"

"github.com/stretchr/testify/require"

"github.com/ava-labs/hypersdk/state/metadata"
)

func TestConflictingPrefixes(t *testing.T) {
require := require.New(t)

metadataManager := metadata.NewDefaultManager()

// Test no conflicts
require.False(
metadata.HasConflictingPrefixes(
metadataManager,
[][]byte{
{metadata.DefaultMinimumPrefix},
},
),
)
// Test identical prefixes
require.True(
metadata.HasConflictingPrefixes(
metadataManager,
[][]byte{
metadataManager.HeightPrefix(),
},
),
)
// Test that prefixes (from metadataManager) contains a prefix of one of the vm prefixes
require.True(
metadata.HasConflictingPrefixes(
metadataManager,
[][]byte{
{0x1, 0x1},
},
),
)

customMetadataManager := metadata.NewManager(
[]byte{0x0, 0x1},
[]byte{0x1, 0x1},
[]byte{0x2, 0x1},
)

// Test that vmPrefix contains prefix of one of metadataPrefixes
require.True(
metadata.HasConflictingPrefixes(
customMetadataManager,
[][]byte{
{0x1},
},
),
)
// Test that vmPrefixes contains a duplicate
require.True(
metadata.HasConflictingPrefixes(
metadataManager,
[][]byte{
{metadata.DefaultMinimumPrefix},
{metadata.DefaultMinimumPrefix},
},
),
)
}

0 comments on commit bfab1bf

Please sign in to comment.