diff options
| author | Shulhan <ms@kilabit.info> | 2024-03-25 03:14:12 +0700 |
|---|---|---|
| committer | Shulhan <ms@kilabit.info> | 2024-03-25 03:14:12 +0700 |
| commit | a40a8e1b8a0a2298db9b27c052f4fd5d0178eb6c (patch) | |
| tree | bd2ba25bdc711f12d75cc03a03dd1d7faa29b116 /lib/bytes/parser_test.go | |
| parent | a78ff8d36f11acc5a65b22f2aa72557b9667f23f (diff) | |
| download | pakakeh.go-a40a8e1b8a0a2298db9b27c052f4fd5d0178eb6c.tar.xz | |
lib/bytes: add test for Parser Read and ReadNoSpace
The test initialize Parser with seven delimiters, '\t', '=', '\n', ' ',
'"', '(', and ')' and then Read token from multi lines contents.
Diffstat (limited to 'lib/bytes/parser_test.go')
| -rw-r--r-- | lib/bytes/parser_test.go | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/lib/bytes/parser_test.go b/lib/bytes/parser_test.go new file mode 100644 index 00000000..e931497c --- /dev/null +++ b/lib/bytes/parser_test.go @@ -0,0 +1,101 @@ +package bytes + +import ( + "bytes" + "fmt" + "testing" + + "git.sr.ht/~shulhan/pakakeh.go/lib/test" +) + +func TestParser_Read(t *testing.T) { + var ( + logp = `TestParser` + + tdata *test.Data + err error + ) + + tdata, err = test.LoadData(`testdata/Parser_Read_test.txt`) + if err != nil { + t.Fatal(logp, err) + } + + var listCase = []string{ + `multiline`, + } + + var ( + tcase string + tag string + parser *Parser + out bytes.Buffer + content []byte + delims []byte + token []byte + c byte + ) + + for _, tcase = range listCase { + content = tdata.Input[tcase] + delims = tdata.Input[tcase+`:delims`] + + parser = NewParser(content, delims) + + out.Reset() + for { + token, c = parser.Read() + fmt.Fprintf(&out, "%q %q\n", token, c) + if c == 0 { + break + } + } + tag = tcase + `:Read` + test.Assert(t, tag, string(tdata.Output[tag]), out.String()) + } +} + +func TestParser_ReadNoSpace(t *testing.T) { + var ( + logp = `TestParser` + + tdata *test.Data + err error + ) + + tdata, err = test.LoadData(`testdata/Parser_ReadNoSpace_test.txt`) + if err != nil { + t.Fatal(logp, err) + } + + var listCase = []string{ + `multiline`, + } + + var ( + tcase string + tag string + parser *Parser + out bytes.Buffer + content []byte + delims []byte + token []byte + c byte + ) + + for _, tcase = range listCase { + content = tdata.Input[tcase] + delims = tdata.Input[tcase+`:delims`] + parser = NewParser(content, delims) + out.Reset() + for { + token, c = parser.ReadNoSpace() + fmt.Fprintf(&out, "%q %q\n", token, c) + if c == 0 { + break + } + } + tag = tcase + `:ReadNoSpace` + test.Assert(t, tag, string(tdata.Output[tag]), out.String()) + } +} |
