80 lines
1.8 KiB
Go
80 lines
1.8 KiB
Go
package sysfs
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"gobot.io/x/gobot/gobottest"
|
|
)
|
|
|
|
func TestMockFilesystemOpen(t *testing.T) {
|
|
fs := NewMockFilesystem([]string{"foo"})
|
|
f1 := fs.Files["foo"]
|
|
|
|
gobottest.Assert(t, f1.Opened, false)
|
|
f2, err := fs.OpenFile("foo", 0, 0666)
|
|
gobottest.Assert(t, f1, f2)
|
|
gobottest.Assert(t, err, nil)
|
|
|
|
err = f2.Sync()
|
|
gobottest.Assert(t, err, nil)
|
|
|
|
_, err = fs.OpenFile("bar", 0, 0666)
|
|
gobottest.Refute(t, err, nil)
|
|
|
|
fs.Add("bar")
|
|
f4, _ := fs.OpenFile("bar", 0, 0666)
|
|
gobottest.Refute(t, f4.Fd(), f1.Fd())
|
|
}
|
|
|
|
func TestMockFilesystemStat(t *testing.T) {
|
|
fs := NewMockFilesystem([]string{"foo", "bar/baz"})
|
|
|
|
fileStat, err := fs.Stat("foo")
|
|
gobottest.Assert(t, err, nil)
|
|
gobottest.Assert(t, fileStat.IsDir(), false)
|
|
|
|
dirStat, err := fs.Stat("bar")
|
|
gobottest.Assert(t, err, nil)
|
|
gobottest.Assert(t, dirStat.IsDir(), true)
|
|
|
|
_, err = fs.Stat("plonk")
|
|
gobottest.Refute(t, err, nil)
|
|
}
|
|
|
|
func TestMockFilesystemWrite(t *testing.T) {
|
|
fs := NewMockFilesystem([]string{"bar"})
|
|
f1 := fs.Files["bar"]
|
|
|
|
f2, err := fs.OpenFile("bar", 0, 0666)
|
|
gobottest.Assert(t, err, nil)
|
|
// Never been read or written.
|
|
gobottest.Assert(t, f1.Seq <= 0, true)
|
|
|
|
f2.WriteString("testing")
|
|
// Was written.
|
|
gobottest.Assert(t, f1.Seq > 0, true)
|
|
gobottest.Assert(t, f1.Contents, "testing")
|
|
}
|
|
|
|
func TestMockFilesystemRead(t *testing.T) {
|
|
fs := NewMockFilesystem([]string{"bar"})
|
|
f1 := fs.Files["bar"]
|
|
f1.Contents = "Yip"
|
|
|
|
f2, err := fs.OpenFile("bar", 0, 0666)
|
|
gobottest.Assert(t, err, nil)
|
|
// Never been read or written.
|
|
gobottest.Assert(t, f1.Seq <= 0, true)
|
|
|
|
buffer := make([]byte, 20)
|
|
n, _ := f2.Read(buffer)
|
|
|
|
// Was read.
|
|
gobottest.Assert(t, f1.Seq > 0, true)
|
|
gobottest.Assert(t, n, 3)
|
|
gobottest.Assert(t, string(buffer[:3]), "Yip")
|
|
|
|
n, _ = f2.ReadAt(buffer, 10)
|
|
gobottest.Assert(t, n, 3)
|
|
}
|