aboutsummaryrefslogtreecommitdiff
path: root/lib/bytes/parser_test.go
diff options
context:
space:
mode:
authorShulhan <ms@kilabit.info>2024-03-25 03:14:12 +0700
committerShulhan <ms@kilabit.info>2024-03-25 03:14:12 +0700
commita40a8e1b8a0a2298db9b27c052f4fd5d0178eb6c (patch)
treebd2ba25bdc711f12d75cc03a03dd1d7faa29b116 /lib/bytes/parser_test.go
parenta78ff8d36f11acc5a65b22f2aa72557b9667f23f (diff)
downloadpakakeh.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.go101
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())
+ }
+}