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

     1  package jsonb
     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  		v   reflect.Value
    13  		enc = DefaultEncoder{registry: buildDefaultRegistry()}
    14  		w   *Writer
    15  		err error
    16  	)
    17  
    18  	// uninitialized map
    19  	{
    20  		w = new(Writer)
    21  		var uninitmap map[string]interface{}
    22  		v = reflect.ValueOf(uninitmap)
    23  		err = enc.EncodeMap(w, v)
    24  		require.NoError(t, err)
    25  		require.Equal(t, []byte(`null`), w.Bytes())
    26  	}
    27  
    28  	// initiliazed map
    29  	{
    30  		w = new(Writer)
    31  		initmap := make(map[string]interface{})
    32  		v = reflect.ValueOf(initmap)
    33  		err = enc.EncodeMap(w, v)
    34  		require.NoError(t, err)
    35  		require.Equal(t, []byte(`{}`), w.Bytes())
    36  	}
    37  
    38  	{
    39  		w = new(Writer)
    40  		m := make(map[string]interface{})
    41  		m["a"] = "v1"
    42  		m["b"] = -2246
    43  		m["c"] = float64(10.888)
    44  		m["d"] = true
    45  		m["e"] = int64(103123213)
    46  		m["f"] = uint8(10)
    47  		m["z"] = nil
    48  
    49  		v = reflect.ValueOf(m)
    50  		err = enc.EncodeMap(w, v)
    51  		require.NoError(t, err)
    52  		require.Equal(t, []byte(`{"a":"v1","b":-2246,"c":1.0888E+01,"d":true,"e":103123213,"f":10,"z":null}`), w.Bytes())
    53  	}
    54  }