diff options
Diffstat (limited to 'src/pkg/html/parse_test.go')
| -rw-r--r-- | src/pkg/html/parse_test.go | 152 | 
1 files changed, 0 insertions, 152 deletions
| diff --git a/src/pkg/html/parse_test.go b/src/pkg/html/parse_test.go deleted file mode 100644 index 3fa35d5db..000000000 --- a/src/pkg/html/parse_test.go +++ /dev/null @@ -1,152 +0,0 @@ -// Copyright 2010 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 html - -import ( -	"bufio" -	"bytes" -	"fmt" -	"io" -	"io/ioutil" -	"os" -	"strings" -	"testing" -) - -func pipeErr(err os.Error) io.Reader { -	pr, pw := io.Pipe() -	pw.CloseWithError(err) -	return pr -} - -func readDat(filename string, c chan io.Reader) { -	f, err := os.Open("testdata/webkit/" + filename) -	if err != nil { -		c <- pipeErr(err) -		return -	} -	defer f.Close() - -	// Loop through the lines of the file. Each line beginning with "#" denotes -	// a new section, which is returned as a separate io.Reader. -	r := bufio.NewReader(f) -	var pw *io.PipeWriter -	for { -		line, err := r.ReadSlice('\n') -		if err != nil { -			if pw != nil { -				pw.CloseWithError(err) -				pw = nil -			} else { -				c <- pipeErr(err) -			} -			return -		} -		if len(line) == 0 { -			continue -		} -		if line[0] == '#' { -			if pw != nil { -				pw.Close() -			} -			var pr *io.PipeReader -			pr, pw = io.Pipe() -			c <- pr -			continue -		} -		if line[0] != '|' { -			// Strip the trailing '\n'. -			line = line[:len(line)-1] -		} -		if pw != nil { -			if _, err := pw.Write(line); err != nil { -				pw.CloseWithError(err) -				pw = nil -			} -		} -	} -} - -func dumpLevel(w io.Writer, n *Node, level int) os.Error { -	io.WriteString(w, "| ") -	for i := 0; i < level; i++ { -		io.WriteString(w, "  ") -	} -	switch n.Type { -	case ErrorNode: -		return os.NewError("unexpected ErrorNode") -	case DocumentNode: -		return os.NewError("unexpected DocumentNode") -	case ElementNode: -		fmt.Fprintf(w, "<%s>", EscapeString(n.Data)) -	case TextNode: -		fmt.Fprintf(w, "%q", EscapeString(n.Data)) -	case CommentNode: -		return os.NewError("COMMENT") -	default: -		return os.NewError("unknown node type") -	} -	io.WriteString(w, "\n") -	for _, c := range n.Child { -		if err := dumpLevel(w, c, level+1); err != nil { -			return err -		} -	} -	return nil -} - -func dump(n *Node) (string, os.Error) { -	if n == nil || len(n.Child) == 0 { -		return "", nil -	} -	b := bytes.NewBuffer(nil) -	for _, child := range n.Child { -		if err := dumpLevel(b, child, 0); err != nil { -			return "", err -		} -	} -	return b.String(), nil -} - -func TestParser(t *testing.T) { -	// TODO(nigeltao): Process all the .dat files, not just the first one. -	filenames := []string{ -		"tests1.dat", -	} -	for _, filename := range filenames { -		rc := make(chan io.Reader) -		go readDat(filename, rc) -		// TODO(nigeltao): Process all test cases, not just a subset. -		for i := 0; i < 22; i++ { -			// Parse the #data section. -			b, err := ioutil.ReadAll(<-rc) -			if err != nil { -				t.Fatal(err) -			} -			text := string(b) -			doc, err := Parse(strings.NewReader(text)) -			if err != nil { -				t.Fatal(err) -			} -			actual, err := dump(doc) -			if err != nil { -				t.Fatal(err) -			} -			// Skip the #error section. -			if _, err := io.Copy(ioutil.Discard, <-rc); err != nil { -				t.Fatal(err) -			} -			// Compare the parsed tree to the #document section. -			b, err = ioutil.ReadAll(<-rc) -			if err != nil { -				t.Fatal(err) -			} -			expected := string(b) -			if actual != expected { -				t.Errorf("%s test #%d %q, actual vs expected:\n----\n%s----\n%s----", filename, i, text, actual, expected) -			} -		} -	} -} | 
