| // 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 parser |
| |
| import ( |
| "go/ast"; |
| "go/parser"; |
| "os"; |
| "testing"; |
| ) |
| |
| |
| var illegalInputs = []interface{} { |
| nil, |
| 3.14, |
| []byte(nil), |
| "foo!", |
| } |
| |
| |
| func TestParseIllegalInputs(t *testing.T) { |
| for _, src := range illegalInputs { |
| prog, err := Parse(src, 0); |
| if err == nil { |
| t.Errorf("Parse(%v) should have failed", src); |
| } |
| } |
| } |
| |
| |
| var validPrograms = []interface{} { |
| `package main`, |
| `package main import "fmt" func main() { fmt.Println("Hello, World!") }`, |
| } |
| |
| |
| func TestParseValidPrograms(t *testing.T) { |
| for _, src := range validPrograms { |
| prog, err := Parse(src, 0); |
| if err != nil { |
| t.Errorf("Parse(%q) failed: %v", src, err); |
| } |
| } |
| } |
| |
| |
| var validFiles = []string { |
| "parser.go", |
| "parser_test.go", |
| } |
| |
| |
| func TestParse3(t *testing.T) { |
| for _, filename := range validFiles { |
| src, err := os.Open(filename, os.O_RDONLY, 0); |
| defer src.Close(); |
| if err != nil { |
| t.Fatalf("os.Open(%s): %v\n", filename, err); |
| } |
| |
| prog, err := Parse(src, 0); |
| if err != nil { |
| t.Errorf("Parse(%q): %v", src, err); |
| } |
| } |
| } |