@@ -0,0 +1,58 @@
|
||||
package filesystem
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"os"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
func TestCachedFile_Serialization(t *testing.T) {
|
||||
now := time.Now().Truncate(time.Second) // JSON marshal of time might lose precision
|
||||
cf := File{
|
||||
name: "test.md",
|
||||
size: 123,
|
||||
mode: 0o644,
|
||||
modTime: now,
|
||||
isDir: false,
|
||||
contentType: "text/markdown",
|
||||
path: "/test.md",
|
||||
}
|
||||
|
||||
data, err := json.Marshal(cf)
|
||||
if err != nil {
|
||||
t.Fatalf("Marshal failed: %v", err)
|
||||
}
|
||||
|
||||
var cf2 File
|
||||
if err := json.Unmarshal(data, &cf2); err != nil {
|
||||
t.Fatalf("Unmarshal failed: %v", err)
|
||||
}
|
||||
|
||||
if cf.name != cf2.name {
|
||||
t.Errorf("Name mismatch: %s != %s", cf.name, cf2.name)
|
||||
}
|
||||
if cf.size != cf2.size {
|
||||
t.Errorf("Size mismatch: %d != %d", cf.size, cf2.size)
|
||||
}
|
||||
if cf.mode != cf2.mode {
|
||||
t.Errorf("Mode mismatch: %v != %v", cf.mode, cf2.mode)
|
||||
}
|
||||
if !cf.modTime.Equal(cf2.modTime) {
|
||||
t.Errorf("ModTime mismatch: %v != %v", cf.modTime, cf2.modTime)
|
||||
}
|
||||
if cf.isDir != cf2.isDir {
|
||||
t.Errorf("IsDir mismatch: %v != %v", cf.isDir, cf2.isDir)
|
||||
}
|
||||
if cf.contentType != cf2.contentType {
|
||||
t.Errorf("ContentType mismatch: %s != %s", cf.contentType, cf2.contentType)
|
||||
}
|
||||
if cf.path != cf2.path {
|
||||
t.Errorf("Path mismatch: %s != %s", cf.path, cf2.path)
|
||||
}
|
||||
}
|
||||
|
||||
func TestCachedFile_Interface(t *testing.T) {
|
||||
// Verify CachedFile implements os.FileInfo
|
||||
var _ os.FileInfo = File{}
|
||||
}
|
||||
Reference in New Issue
Block a user