github.com/MetalBlockchain/metalgo@v1.11.9/utils/compression/type_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 compression
     5  
     6  import (
     7  	"testing"
     8  
     9  	"github.com/stretchr/testify/require"
    10  )
    11  
    12  func TestTypeString(t *testing.T) {
    13  	require := require.New(t)
    14  
    15  	for _, compressionType := range []Type{TypeNone, TypeZstd} {
    16  		s := compressionType.String()
    17  		parsedType, err := TypeFromString(s)
    18  		require.NoError(err)
    19  		require.Equal(compressionType, parsedType)
    20  	}
    21  
    22  	_, err := TypeFromString("unknown")
    23  	require.ErrorIs(err, errUnknownCompressionType)
    24  }
    25  
    26  func TestTypeMarshalJSON(t *testing.T) {
    27  	type test struct {
    28  		Type     Type
    29  		expected string
    30  	}
    31  
    32  	tests := []test{
    33  		{
    34  			Type:     TypeNone,
    35  			expected: `"none"`,
    36  		},
    37  		{
    38  			Type:     TypeZstd,
    39  			expected: `"zstd"`,
    40  		},
    41  		{
    42  			Type:     Type(0),
    43  			expected: `"unknown"`,
    44  		},
    45  	}
    46  
    47  	for _, tt := range tests {
    48  		t.Run(tt.Type.String(), func(t *testing.T) {
    49  			require := require.New(t)
    50  
    51  			b, err := tt.Type.MarshalJSON()
    52  			require.NoError(err)
    53  			require.Equal(tt.expected, string(b))
    54  		})
    55  	}
    56  }