github.com/RevenueMonster/sqlike@v1.0.6/sql/codec/encoder_test.go (about)

     1  package codec
     2  
     3  import (
     4  	"reflect"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/require"
     8  )
     9  
    10  func TestEncodeMap(t *testing.T) {
    11  	var (
    12  		enc = DefaultEncoders{}
    13  		it  interface{}
    14  		err error
    15  	)
    16  
    17  	// Nil map
    18  	{
    19  		var nilmap map[string]string
    20  		it, err = enc.EncodeMap(nil, reflect.ValueOf(nilmap))
    21  		require.NoError(t, err)
    22  		require.Equal(t, `null`, it)
    23  	}
    24  
    25  	// Initialized map
    26  	{
    27  		initmap := make(map[string]int)
    28  		it, err = enc.EncodeMap(nil, reflect.ValueOf(initmap))
    29  		require.NoError(t, err)
    30  		require.Equal(t, []byte(`{}`), it)
    31  	}
    32  
    33  	// Initialized map
    34  	{
    35  		initmap := make(map[string]int)
    36  		it, err = enc.EncodeMap(nil, reflect.ValueOf(initmap))
    37  		require.NoError(t, err)
    38  		require.Equal(t, []byte(`{}`), it)
    39  	}
    40  
    41  	// Map with interface value
    42  	{
    43  		intmap := make(map[int]interface{})
    44  		it, err = enc.EncodeMap(nil, reflect.ValueOf(intmap))
    45  		require.NoError(t, err)
    46  		require.Equal(t, []byte(`{}`), it)
    47  	}
    48  
    49  }