diff options
Diffstat (limited to 'src/pkg/go/parser/parser_test.go')
-rw-r--r-- | src/pkg/go/parser/parser_test.go | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/src/pkg/go/parser/parser_test.go b/src/pkg/go/parser/parser_test.go new file mode 100644 index 000000000..887fcf80f --- /dev/null +++ b/src/pkg/go/parser/parser_test.go @@ -0,0 +1,68 @@ +// 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); + } + } +} |