github.com/MetalBlockchain/metalgo@v1.11.9/vms/platformvm/txs/validator_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 txs 5 6 import ( 7 "testing" 8 9 "github.com/stretchr/testify/require" 10 11 "github.com/MetalBlockchain/metalgo/ids" 12 ) 13 14 const defaultWeight = 10000 15 16 func TestBoundedBy(t *testing.T) { 17 require := require.New(t) 18 19 nodeID := ids.GenerateTestNodeID() 20 21 // case 1: a starts, a finishes, b starts, b finishes 22 aStartTime := uint64(0) 23 aEndTIme := uint64(1) 24 a := &Validator{ 25 NodeID: nodeID, 26 Start: aStartTime, 27 End: aEndTIme, 28 Wght: defaultWeight, 29 } 30 31 bStartTime := uint64(2) 32 bEndTime := uint64(3) 33 b := &Validator{ 34 NodeID: nodeID, 35 Start: bStartTime, 36 End: bEndTime, 37 Wght: defaultWeight, 38 } 39 require.False(BoundedBy(a.StartTime(), a.EndTime(), b.StartTime(), b.EndTime())) 40 require.False(BoundedBy(b.StartTime(), b.EndTime(), a.StartTime(), a.EndTime())) 41 42 // case 2: a starts, b starts, a finishes, b finishes 43 a.Start = 0 44 b.Start = 1 45 a.End = 2 46 b.End = 3 47 require.False(BoundedBy(a.StartTime(), a.EndTime(), b.StartTime(), b.EndTime())) 48 require.False(BoundedBy(b.StartTime(), b.EndTime(), a.StartTime(), a.EndTime())) 49 50 // case 3: a starts, b starts, b finishes, a finishes 51 a.Start = 0 52 b.Start = 1 53 b.End = 2 54 a.End = 3 55 require.False(BoundedBy(a.StartTime(), a.EndTime(), b.StartTime(), b.EndTime())) 56 require.True(BoundedBy(b.StartTime(), b.EndTime(), a.StartTime(), a.EndTime())) 57 58 // case 4: b starts, a starts, a finishes, b finishes 59 b.Start = 0 60 a.Start = 1 61 a.End = 2 62 b.End = 3 63 require.True(BoundedBy(a.StartTime(), a.EndTime(), b.StartTime(), b.EndTime())) 64 require.False(BoundedBy(b.StartTime(), b.EndTime(), a.StartTime(), a.EndTime())) 65 66 // case 5: b starts, b finishes, a starts, a finishes 67 b.Start = 0 68 b.End = 1 69 a.Start = 2 70 a.End = 3 71 require.False(BoundedBy(a.StartTime(), a.EndTime(), b.StartTime(), b.EndTime())) 72 require.False(BoundedBy(b.StartTime(), b.EndTime(), a.StartTime(), a.EndTime())) 73 74 // case 6: b starts, a starts, b finishes, a finishes 75 b.Start = 0 76 a.Start = 1 77 b.End = 2 78 a.End = 3 79 require.False(BoundedBy(a.StartTime(), a.EndTime(), b.StartTime(), b.EndTime())) 80 require.False(BoundedBy(b.StartTime(), b.EndTime(), a.StartTime(), a.EndTime())) 81 82 // case 3: a starts, b starts, b finishes, a finishes 83 a.Start = 0 84 b.Start = 0 85 b.End = 1 86 a.End = 1 87 require.True(BoundedBy(a.StartTime(), a.EndTime(), b.StartTime(), b.EndTime())) 88 require.True(BoundedBy(b.StartTime(), b.EndTime(), a.StartTime(), a.EndTime())) 89 }