strimertul/utils/file_test.go

88 lines
1.6 KiB
Go

package utils
import (
"io/fs"
"sort"
"testing"
"time"
)
func TestByDate(t *testing.T) {
// Create some mocked dir entries with predictable dates
entries := []fs.DirEntry{
MockDirEntry{MockFileInfo{"a", 1, false, time.Date(2020, 1, 1, 0, 0, 0, 0, time.UTC)}},
MockDirEntry{MockFileInfo{"b", 2, false, time.Date(2020, 1, 4, 0, 0, 0, 0, time.UTC)}},
MockDirEntry{MockFileInfo{"c", 3, false, time.Date(2020, 1, 3, 0, 0, 0, 0, time.UTC)}},
}
// Sort them by date
sort.Sort(ByDate(entries))
// Check the order
if entries[0].Name() != "a" {
t.Error("Expected a to be first")
}
if entries[1].Name() != "c" {
t.Error("Expected c to be second")
}
if entries[2].Name() != "b" {
t.Error("Expected b to be third")
}
}
// Mock a DirEntry instance
type MockDirEntry struct {
info MockFileInfo
}
func (m MockDirEntry) Type() fs.FileMode {
return m.info.Mode()
}
func (m MockDirEntry) Name() string {
return m.info.Name()
}
func (m MockDirEntry) Size() int64 {
return m.info.Size()
}
func (m MockDirEntry) IsDir() bool {
return m.info.IsDir()
}
func (m MockDirEntry) Info() (fs.FileInfo, error) {
return m.info, nil
}
type MockFileInfo struct {
name string
size int64
isDir bool
modTime time.Time
}
func (m MockFileInfo) IsDir() bool {
return m.isDir
}
func (m MockFileInfo) Sys() any {
return nil
}
func (m MockFileInfo) Name() string {
return m.name
}
func (m MockFileInfo) Size() int64 {
return m.size
}
func (m MockFileInfo) Mode() fs.FileMode {
return fs.FileMode(0)
}
func (m MockFileInfo) ModTime() time.Time {
return m.modTime
}