| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- package json_test
- import (
- "bytes"
- "io"
- "testing"
- "github.com/google/go-cmp/cmp"
- "github.com/v2fly/v2ray-core/v5/common"
- . "github.com/v2fly/v2ray-core/v5/infra/conf/json"
- )
- func TestReader(t *testing.T) {
- data := []struct {
- input string
- output string
- }{
- {
- `
- content #comment 1
- #comment 2
- content 2`,
- `
- content
- content 2`,
- },
- {`content`, `content`},
- {" ", " "},
- {`con/*abcd*/tent`, "content"},
- {`
- text // adlkhdf /*
- //comment adfkj
- text 2*/`, `
- text
- text 2*`},
- {`"//"content`, `"//"content`},
- {`abcd'//'abcd`, `abcd'//'abcd`},
- {`"\""`, `"\""`},
- {`\"/*abcd*/\"`, `\"\"`},
- }
- for _, testCase := range data {
- reader := &Reader{
- Reader: bytes.NewReader([]byte(testCase.input)),
- }
- actual := make([]byte, 1024)
- n, err := reader.Read(actual)
- common.Must(err)
- if r := cmp.Diff(string(actual[:n]), testCase.output); r != "" {
- t.Error(r)
- }
- }
- }
- func TestReader1(t *testing.T) {
- type dataStruct struct {
- input string
- output string
- }
- bufLen := 1
- data := []dataStruct{
- {"loooooooooooooooooooooooooooooooooooooooog", "loooooooooooooooooooooooooooooooooooooooog"},
- {`{"t": "\/testlooooooooooooooooooooooooooooong"}`, `{"t": "\/testlooooooooooooooooooooooooooooong"}`},
- {`{"t": "\/test"}`, `{"t": "\/test"}`},
- {`"\// fake comment"`, `"\// fake comment"`},
- {`"\/\/\/\/\/"`, `"\/\/\/\/\/"`},
- {`/test/test`, `/test/test`},
- }
- for _, testCase := range data {
- reader := &Reader{
- Reader: bytes.NewReader([]byte(testCase.input)),
- }
- target := make([]byte, 0)
- buf := make([]byte, bufLen)
- var n int
- var err error
- for n, err = reader.Read(buf); err == nil; n, err = reader.Read(buf) {
- if n > len(buf) {
- t.Error("n: ", n)
- }
- target = append(target, buf[:n]...)
- buf = make([]byte, bufLen)
- }
- if err != nil && err != io.EOF {
- t.Error("error: ", err)
- }
- if string(target) != testCase.output {
- t.Error("got ", string(target), " want ", testCase.output)
- }
- }
- }
|