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  }