--- /dev/null
+// Copyright 2018 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 static
+
+import (
+ "bytes"
+ "io/ioutil"
+ "runtime"
+ "strconv"
+ "testing"
+ "unicode"
+)
+
+func TestStaticIsUpToDate(t *testing.T) {
+ if runtime.GOOS == "android" {
+ t.Skip("files not available on android")
+ }
+ oldBuf, err := ioutil.ReadFile("static.go")
+ if err != nil {
+ t.Errorf("error while reading static.go: %v\n", err)
+ }
+
+ newBuf, err := Generate()
+ if err != nil {
+ t.Errorf("error while generating static.go: %v\n", err)
+ }
+
+ if !bytes.Equal(oldBuf, newBuf) {
+ t.Error(`static.go is stale. Run:
+ $ go generate golang.org/x/tools/godoc/static
+ $ git diff
+to see the differences.`)
+
+ }
+}
+
+// TestAppendQuote ensures that AppendQuote produces a valid literal.
+func TestAppendQuote(t *testing.T) {
+ var in, out bytes.Buffer
+ for r := rune(0); r < unicode.MaxRune; r++ {
+ in.WriteRune(r)
+ }
+ appendQuote(&out, in.Bytes())
+ in2, err := strconv.Unquote(out.String())
+ if err != nil {
+ t.Fatalf("AppendQuote produced invalid string literal: %v", err)
+ }
+ if got, want := in2, in.String(); got != want {
+ t.Fatal("AppendQuote modified string") // no point printing got/want: huge
+ }
+}