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 }