github.com/MetalBlockchain/metalgo@v1.11.9/vms/platformvm/txs/txheap/by_end_time_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 txheap
     5  
     6  import (
     7  	"testing"
     8  	"time"
     9  
    10  	"github.com/stretchr/testify/require"
    11  
    12  	"github.com/MetalBlockchain/metalgo/ids"
    13  	"github.com/MetalBlockchain/metalgo/vms/platformvm/txs"
    14  	"github.com/MetalBlockchain/metalgo/vms/secp256k1fx"
    15  )
    16  
    17  func TestByEndTime(t *testing.T) {
    18  	require := require.New(t)
    19  
    20  	txHeap := NewByEndTime()
    21  
    22  	baseTime := time.Now()
    23  
    24  	utx0 := &txs.AddValidatorTx{
    25  		Validator: txs.Validator{
    26  			NodeID: ids.BuildTestNodeID([]byte{0}),
    27  			Start:  uint64(baseTime.Unix()),
    28  			End:    uint64(baseTime.Unix()) + 1,
    29  		},
    30  		RewardsOwner: &secp256k1fx.OutputOwners{},
    31  	}
    32  	tx0 := &txs.Tx{Unsigned: utx0}
    33  	require.NoError(tx0.Initialize(txs.Codec))
    34  
    35  	utx1 := &txs.AddValidatorTx{
    36  		Validator: txs.Validator{
    37  			NodeID: ids.BuildTestNodeID([]byte{1}),
    38  			Start:  uint64(baseTime.Unix()),
    39  			End:    uint64(baseTime.Unix()) + 2,
    40  		},
    41  		RewardsOwner: &secp256k1fx.OutputOwners{},
    42  	}
    43  	tx1 := &txs.Tx{Unsigned: utx1}
    44  	require.NoError(tx1.Initialize(txs.Codec))
    45  
    46  	utx2 := &txs.AddValidatorTx{
    47  		Validator: txs.Validator{
    48  			NodeID: ids.BuildTestNodeID([]byte{1}),
    49  			Start:  uint64(baseTime.Unix()),
    50  			End:    uint64(baseTime.Unix()) + 3,
    51  		},
    52  		RewardsOwner: &secp256k1fx.OutputOwners{},
    53  	}
    54  	tx2 := &txs.Tx{Unsigned: utx2}
    55  	require.NoError(tx2.Initialize(txs.Codec))
    56  
    57  	txHeap.Add(tx2)
    58  	require.Equal(utx2.EndTime(), txHeap.Timestamp())
    59  
    60  	txHeap.Add(tx1)
    61  	require.Equal(utx1.EndTime(), txHeap.Timestamp())
    62  
    63  	txHeap.Add(tx0)
    64  	require.Equal(utx0.EndTime(), txHeap.Timestamp())
    65  	require.Equal(tx0, txHeap.Peek())
    66  }