// 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); } } }