+++ /dev/null
-package printf
-
-import "testing"
-
-func BenchmarkParseVerb(b *testing.B) {
- for i := 0; i < b.N; i++ {
- ParseVerb("%[3]*.[2]*[1]f")
- }
-}
-
-func TestParseVerb(t *testing.T) {
- var tests = []struct {
- in string
- out Verb
- }{
- {
- `%d`,
- Verb{
- Letter: 'd',
- Width: Default{},
- Precision: Default{},
- Value: -1,
- },
- },
- {
- `%#d`,
- Verb{
- Letter: 'd',
- Flags: "#",
- Width: Default{},
- Precision: Default{},
- Value: -1,
- },
- },
- {
- `%+#d`,
- Verb{
- Letter: 'd',
- Flags: "+#",
- Width: Default{},
- Precision: Default{},
- Value: -1,
- },
- },
- {
- `%[2]d`,
- Verb{
- Letter: 'd',
- Width: Default{},
- Precision: Default{},
- Value: 2,
- },
- },
- {
- `%[3]*.[2]*[1]f`,
- Verb{
- Letter: 'f',
- Width: Star{3},
- Precision: Star{2},
- Value: 1,
- },
- },
- {
- `%6.2f`,
- Verb{
- Letter: 'f',
- Width: Literal(6),
- Precision: Literal(2),
- Value: -1,
- },
- },
- {
- `%#[1]x`,
- Verb{
- Letter: 'x',
- Flags: "#",
- Width: Default{},
- Precision: Default{},
- Value: 1,
- },
- },
- {
- "%%",
- Verb{
- Letter: '%',
- Width: Default{},
- Precision: Default{},
- Value: 0,
- },
- },
- {
- "%*%",
- Verb{
- Letter: '%',
- Width: Star{Index: -1},
- Precision: Default{},
- Value: 0,
- },
- },
- {
- "%[1]%",
- Verb{
- Letter: '%',
- Width: Default{},
- Precision: Default{},
- Value: 0,
- },
- },
- }
-
- for _, tt := range tests {
- tt.out.Raw = tt.in
- v, n, err := ParseVerb(tt.in)
- if err != nil {
- t.Errorf("unexpected error %s while parsing %s", err, tt.in)
- }
- if n != len(tt.in) {
- t.Errorf("ParseVerb only consumed %d of %d bytes", n, len(tt.in))
- }
- if v != tt.out {
- t.Errorf("%s parsed to %#v, want %#v", tt.in, v, tt.out)
- }
- }
-}