mirror of
https://github.com/google/go-jsonnet.git
synced 2025-08-10 00:07:13 +02:00
Add exceptional test cases. Make case table less crazy.
This commit is contained in:
parent
18cf3bc68c
commit
c984516edb
@ -316,77 +316,39 @@ func TestNumber1epExc(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestNumberSeparators(t *testing.T) {
|
||||
cases := [...]struct {
|
||||
type numcase struct {
|
||||
input string
|
||||
err string
|
||||
tokens Tokens
|
||||
}{
|
||||
{
|
||||
input: "123_456",
|
||||
err: "",
|
||||
tokens: Tokens{{kind: tokenNumber, data: "123456"}},
|
||||
},
|
||||
{
|
||||
input: "1_750_000",
|
||||
err: "",
|
||||
tokens: Tokens{{kind: tokenNumber, data: "1750000"}},
|
||||
},
|
||||
{
|
||||
input: "1_2_3",
|
||||
err: "",
|
||||
tokens: Tokens{{kind: tokenNumber, data: "123"}},
|
||||
},
|
||||
{
|
||||
input: "3.141_592",
|
||||
err: "",
|
||||
tokens: Tokens{{kind: tokenNumber, data: "3.141592"}},
|
||||
},
|
||||
{
|
||||
input: "01_100",
|
||||
err: "",
|
||||
tokens: Tokens{
|
||||
{kind: tokenNumber, data: "0"},
|
||||
{kind: tokenNumber, data: "1100"},
|
||||
},
|
||||
},
|
||||
{
|
||||
input: "1_200.0",
|
||||
err: "",
|
||||
tokens: Tokens{{kind: tokenNumber, data: "1200.0"}},
|
||||
},
|
||||
{
|
||||
input: "0e1_01",
|
||||
err: "",
|
||||
tokens: Tokens{{kind: tokenNumber, data: "0e101"}},
|
||||
},
|
||||
{
|
||||
input: "10_10e3",
|
||||
err: "",
|
||||
tokens: Tokens{{kind: tokenNumber, data: "1010e3"}},
|
||||
},
|
||||
{
|
||||
input: "2_3e1_2",
|
||||
err: "",
|
||||
tokens: Tokens{{kind: tokenNumber, data: "23e12"}},
|
||||
},
|
||||
{
|
||||
input: "1.1_2e100",
|
||||
err: "",
|
||||
tokens: Tokens{{kind: tokenNumber, data: "1.12e100"}},
|
||||
},
|
||||
{
|
||||
input: "1.1e-10_1",
|
||||
err: "",
|
||||
tokens: Tokens{{kind: tokenNumber, data: "1.1e-101"}},
|
||||
},
|
||||
{
|
||||
input: "9.109_383_56e-31",
|
||||
err: "",
|
||||
tokens: Tokens{{kind: tokenNumber, data: "9.10938356e-31"}},
|
||||
},
|
||||
}
|
||||
|
||||
for _, c := range cases {
|
||||
mknumcase := func(input string, err string, tokens Tokens) numcase {
|
||||
return numcase{input, err, tokens}
|
||||
}
|
||||
for _, c := range [...]numcase{
|
||||
mknumcase("123_456", "", Tokens{{kind: tokenNumber, data: "123456"}}),
|
||||
mknumcase("1_750_000", "", Tokens{{kind: tokenNumber, data: "1750000"}}),
|
||||
mknumcase("1_2_3", "", Tokens{{kind: tokenNumber, data: "123"}}),
|
||||
mknumcase("3.141_592", "", Tokens{{kind: tokenNumber, data: "3.141592"}}),
|
||||
mknumcase("01_100", "", Tokens{
|
||||
{kind: tokenNumber, data: "0"},
|
||||
{kind: tokenNumber, data: "1100"},
|
||||
}),
|
||||
mknumcase("1_200.0", "", Tokens{{kind: tokenNumber, data: "1200.0"}}),
|
||||
mknumcase("0e1_01", "", Tokens{{kind: tokenNumber, data: "0e101"}}),
|
||||
mknumcase("10_10e3", "", Tokens{{kind: tokenNumber, data: "1010e3"}}),
|
||||
mknumcase("2_3e1_2", "", Tokens{{kind: tokenNumber, data: "23e12"}}),
|
||||
mknumcase("1.1_2e100", "", Tokens{{kind: tokenNumber, data: "1.12e100"}}),
|
||||
mknumcase("1.1e-10_1", "", Tokens{{kind: tokenNumber, data: "1.1e-101"}}),
|
||||
mknumcase("9.109_383_56e-31", "", Tokens{{kind: tokenNumber, data: "9.10938356e-31"}}),
|
||||
mknumcase("123456_!", "snippet:1:8 Couldn't lex number, junk after '_': '!'", Tokens{}),
|
||||
mknumcase("123__456", "snippet:1:5 Couldn't lex number, multiple consecutive _'s", Tokens{}),
|
||||
mknumcase("1_200_.0", "snippet:1:7 Couldn't lex number, junk after '_': '.'", Tokens{}),
|
||||
mknumcase("1_200._0", "snippet:1:7 Couldn't lex number, junk after decimal point: '_'", Tokens{}),
|
||||
mknumcase("1_200_e2", "snippet:1:7 Couldn't lex number, junk after '_': 'e'", Tokens{}),
|
||||
mknumcase("1_200e_2", "snippet:1:7 Couldn't lex number, junk after 'E': '_'", Tokens{}),
|
||||
mknumcase("200e-_2", "snippet:1:6 Couldn't lex number, junk after exponent sign: '_'", Tokens{}),
|
||||
mknumcase("200e+_2", "snippet:1:6 Couldn't lex number, junk after exponent sign: '_'", Tokens{}),
|
||||
} {
|
||||
t.Run(fmt.Sprintf("number %s", c.input), func(t *testing.T) {
|
||||
SingleTest(t, c.input, c.err, c.tokens)
|
||||
})
|
||||
|
Loading…
Reference in New Issue
Block a user