package node import ( "bytes" "sync" "testing" core "dappco.re/go/core" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) // --- buffer_pool.go tests --- func TestBufferPool_Buffer_ReturnsResetBuffer_Good(t *testing.T) { t.Run("buffer is initially empty", func(t *testing.T) { buf := getBuffer() defer putBuffer(buf) assert.Equal(t, 0, buf.Len(), "buffer from pool should have zero length") }) t.Run("buffer is reset after reuse", func(t *testing.T) { buf := getBuffer() buf.WriteString("stale data that should be cleared") putBuffer(buf) buf2 := getBuffer() defer putBuffer(buf2) assert.Equal(t, 0, buf2.Len(), "reused buffer should be reset (no stale data)") }) } func TestBufferPool_PutBuffer_DiscardsOversizedBuffers_Good(t *testing.T) { t.Run("buffer at 64KB limit is pooled", func(t *testing.T) { buf := getBuffer() buf.Grow(65536) putBuffer(buf) buf2 := getBuffer() defer putBuffer(buf2) assert.Equal(t, 0, buf2.Len()) }) t.Run("buffer exceeding 64KB is discarded", func(t *testing.T) { buf := getBuffer() large := make([]byte, 65537) buf.Write(large) assert.Greater(t, buf.Cap(), 65536, "buffer should have grown past 64KB") putBuffer(buf) buf2 := getBuffer() defer putBuffer(buf2) assert.LessOrEqual(t, buf2.Cap(), 65536, "pool should not return an oversized buffer") }) } func TestBufferPool_BufferIndependence_Good(t *testing.T) { buf1 := getBuffer() buf2 := getBuffer() buf1.WriteString("buffer-one") buf2.WriteString("buffer-two") assert.Equal(t, "buffer-one", buf1.String()) assert.Equal(t, "buffer-two", buf2.String()) buf1.WriteString("-extra") assert.Equal(t, "buffer-one-extra", buf1.String()) assert.Equal(t, "buffer-two", buf2.String()) putBuffer(buf1) putBuffer(buf2) } func TestBufferPool_MarshalJSON_BasicTypes_Good(t *testing.T) { tests := []struct { name string input any }{ { name: "string value", input: "hello", }, { name: "integer value", input: 42, }, { name: "float value", input: 3.14, }, { name: "boolean value", input: true, }, { name: "nil value", input: nil, }, { name: "struct value", input: PingPayload{SentAt: 1234567890}, }, { name: "map value", input: map[string]any{"key": "value", "num": 42}, }, { name: "slice value", input: []int{1, 2, 3}, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { got, err := MarshalJSON(tt.input) require.NoError(t, err) expected := testJSONMarshal(t, tt.input) assert.JSONEq(t, string(expected), string(got), "MarshalJSON output should match json.Marshal") }) } } func TestBufferPool_MarshalJSON_NoTrailingNewline_Good(t *testing.T) { data, err := MarshalJSON(map[string]string{"key": "value"}) require.NoError(t, err) assert.NotEqual(t, byte('\n'), data[len(data)-1], "MarshalJSON should strip the trailing newline added by json.Encoder") } func TestBufferPool_MarshalJSON_HTMLEscaping_Good(t *testing.T) { input := map[string]string{"html": ""} data, err := MarshalJSON(input) require.NoError(t, err) assert.Contains(t, string(data), "