| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- 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 := 8
- data := []dataStruct{
- {"loooooooooooooooooooooooooooooooooooooooog", "loooooooooooooooooooooooooooooooooooooooog"},
- {`{"t": "\/testlooooooooooooooooooooooooooooong"}`, `{"t": "\/testlooooooooooooooooooooooooooooong"}`},
- {`{"t": "\/test"}`, `{"t": "\/test"}`},
- {`"\// fake comment"`, `"\// fake comment"`},
- {`"\/\/\/\/\/"`, `"\/\/\/\/\/"`},
- }
- 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)
- }
- }
- }
|