mirror of
https://git.sr.ht/~ashkeel/strimertul
synced 2024-09-30 02:40:33 +00:00
88 lines
1.6 KiB
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
|
||
|
}
|