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 }