github.com/MetalBlockchain/metalgo@v1.11.9/vms/platformvm/status/blockchain_status_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 status 5 6 import ( 7 "encoding/json" 8 "math" 9 "testing" 10 11 "github.com/stretchr/testify/require" 12 ) 13 14 func TestBlockchainStatusJSON(t *testing.T) { 15 require := require.New(t) 16 17 statuses := []BlockchainStatus{ 18 UnknownChain, 19 Validating, 20 Created, 21 Preferred, 22 Syncing, 23 } 24 for _, status := range statuses { 25 statusJSON, err := json.Marshal(status) 26 require.NoError(err) 27 28 var parsedStatus BlockchainStatus 29 require.NoError(json.Unmarshal(statusJSON, &parsedStatus)) 30 require.Equal(status, parsedStatus) 31 } 32 33 { 34 status := BlockchainStatus(math.MaxInt32) 35 _, err := json.Marshal(status) 36 require.ErrorIs(err, errUnknownBlockchainStatus) 37 } 38 39 { 40 status := Validating 41 require.NoError(json.Unmarshal([]byte("null"), &status)) 42 require.Equal(Validating, status) 43 } 44 45 { 46 var status BlockchainStatus 47 err := json.Unmarshal([]byte(`"not a status"`), &status) 48 require.ErrorIs(err, errUnknownBlockchainStatus) 49 } 50 } 51 52 func TestBlockchainStatusVerify(t *testing.T) { 53 require := require.New(t) 54 55 statuses := []BlockchainStatus{ 56 UnknownChain, 57 Validating, 58 Created, 59 Preferred, 60 Syncing, 61 } 62 for _, status := range statuses { 63 err := status.Verify() 64 require.NoError(err, "%s failed verification", status) 65 } 66 67 badStatus := BlockchainStatus(math.MaxInt32) 68 err := badStatus.Verify() 69 require.ErrorIs(err, errUnknownBlockchainStatus) 70 } 71 72 func TestBlockchainStatusString(t *testing.T) { 73 require := require.New(t) 74 75 require.Equal("Unknown", UnknownChain.String()) 76 require.Equal("Validating", Validating.String()) 77 require.Equal("Created", Created.String()) 78 require.Equal("Preferred", Preferred.String()) 79 require.Equal("Syncing", Syncing.String()) 80 require.Equal("Dropped", Dropped.String()) 81 82 badStatus := BlockchainStatus(math.MaxInt32) 83 require.Equal("Invalid blockchain status", badStatus.String()) 84 }