treerack/whitespace_test.go

141 lines
2.3 KiB
Go
Raw Normal View History

2017-10-28 16:55:58 +02:00
package treerack
import "testing"
const (
csvWithoutWhitespaceSupport = `
ws:alias = [ \t]*;
cell = [^\n, \t]*;
line = ws cell (ws "," ws cell)* ws;
document = (line ("\n" line)*)?;
`
)
func TestCSVWhitespace(t *testing.T) {
t.Run("wihout whitespace support", func(t *testing.T) {
s, err := openSyntaxString(csvWithoutWhitespaceSupport)
if err != nil {
t.Error(err)
return
}
runTestsSyntax(t, s, []testItem{{
title: "empty",
node: &Node{
Name: "document",
},
}, {
title: "only a cell",
text: "abc",
ignorePosition: true,
node: &Node{
Name: "document",
Nodes: []*Node{{
Name: "line",
Nodes: []*Node{{
Name: "cell",
}},
}},
},
}, {
title: "single line",
text: `a, b, c`,
ignorePosition: true,
node: &Node{
Name: "document",
Nodes: []*Node{{
Name: "line",
Nodes: []*Node{{
Name: "cell",
}, {
Name: "cell",
}, {
Name: "cell",
}},
}},
},
}, {
title: "regular csv",
text: `a, b, c
d, e, f`,
ignorePosition: true,
node: &Node{
Name: "document",
Nodes: []*Node{{
Name: "line",
Nodes: []*Node{{
Name: "cell",
}, {
Name: "cell",
}, {
Name: "cell",
}},
}, {
Name: "line",
Nodes: []*Node{{
Name: "cell",
}, {
Name: "cell",
}, {
Name: "cell",
}},
}},
},
}, {
title: "irregular csv",
text: `a,, b, c,
d, ,,,,`,
ignorePosition: true,
node: &Node{
Name: "document",
Nodes: []*Node{{
Name: "line",
Nodes: []*Node{{
Name: "cell",
}, {
Name: "cell",
}, {
Name: "cell",
}, {
Name: "cell",
}, {
Name: "cell",
}},
}, {
Name: "line",
Nodes: []*Node{{
Name: "cell",
}, {
Name: "cell",
}, {
Name: "cell",
}, {
Name: "cell",
}, {
Name: "cell",
}, {
Name: "cell",
}},
}},
},
}, {
title: "too many commas",
text: `a,,`,
ignorePosition: true,
node: &Node{
Name: "document",
Nodes: []*Node{{
Name: "line",
Nodes: []*Node{{
Name: "cell",
}, {
Name: "cell",
}, {
Name: "cell",
}},
}},
},
}})
})
}