package main
import "testing"
type parseRangeScenario struct {
pattern string
expected []byte
}
func TestParseRange(t *testing.T) {
cases := []parseRangeScenario{
{
pattern: "",
expected: []byte{},
},
{
pattern: "ABC",
expected: []byte{'A', 'B', 'C'},
},
{
pattern: "ABBC",
expected: []byte{'A', 'B', 'B', 'C'},
},
{
pattern: "A-C",
expected: []byte{'A', 'B', 'C'},
},
{
pattern: "---",
expected: []byte{'-'},
},
{
pattern: "{0}",
expected: []byte{0},
},
{
pattern: "{0}-{2}",
expected: []byte{0, 1, 2},
},
}
for _, c := range cases {
chars := ParseRange(c.pattern)
matches := true
if len(c.expected) != len(chars) {
matches = false
}
for i := 0; matches && i < len(c.expected); i++ {
if c.expected[i] != chars[i] {
matches = false
break
}
}
if !matches {
t.Errorf("ParseRange(%v):\nEXPECTED: %v\n ACTUAL: %v", c.pattern, c.expected, chars)
}
}
}