test(vt): cover wide-character clear refresh cases
- commit
- af6e54f561dc4255b2e6bca8c0ccb04a28dda52e
- author
- brice · · 2026-08-03 19:45 UTC
- parent
- b1ef94e
- signature
- GPG Verified
CD88F9E564E0102646FB6077A1A07C7C7C3E349D· arch-gpg Verified for the committer email
1 file · +21 -8
M pkg/vt/row_id_test.go +21 -8
| @@ -50,14 +50,27 @@ func TestScreenRowIDsDoNotAppendInteriorOrAlternateScrollHistory(t *testing.T) { | |||
| 50 | 50 | } | |
| 51 | 51 | ||
| 52 | 52 | func TestScreenRowIDRefreshesOnSnapExpandedFullClear(t *testing.T) { | |
| 53 | - | s := NewScreen(2, 1) | |
| 54 | - | s.Write([]byte("界")) | |
| 55 | - | before := s.RowID(0) | |
| 56 | - | ||
| 57 | - | s.clearRow(0, 1, 2) | |
| 58 | - | ||
| 59 | - | if got := s.RowID(0); got == before { | |
| 60 | - | t.Fatalf("row ID = %d after snap-expanded full clear, want a fresh ID", got) | |
| 53 | + | tests := []struct { | |
| 54 | + | name string | |
| 55 | + | x0, x1 int | |
| 56 | + | wantRefresh bool | |
| 57 | + | }{ | |
| 58 | + | {name: "snap-expanded full clear", x0: 1, x1: 4, wantRefresh: true}, | |
| 59 | + | {name: "partial clear", x0: 0, x1: 1, wantRefresh: false}, | |
| 60 | + | } | |
| 61 | + | ||
| 62 | + | for _, tt := range tests { | |
| 63 | + | t.Run(tt.name, func(t *testing.T) { | |
| 64 | + | s := NewScreen(4, 1) | |
| 65 | + | s.Write([]byte("界")) | |
| 66 | + | before := s.RowID(0) | |
| 67 | + | ||
| 68 | + | s.clearRow(0, tt.x0, tt.x1) | |
| 69 | + | ||
| 70 | + | if got := s.RowID(0) != before; got != tt.wantRefresh { | |
| 71 | + | t.Fatalf("row ID refreshed = %t, want %t", got, tt.wantRefresh) | |
| 72 | + | } | |
| 73 | + | }) | |
| 61 | 74 | } | |
| 62 | 75 | } | |
| 63 | 76 | ||
| @@ -50,14 +50,27 @@ func TestScreenRowIDsDoNotAppendInteriorOrAlternateScrollHistory(t *testing.T) { | |||||
| 50 | } | 50 | } | ||
| 51 | 51 | ||||
| 52 | func TestScreenRowIDRefreshesOnSnapExpandedFullClear(t *testing.T) { | 52 | func TestScreenRowIDRefreshesOnSnapExpandedFullClear(t *testing.T) { | ||
| 53 | - | s := NewScreen(2, 1) | 53 | + | tests := []struct { |
| 54 | - | s.Write([]byte("界")) | 54 | + | name string |
| 55 | - | before := s.RowID(0) | 55 | + | x0, x1 int |
| 56 | - | 56 | + | wantRefresh bool | |
| 57 | - | s.clearRow(0, 1, 2) | 57 | + | }{ |
| 58 | - | 58 | + | {name: "snap-expanded full clear", x0: 1, x1: 4, wantRefresh: true}, | |
| 59 | - | if got := s.RowID(0); got == before { | 59 | + | {name: "partial clear", x0: 0, x1: 1, wantRefresh: false}, |
| 60 | - | t.Fatalf("row ID = %d after snap-expanded full clear, want a fresh ID", got) | 60 | + | } |
| 61 | + | ||||
| 62 | + | for _, tt := range tests { | |||
| 63 | + | t.Run(tt.name, func(t *testing.T) { | |||
| 64 | + | s := NewScreen(4, 1) | |||
| 65 | + | s.Write([]byte("界")) | |||
| 66 | + | before := s.RowID(0) | |||
| 67 | + | ||||
| 68 | + | s.clearRow(0, tt.x0, tt.x1) | |||
| 69 | + | ||||
| 70 | + | if got := s.RowID(0) != before; got != tt.wantRefresh { | |||
| 71 | + | t.Fatalf("row ID refreshed = %t, want %t", got, tt.wantRefresh) | |||
| 72 | + | } | |||
| 73 | + | }) | |||
| 61 | } | 74 | } | ||
| 62 | } | 75 | } | ||
| 63 | 76 | ||||