| // Copyright 2009 The Go Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style | |
| // license that can be found in the LICENSE file. | |
| package ebnf | |
| import ( | |
| "io/ioutil" | |
| "testing" | |
| ) | |
| var grammars = []string{ | |
| `Program = . | |
| `, | |
| `Program = foo . | |
| foo = "foo" . | |
| `, | |
| `Program = "a" | "b" "c" . | |
| `, | |
| `Program = "a" ... "z" . | |
| `, | |
| `Program = Song . | |
| Song = { Note } . | |
| Note = Do | (Re | Mi | Fa | So | La) | Ti . | |
| Do = "c" . | |
| Re = "d" . | |
| Mi = "e" . | |
| Fa = "f" . | |
| So = "g" . | |
| La = "a" . | |
| Ti = ti . | |
| ti = "b" . | |
| `, | |
| } | |
| func check(t *testing.T, filename string, src []byte) { | |
| grammar, err := Parse(filename, src) | |
| if err != nil { | |
| t.Errorf("Parse(%s) failed: %v", src, err) | |
| } | |
| if err = Verify(grammar, "Program"); err != nil { | |
| t.Errorf("Verify(%s) failed: %v", src, err) | |
| } | |
| } | |
| func TestGrammars(t *testing.T) { | |
| for _, src := range grammars { | |
| check(t, "", []byte(src)) | |
| } | |
| } | |
| var files = []string{ | |
| // TODO(gri) add some test files | |
| } | |
| func TestFiles(t *testing.T) { | |
| for _, filename := range files { | |
| src, err := ioutil.ReadFile(filename) | |
| if err != nil { | |
| t.Fatal(err) | |
| } | |
| check(t, filename, src) | |
| } | |
| } |