// Copyright 2020 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 fs_test

import (
	"fmt"
	"testing"

	. "golang.org/x/website/internal/backport/io/fs"
)

type statOnly struct{ StatFS }

func (statOnly) Open(name string) (File, error) { return nil, ErrNotExist }

func TestStat(t *testing.T) {
	check := func(desc string, info FileInfo, err error) {
		t.Helper()
		if err != nil || info == nil || info.Mode() != 0456 {
			infoStr := "<nil>"
			if info != nil {
				infoStr = fmt.Sprintf("FileInfo(Mode: %#o)", info.Mode())
			}
			t.Fatalf("Stat(%s) = %v, %v, want Mode:0456, nil", desc, infoStr, err)
		}
	}

	// Test that Stat uses the method when present.
	info, err := Stat(statOnly{testFsys}, "hello.txt")
	check("statOnly", info, err)

	// Test that Stat uses Open when the method is not present.
	info, err = Stat(openOnly{testFsys}, "hello.txt")
	check("openOnly", info, err)
}
