...

Source file src/github.com/launchdarkly/go-sdk-common/v3/ldvalue/optionals_json_easyjson_conversion_test.go

Documentation: github.com/launchdarkly/go-sdk-common/v3/ldvalue

     1  //go:build launchdarkly_easyjson
     2  
     3  package ldvalue
     4  
     5  import (
     6  	"testing"
     7  
     8  	"github.com/mailru/easyjson"
     9  	"github.com/stretchr/testify/assert"
    10  )
    11  
    12  func TestOptionalBoolEasyJSONMarshalling(t *testing.T) {
    13  	bytes, err := easyjson.Marshal(OptionalBool{})
    14  	assert.NoError(t, err)
    15  	assert.Equal(t, nullAsJSON, string(bytes))
    16  
    17  	bytes, err = easyjson.Marshal(NewOptionalBool(true))
    18  	assert.NoError(t, err)
    19  	assert.Equal(t, `true`, string(bytes))
    20  
    21  	bytes, err = easyjson.Marshal(NewOptionalBool(false))
    22  	assert.NoError(t, err)
    23  	assert.Equal(t, `false`, string(bytes))
    24  }
    25  
    26  func TestOptionalIntEasyJSONMarshalling(t *testing.T) {
    27  	bytes, err := easyjson.Marshal(OptionalInt{})
    28  	assert.NoError(t, err)
    29  	assert.Equal(t, nullAsJSON, string(bytes))
    30  
    31  	bytes, err = easyjson.Marshal(NewOptionalInt(3))
    32  	assert.NoError(t, err)
    33  	assert.Equal(t, `3`, string(bytes))
    34  }
    35  
    36  func TestOptionalStringEasyJSONMarshalling(t *testing.T) {
    37  	bytes, err := easyjson.Marshal(OptionalString{})
    38  	assert.NoError(t, err)
    39  	assert.Equal(t, nullAsJSON, string(bytes))
    40  
    41  	bytes, err = easyjson.Marshal(NewOptionalString(`a "good" string`))
    42  	assert.NoError(t, err)
    43  	assert.Equal(t, `"a \"good\" string"`, string(bytes))
    44  }
    45  
    46  func TestOptionalBoolEasyJSONUnmarshalling(t *testing.T) {
    47  	var o OptionalBool
    48  	err := easyjson.Unmarshal([]byte(nullAsJSON), &o)
    49  	assert.NoError(t, err)
    50  	assert.False(t, o.IsDefined())
    51  
    52  	err = easyjson.Unmarshal([]byte(`true`), &o)
    53  	assert.NoError(t, err)
    54  	assert.Equal(t, NewOptionalBool(true), o)
    55  
    56  	err = easyjson.Unmarshal([]byte(`false`), &o)
    57  	assert.NoError(t, err)
    58  	assert.Equal(t, NewOptionalBool(false), o)
    59  
    60  	err = easyjson.Unmarshal([]byte(`3`), &o)
    61  	assert.Error(t, err)
    62  
    63  	err = easyjson.Unmarshal([]byte(`x`), &o)
    64  	assert.Error(t, err)
    65  }
    66  
    67  func TestOptionalIntEasyJSONUnmarshalling(t *testing.T) {
    68  	var o OptionalInt
    69  	err := easyjson.Unmarshal([]byte(nullAsJSON), &o)
    70  	assert.NoError(t, err)
    71  	assert.False(t, o.IsDefined())
    72  
    73  	err = easyjson.Unmarshal([]byte(`3`), &o)
    74  	assert.NoError(t, err)
    75  	assert.Equal(t, NewOptionalInt(3), o)
    76  
    77  	err = easyjson.Unmarshal([]byte(`true`), &o)
    78  	assert.Error(t, err)
    79  
    80  	err = easyjson.Unmarshal([]byte(`x`), &o)
    81  	assert.Error(t, err)
    82  }
    83  
    84  func TestOptionalStringEasyJSONUnmarshalling(t *testing.T) {
    85  	var o OptionalString
    86  	err := easyjson.Unmarshal([]byte(nullAsJSON), &o)
    87  	assert.NoError(t, err)
    88  	assert.False(t, o.IsDefined())
    89  
    90  	err = easyjson.Unmarshal([]byte(`"a \"good\" string"`), &o)
    91  	assert.NoError(t, err)
    92  	assert.True(t, o.IsDefined())
    93  	assert.Equal(t, `a "good" string`, o.StringValue())
    94  
    95  	err = easyjson.Unmarshal([]byte("3"), &o)
    96  	assert.Error(t, err)
    97  }
    98  

View as plain text