github.com/MetalBlockchain/metalgo@v1.11.9/vms/platformvm/state/masked_iterator_test.go (about)

     1  // Copyright (C) 2019-2024, Ava Labs, Inc. All rights reserved.
     2  // See the file LICENSE for licensing terms.
     3  
     4  package state
     5  
     6  import (
     7  	"testing"
     8  	"time"
     9  
    10  	"github.com/stretchr/testify/require"
    11  
    12  	"github.com/MetalBlockchain/metalgo/ids"
    13  )
    14  
    15  func TestMaskedIterator(t *testing.T) {
    16  	require := require.New(t)
    17  	stakers := []*Staker{
    18  		{
    19  			TxID:     ids.GenerateTestID(),
    20  			NextTime: time.Unix(0, 0),
    21  		},
    22  		{
    23  			TxID:     ids.GenerateTestID(),
    24  			NextTime: time.Unix(1, 0),
    25  		},
    26  		{
    27  			TxID:     ids.GenerateTestID(),
    28  			NextTime: time.Unix(2, 0),
    29  		},
    30  		{
    31  			TxID:     ids.GenerateTestID(),
    32  			NextTime: time.Unix(3, 0),
    33  		},
    34  	}
    35  	maskedStakers := map[ids.ID]*Staker{
    36  		stakers[0].TxID: stakers[0],
    37  		stakers[2].TxID: stakers[2],
    38  		stakers[3].TxID: stakers[3],
    39  	}
    40  
    41  	it := NewMaskedIterator(
    42  		NewSliceIterator(stakers[:3]...),
    43  		maskedStakers,
    44  	)
    45  
    46  	require.True(it.Next())
    47  	require.Equal(stakers[1], it.Value())
    48  
    49  	require.False(it.Next())
    50  	it.Release()
    51  	require.False(it.Next())
    52  }