...

Source file src/github.com/launchdarkly/go-jsonstream/v3/jreader/reader_init_easyjson_test.go

Documentation: github.com/launchdarkly/go-jsonstream/v3/jreader

     1  //go:build launchdarkly_easyjson
     2  // +build launchdarkly_easyjson
     3  
     4  package jreader
     5  
     6  import (
     7  	"testing"
     8  
     9  	"github.com/mailru/easyjson/jlexer"
    10  	"github.com/stretchr/testify/require"
    11  )
    12  
    13  func TestNewReaderFromEasyJSONLexer(t *testing.T) {
    14  	data := []byte(`[1,{"property":2},3]`)
    15  	lexer := jlexer.Lexer{Data: data}
    16  
    17  	// Parse the first part of the JSON array directly with the Lexer
    18  	lexer.Delim('[')
    19  	require.NoError(t, lexer.Error())
    20  	n := lexer.Int()
    21  	require.Equal(t, 1, n)
    22  	require.NoError(t, lexer.Error())
    23  	lexer.WantComma()
    24  
    25  	// Now pick up where we left off and use the Reader to parse {"property":2}
    26  	reader := NewReaderFromEasyJSONLexer(&lexer)
    27  	obj := reader.Object()
    28  	require.NoError(t, reader.Error())
    29  	require.True(t, obj.Next())
    30  	require.Equal(t, "property", string(obj.Name()))
    31  	n = reader.Int()
    32  	require.NoError(t, reader.Error())
    33  	require.Equal(t, 2, n)
    34  	require.False(t, obj.Next())
    35  
    36  	// The Lexer should be left in the proper state to parse the rest of the stream
    37  	require.NoError(t, lexer.Error())
    38  	lexer.WantComma()
    39  	n = lexer.Int()
    40  	require.Equal(t, 3, n)
    41  	require.NoError(t, lexer.Error())
    42  	lexer.WantComma() // we don't actually want a comma here, but that's how you read arrays in easyjson
    43  	lexer.Delim(']')
    44  	require.NoError(t, lexer.Error())
    45  }
    46  

View as plain text