superchain_test.go 1015 Bytes
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
package node

import (
	"testing"

	"github.com/stretchr/testify/require"
	"golang.org/x/exp/slices"

	"github.com/ethereum/go-ethereum/params"
)

func TestHaltMaybe(t *testing.T) {
	haltTest := func(opt string, halts ...params.ProtocolVersionComparison) {
		t.Run(opt, func(t *testing.T) {
			for _, h := range []params.ProtocolVersionComparison{
				params.AheadMajor,
				params.OutdatedMajor,
				params.AheadMinor,
				params.OutdatedMinor,
				params.AheadPatch,
				params.OutdatedPatch,
				params.AheadPrerelease,
				params.OutdatedPrerelease,
				params.Matching,
				params.DiffVersionType,
				params.DiffBuild,
				params.EmptyVersion,
			} {
				expectedHalt := slices.Contains(halts, h)
				gotHalt := haltMaybe(opt, h)
				require.Equal(t, expectedHalt, gotHalt, "%s %d", opt, h)
			}
		})
	}
	haltTest("")
	haltTest("major", params.OutdatedMajor)
	haltTest("minor", params.OutdatedMajor, params.OutdatedMinor)
	haltTest("patch", params.OutdatedMajor, params.OutdatedMinor, params.OutdatedPatch)
}