overlay/xtfs_test.go

89 lines
1.3 KiB
Go

package xtfs
import (
"embed"
"io"
"os"
"strings"
"testing"
)
var (
//go:embed _test/embed
embedded embed.FS
xtfs *XTFS
)
func TestMain(m *testing.M) {
var err error
xtfs, err = New("_test/disk", embedded, WithSub("_test/embed"), WithCaching(false))
if err != nil {
panic(err)
}
os.Exit(m.Run())
}
func TestEmbed(t *testing.T) {
fi, err := xtfs.Open("test1.txt")
if err != nil {
t.Log(err)
t.FailNow()
}
defer fi.Close()
test1, err := io.ReadAll(fi)
if err != nil {
t.Log(err)
t.FailNow()
}
if !strings.EqualFold(string(test1), "test1") {
t.Log("embed did not match")
t.FailNow()
}
}
func TestDisk(t *testing.T) {
fi, err := xtfs.Open("test2.txt")
if err != nil {
t.Log(err)
t.FailNow()
}
defer fi.Close()
test2, err := io.ReadAll(fi)
if err != nil {
t.Log(err)
t.FailNow()
}
if !strings.EqualFold(string(test2), "test3") {
t.Log("embed did not match")
t.FailNow()
}
}
func BenchmarkCache(b *testing.B) {
x, err := New("_test/disk", embedded)
if err != nil {
b.Log(err)
b.FailNow()
}
for idx := 0; idx < b.N; idx++ {
x.exists("test2.txt")
}
}
func BenchmarkNoCache(b *testing.B) {
x, err := New("_test/disk", embedded, WithCaching(false))
if err != nil {
b.Log(err)
b.FailNow()
}
for idx := 0; idx < b.N; idx++ {
x.exists("test2.txt")
}
}