|  | // 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 ioutil | 
|  |  | 
|  | import ( | 
|  | "os" | 
|  | "testing" | 
|  | ) | 
|  |  | 
|  | func checkSize(t *testing.T, path string, size int64) { | 
|  | dir, err := os.Stat(path) | 
|  | if err != nil { | 
|  | t.Fatalf("Stat %q (looking for size %d): %s", path, size, err) | 
|  | } | 
|  | if dir.Size() != size { | 
|  | t.Errorf("Stat %q: size %d want %d", path, dir.Size(), size) | 
|  | } | 
|  | } | 
|  |  | 
|  | func TestReadFile(t *testing.T) { | 
|  | filename := "rumpelstilzchen" | 
|  | contents, err := ReadFile(filename) | 
|  | if err == nil { | 
|  | t.Fatalf("ReadFile %s: error expected, none found", filename) | 
|  | } | 
|  |  | 
|  | filename = "ioutil_test.go" | 
|  | contents, err = ReadFile(filename) | 
|  | if err != nil { | 
|  | t.Fatalf("ReadFile %s: %v", filename, err) | 
|  | } | 
|  |  | 
|  | checkSize(t, filename, int64(len(contents))) | 
|  | } | 
|  |  | 
|  | func TestWriteFile(t *testing.T) { | 
|  | f, err := TempFile("", "ioutil-test") | 
|  | if err != nil { | 
|  | t.Fatal(err) | 
|  | } | 
|  | filename := f.Name() | 
|  | data := "Programming today is a race between software engineers striving to " + | 
|  | "build bigger and better idiot-proof programs, and the Universe trying " + | 
|  | "to produce bigger and better idiots. So far, the Universe is winning." | 
|  |  | 
|  | if err := WriteFile(filename, []byte(data), 0644); err != nil { | 
|  | t.Fatalf("WriteFile %s: %v", filename, err) | 
|  | } | 
|  |  | 
|  | contents, err := ReadFile(filename) | 
|  | if err != nil { | 
|  | t.Fatalf("ReadFile %s: %v", filename, err) | 
|  | } | 
|  |  | 
|  | if string(contents) != data { | 
|  | t.Fatalf("contents = %q\nexpected = %q", string(contents), data) | 
|  | } | 
|  |  | 
|  | // cleanup | 
|  | f.Close() | 
|  | os.Remove(filename) // ignore error | 
|  | } | 
|  |  | 
|  | func TestReadDir(t *testing.T) { | 
|  | dirname := "rumpelstilzchen" | 
|  | _, err := ReadDir(dirname) | 
|  | if err == nil { | 
|  | t.Fatalf("ReadDir %s: error expected, none found", dirname) | 
|  | } | 
|  |  | 
|  | dirname = ".." | 
|  | list, err := ReadDir(dirname) | 
|  | if err != nil { | 
|  | t.Fatalf("ReadDir %s: %v", dirname, err) | 
|  | } | 
|  |  | 
|  | foundFile := false | 
|  | foundSubDir := false | 
|  | for _, dir := range list { | 
|  | switch { | 
|  | case !dir.IsDir() && dir.Name() == "io_test.go": | 
|  | foundFile = true | 
|  | case dir.IsDir() && dir.Name() == "ioutil": | 
|  | foundSubDir = true | 
|  | } | 
|  | } | 
|  | if !foundFile { | 
|  | t.Fatalf("ReadDir %s: io_test.go file not found", dirname) | 
|  | } | 
|  | if !foundSubDir { | 
|  | t.Fatalf("ReadDir %s: ioutil directory not found", dirname) | 
|  | } | 
|  | } |