diff --git a/internal/browser/browser_test.go b/internal/browser/browser_test.go index b470f2b..42c5810 100644 --- a/internal/browser/browser_test.go +++ b/internal/browser/browser_test.go @@ -26,10 +26,13 @@ func TestLoadPage_FromIndexAtOffset(t *testing.T) { ) } - // Build position map for the default sort mode (NameAsc) + // Build position maps for sort modes s.SortIndex = &DirectoryIndex{ Entries: allEntries, - SortOrders: map[string][]int{"name_asc": buildPositionMap(allEntries, SortModeNameAsc)}, + SortOrders: map[string][]int{ + "name_asc": buildPositionMap(allEntries, SortModeNameAsc), + "date_desc": buildPositionMap(allEntries, SortModeDateDesc), + }, } // Load page 1 (entries 100-199) @@ -71,10 +74,13 @@ func TestLoadPage_LastPagePartialFromIndex(t *testing.T) { ) } - // Build position map for the default sort mode (NameAsc) + // Build position maps for sort modes s.SortIndex = &DirectoryIndex{ Entries: allEntries, - SortOrders: map[string][]int{"name_asc": buildPositionMap(allEntries, SortModeNameAsc)}, + SortOrders: map[string][]int{ + "name_asc": buildPositionMap(allEntries, SortModeNameAsc), + "date_desc": buildPositionMap(allEntries, SortModeDateDesc), + }, } // Load page 1 (last page, should have only 50 entries) @@ -108,10 +114,13 @@ func TestLoadPage_OutOfBoundsFromIndex(t *testing.T) { ) } - // Build position map for the default sort mode (NameAsc) + // Build position maps for sort modes s.SortIndex = &DirectoryIndex{ Entries: allEntries, - SortOrders: map[string][]int{"name_asc": buildPositionMap(allEntries, SortModeNameAsc)}, + SortOrders: map[string][]int{ + "name_asc": buildPositionMap(allEntries, SortModeNameAsc), + "date_desc": buildPositionMap(allEntries, SortModeDateDesc), + }, } // Requesting page 5 (out of bounds) should return nil @@ -184,10 +193,13 @@ func TestGetEntryByIndex(t *testing.T) { ) } - // Build position map for the default sort mode (NameAsc) + // Build position maps for sort modes s.SortIndex = &DirectoryIndex{ Entries: allEntries, - SortOrders: map[string][]int{"name_asc": buildPositionMap(allEntries, SortModeNameAsc)}, + SortOrders: map[string][]int{ + "name_asc": buildPositionMap(allEntries, SortModeNameAsc), + "date_desc": buildPositionMap(allEntries, SortModeDateDesc), + }, } // Load some pages @@ -222,10 +234,13 @@ func TestGetEntryByIndex_UnloadedPage(t *testing.T) { ) } - // Build position map for the default sort mode (NameAsc) + // Build position maps for sort modes s.SortIndex = &DirectoryIndex{ Entries: allEntries, - SortOrders: map[string][]int{"name_asc": buildPositionMap(allEntries, SortModeNameAsc)}, + SortOrders: map[string][]int{ + "name_asc": buildPositionMap(allEntries, SortModeNameAsc), + "date_desc": buildPositionMap(allEntries, SortModeDateDesc), + }, } // Only load page 0 diff --git a/internal/browser/layout_test.go b/internal/browser/layout_test.go index 82364ca..5bea770 100644 --- a/internal/browser/layout_test.go +++ b/internal/browser/layout_test.go @@ -30,10 +30,13 @@ func makeTestState(t *testing.T, entryCount int, scrollIndex int, visibleCount i ) } - // Build position map for the default sort mode (NameAsc) + // Build position maps for sort modes s.SortIndex = &DirectoryIndex{ Entries: entries, - SortOrders: map[string][]int{"name_asc": buildPositionMap(entries, SortModeNameAsc)}, + SortOrders: map[string][]int{ + "name_asc": buildPositionMap(entries, SortModeNameAsc), + "date_desc": buildPositionMap(entries, SortModeDateDesc), + }, } // Load pages diff --git a/internal/browser/pixel_scroll_test.go b/internal/browser/pixel_scroll_test.go index 256218e..b476bb3 100644 --- a/internal/browser/pixel_scroll_test.go +++ b/internal/browser/pixel_scroll_test.go @@ -146,7 +146,10 @@ func TestPixelScroll_EvictionTriggered(t *testing.T) { } s.SortIndex = &DirectoryIndex{ Entries: entries, - SortOrders: map[string][]int{"name_asc": buildPositionMap(entries, SortModeNameAsc)}, + SortOrders: map[string][]int{ + "name_asc": buildPositionMap(entries, SortModeNameAsc), + "date_desc": buildPositionMap(entries, SortModeDateDesc), + }, } for pageIdx := 0; pageIdx <= 10; pageIdx++ { p := loadPageFromIndex(s, pageIdx) @@ -182,7 +185,10 @@ func TestPixelScroll_PrefetchTriggered(t *testing.T) { } s.SortIndex = &DirectoryIndex{ Entries: entries, - SortOrders: map[string][]int{"name_asc": buildPositionMap(entries, SortModeNameAsc)}, + SortOrders: map[string][]int{ + "name_asc": buildPositionMap(entries, SortModeNameAsc), + "date_desc": buildPositionMap(entries, SortModeDateDesc), + }, } for pageIdx := 3; pageIdx <= 7; pageIdx++ { p := loadPageFromIndex(s, pageIdx) diff --git a/internal/browser/scroll_test.go b/internal/browser/scroll_test.go index 5dd52b7..2419476 100644 --- a/internal/browser/scroll_test.go +++ b/internal/browser/scroll_test.go @@ -81,10 +81,13 @@ func TestScroll_PrefetchTriggered(t *testing.T) { for i := 0; i < 2000; i++ { entries[i] = NewEntry("/test/file.txt", "file.txt", 100, s.TapTimestamp, false) } - // Build position map for the default sort mode (NameAsc) + // Build position maps for sort modes s.SortIndex = &DirectoryIndex{ Entries: entries, - SortOrders: map[string][]int{"name_asc": buildPositionMap(entries, SortModeNameAsc)}, + SortOrders: map[string][]int{ + "name_asc": buildPositionMap(entries, SortModeNameAsc), + "date_desc": buildPositionMap(entries, SortModeDateDesc), + }, } for pageIdx := 3; pageIdx <= 7; pageIdx++ { p := loadPageFromIndex(s, pageIdx) @@ -126,10 +129,13 @@ func TestScroll_EvictionTriggered(t *testing.T) { for i := 0; i < 5000; i++ { entries[i] = NewEntry("/test/file.txt", "file.txt", 100, s.TapTimestamp, false) } - // Build position map for the default sort mode (NameAsc) + // Build position maps for sort modes s.SortIndex = &DirectoryIndex{ Entries: entries, - SortOrders: map[string][]int{"name_asc": buildPositionMap(entries, SortModeNameAsc)}, + SortOrders: map[string][]int{ + "name_asc": buildPositionMap(entries, SortModeNameAsc), + "date_desc": buildPositionMap(entries, SortModeDateDesc), + }, } for pageIdx := 0; pageIdx <= 10; pageIdx++ { p := loadPageFromIndex(s, pageIdx) @@ -238,10 +244,13 @@ func TestScroll_PrefetchTriggeredOnPageBoundary(t *testing.T) { for i := 0; i < 500; i++ { entries[i] = NewEntry("/test/file.txt", "file.txt", 100, s.TapTimestamp, false) } - // Build position map for the default sort mode (NameAsc) + // Build position maps for sort modes s.SortIndex = &DirectoryIndex{ Entries: entries, - SortOrders: map[string][]int{"name_asc": buildPositionMap(entries, SortModeNameAsc)}, + SortOrders: map[string][]int{ + "name_asc": buildPositionMap(entries, SortModeNameAsc), + "date_desc": buildPositionMap(entries, SortModeDateDesc), + }, } s.Pages[0] = loadPageFromIndex(s, 0) diff --git a/internal/browser/types.go b/internal/browser/types.go index 007741c..51f610f 100644 --- a/internal/browser/types.go +++ b/internal/browser/types.go @@ -91,7 +91,7 @@ func NewBrowserState() *BrowserState { Pages: make(map[int]*Page), LetterOffsets: make(map[string]int), SelectedIndex: -1, - SortMode: SortModeNameAsc, // Default sort mode + SortMode: SortModeDateDesc, // Default sort mode (newest first) EntryHeight: 48.0, CurrentPath: "/", }