gojay

high performance JSON encoder/decoder with stream API for Golang
git clone git://git.lair.cx/gojay
Log | Files | Refs | README | LICENSE

encode_null_test.go (1416B)


      1 package gojay
      2 
      3 import (
      4 	"strings"
      5 	"testing"
      6 
      7 	"github.com/stretchr/testify/assert"
      8 )
      9 
     10 func TestEncodeNull(t *testing.T) {
     11 	var testCases = []struct {
     12 		name         string
     13 		baseJSON     string
     14 		expectedJSON string
     15 	}{
     16 		{
     17 			name:         "basic 1st element",
     18 			baseJSON:     `[`,
     19 			expectedJSON: `[null,null`,
     20 		},
     21 		{
     22 			name:         "basic last element",
     23 			baseJSON:     `["test"`,
     24 			expectedJSON: `["test",null,null`,
     25 		},
     26 	}
     27 
     28 	for _, testCase := range testCases {
     29 		t.Run(testCase.name, func(t *testing.T) {
     30 			var b strings.Builder
     31 			var enc = NewEncoder(&b)
     32 			enc.writeString(testCase.baseJSON)
     33 			enc.Null()
     34 			enc.AddNull()
     35 			enc.Write()
     36 			assert.Equal(t, testCase.expectedJSON, b.String())
     37 		})
     38 	}
     39 }
     40 
     41 func TestEncodeNullKey(t *testing.T) {
     42 	var testCases = []struct {
     43 		name         string
     44 		baseJSON     string
     45 		expectedJSON string
     46 	}{
     47 		{
     48 			name:         "basic 1st element",
     49 			baseJSON:     `{`,
     50 			expectedJSON: `{"foo":null,"bar":null`,
     51 		},
     52 		{
     53 			name:         "basic last element",
     54 			baseJSON:     `{"test":"test"`,
     55 			expectedJSON: `{"test":"test","foo":null,"bar":null`,
     56 		},
     57 	}
     58 
     59 	for _, testCase := range testCases {
     60 		t.Run(testCase.name, func(t *testing.T) {
     61 			var b strings.Builder
     62 			var enc = NewEncoder(&b)
     63 			enc.writeString(testCase.baseJSON)
     64 			enc.NullKey("foo")
     65 			enc.AddNullKey("bar")
     66 			enc.Write()
     67 			assert.Equal(t, testCase.expectedJSON, b.String())
     68 		})
     69 	}
     70 }