2017-07-15 21:49:08 +02:00
|
|
|
package treerack
|
2017-06-25 17:51:08 +02:00
|
|
|
|
|
|
|
import "testing"
|
|
|
|
|
|
|
|
func TestSExpr(t *testing.T) {
|
2017-10-27 17:25:20 +02:00
|
|
|
runTestsFile(t, "sexpr.parser", []testItem{{
|
|
|
|
title: "number",
|
|
|
|
text: "42",
|
2017-06-25 17:51:08 +02:00
|
|
|
nodes: []*Node{{
|
|
|
|
Name: "number",
|
|
|
|
}},
|
|
|
|
ignorePosition: true,
|
|
|
|
}, {
|
2017-10-27 17:25:20 +02:00
|
|
|
title: "string",
|
|
|
|
text: "\"foo\"",
|
2017-06-25 17:51:08 +02:00
|
|
|
nodes: []*Node{{
|
|
|
|
Name: "string",
|
|
|
|
}},
|
|
|
|
ignorePosition: true,
|
|
|
|
}, {
|
2017-10-27 17:25:20 +02:00
|
|
|
title: "symbol",
|
|
|
|
text: "foo",
|
2017-06-25 17:51:08 +02:00
|
|
|
nodes: []*Node{{
|
|
|
|
Name: "symbol",
|
|
|
|
}},
|
|
|
|
ignorePosition: true,
|
|
|
|
}, {
|
2017-10-27 17:25:20 +02:00
|
|
|
title: "nil",
|
|
|
|
text: "()",
|
2017-06-25 17:51:08 +02:00
|
|
|
nodes: []*Node{{
|
|
|
|
Name: "list",
|
|
|
|
}},
|
|
|
|
ignorePosition: true,
|
|
|
|
}, {
|
2017-10-27 17:25:20 +02:00
|
|
|
title: "list",
|
|
|
|
text: "(foo bar baz)",
|
2017-06-25 17:51:08 +02:00
|
|
|
nodes: []*Node{{
|
|
|
|
Name: "list",
|
|
|
|
Nodes: []*Node{{
|
|
|
|
Name: "symbol",
|
|
|
|
}, {
|
|
|
|
Name: "symbol",
|
|
|
|
}, {
|
|
|
|
Name: "symbol",
|
|
|
|
}},
|
|
|
|
}},
|
|
|
|
ignorePosition: true,
|
|
|
|
}, {
|
2017-10-27 17:25:20 +02:00
|
|
|
title: "embedded list",
|
|
|
|
text: "(foo (bar (baz)) qux)",
|
2017-06-25 17:51:08 +02:00
|
|
|
nodes: []*Node{{
|
|
|
|
Name: "list",
|
|
|
|
Nodes: []*Node{{
|
|
|
|
Name: "symbol",
|
|
|
|
}, {
|
|
|
|
Name: "list",
|
|
|
|
Nodes: []*Node{{
|
|
|
|
Name: "symbol",
|
|
|
|
}, {
|
|
|
|
Name: "list",
|
|
|
|
Nodes: []*Node{{
|
|
|
|
Name: "symbol",
|
|
|
|
}},
|
|
|
|
}},
|
|
|
|
}, {
|
|
|
|
Name: "symbol",
|
|
|
|
}},
|
|
|
|
}},
|
|
|
|
ignorePosition: true,
|
2017-10-29 01:14:31 +02:00
|
|
|
}, {
|
|
|
|
title: "comment and expression",
|
|
|
|
text: `; some comment
|
|
|
|
(some expression)`,
|
|
|
|
ignorePosition: true,
|
|
|
|
nodes: []*Node{{
|
|
|
|
Name: "list",
|
|
|
|
Nodes: []*Node{{
|
|
|
|
Name: "symbol",
|
|
|
|
}, {
|
|
|
|
Name: "symbol",
|
|
|
|
}},
|
|
|
|
}},
|
|
|
|
}, {
|
|
|
|
title: "empty comment and expression",
|
|
|
|
text: `;
|
|
|
|
(some expression)`,
|
|
|
|
ignorePosition: true,
|
|
|
|
nodes: []*Node{{
|
|
|
|
Name: "list",
|
|
|
|
Nodes: []*Node{{
|
|
|
|
Name: "symbol",
|
|
|
|
}, {
|
|
|
|
Name: "symbol",
|
|
|
|
}},
|
|
|
|
}},
|
2017-06-25 17:51:08 +02:00
|
|
|
}})
|
|
|
|
}
|