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