1package daemon
2
3import (
4 "fmt"
5 "testing"
6
7 "github.com/stretchr/testify/require"
8
9 "github.com/bnema/vev/internal/domain"
10 "github.com/bnema/vev/internal/domain/layout"
11)
12
13func TestComposeFramePrunesTitleGenerationsAfterLayoutChurn(t *testing.T) {
14 committed := composeCacheInput{}
15 scratch := composeCacheInput{}
16 first := layout.PaneID("pane-1")
17
18 for i := range 8 {
19 id := layout.PaneID(fmt.Sprintf("pane-%d", i+2))
20 state := capturedRenderState{
21 reset: i == 0,
22 layout: capturedTabLayout{area: domain.Rect{Width: 20, Height: 5}, fingerprint: fmt.Sprintf("layout-%d", i), valid: true},
23 panes: []capturedPaneRenderState{
24 {id: first, title: "first", titleGeneration: 1, placement: layout.Placement{ID: first, TitleBar: domain.Rect{Width: 20, Height: 1}, Collapsed: true}},
25 {id: id, title: "replacement", titleGeneration: 1, placement: layout.Placement{ID: id, TitleBar: domain.Rect{Y: 1, Width: 20, Height: 1}, Collapsed: true}},
26 },
27 }
28 out := composeFrame(state, committed, scratch)
29 scratch, committed = committed, out.cache
30
31 require.Equal(t, map[layout.PaneID]uint64{first: 1, id: 1}, committed.titleGenerations)
32 }
33}