89 lines
1.3 KiB
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")
|
|
}
|
|
}
|