Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
testjson_test.go86 linesDownload Raw Back to dist
1// Copyright 2023 The Go Authors. All rights reserved.2// Use of this source code is governed by a BSD-style3// license that can be found in the LICENSE file.4 5package main6 7import (8	"strings"9	"testing"10)11 12func TestJSONFilterRewritePackage(t *testing.T) {13	const in = `{"Package":"abc"}14{"Field1":"1","Package":"abc","Field3":"3"}15{"Package":123}16{}17{"Package":"abc","Unexpected":[null,true,false,99999999999999999999]}18`19	want := strings.ReplaceAll(in, `"Package":"abc"`, `"Package":"abc:variant"`)20 21	checkJSONFilter(t, in, want)22}23 24func TestJSONFilterMalformed(t *testing.T) {25	const in = `unexpected text26{"Package":"abc"}27more text28{"Package":"abc"}trailing text29{not json}30no newline`31	const want = `unexpected text32{"Package":"abc:variant"}33more text34{"Package":"abc:variant"}trailing text35{not json}36no newline`37	checkJSONFilter(t, in, want)38}39 40func TestJSONFilterBoundaries(t *testing.T) {41	const in = `{"Package":"abc"}42{"Package":"def"}43{"Package":"ghi"}44`45	want := strings.ReplaceAll(in, `"}`, `:variant"}`)46 47	// Write one bytes at a time.48	t.Run("bytes", func(t *testing.T) {49		checkJSONFilterWith(t, want, func(f *testJSONFilter) {50			for i := 0; i < len(in); i++ {51				f.Write([]byte{in[i]})52			}53		})54	})55	// Write a block containing a whole line bordered by two partial lines.56	t.Run("bytes", func(t *testing.T) {57		checkJSONFilterWith(t, want, func(f *testJSONFilter) {58			const b1 = 559			const b2 = len(in) - 560			f.Write([]byte(in[:b1]))61			f.Write([]byte(in[b1:b2]))62			f.Write([]byte(in[b2:]))63		})64	})65}66 67func checkJSONFilter(t *testing.T, in, want string) {68	t.Helper()69	checkJSONFilterWith(t, want, func(f *testJSONFilter) {70		f.Write([]byte(in))71	})72}73 74func checkJSONFilterWith(t *testing.T, want string, write func(*testJSONFilter)) {75	t.Helper()76 77	out := new(strings.Builder)78	f := &testJSONFilter{w: out, variant: "variant"}79	write(f)80	f.Flush()81	got := out.String()82	if want != got {83		t.Errorf("want:\n%s\ngot:\n%s", want, got)84	}85}86 
codekingpro/portable-devtools · Team Ai