Posters: re-place after a resize, measure cell size without padding, log failed posters
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -279,3 +279,51 @@ func TestCropToBox(t *testing.T) {
|
||||
t.Errorf("offset image: %v", got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestInvalidateReplacesPlacements(t *testing.T) {
|
||||
rec := &recorder{}
|
||||
k := newKittyGraphics(rec.write)
|
||||
k.place(3, 17, 13)
|
||||
k.place(4, 10, 8)
|
||||
rec.cmds = nil
|
||||
k.invalidate()
|
||||
if len(rec.cmds) != 2 || !strings.Contains(strings.Join(rec.cmds, ""), "a=d,d=i,i=3") || !strings.Contains(strings.Join(rec.cmds, ""), "a=d,d=i,i=4") {
|
||||
t.Fatalf("invalidate sent %q", rec.cmds)
|
||||
}
|
||||
// The same size is placed again afterwards, since the placement is gone.
|
||||
rec.cmds = nil
|
||||
k.place(3, 17, 13)
|
||||
if len(rec.cmds) != 1 || !strings.Contains(rec.cmds[0], "a=p,U=1,i=3,c=17,r=13") {
|
||||
t.Errorf("after invalidate: %q", rec.cmds)
|
||||
}
|
||||
}
|
||||
|
||||
func TestCellAspectFromWindow(t *testing.T) {
|
||||
// 140×50 cells of 9×20 px plus 4 and 11 px of padding: plain division
|
||||
// would say 1264/140=9.03 and 1011/50=20.22 (aspect 2.24), the real shape is 20/9.
|
||||
if got := cellAspectFromWindow(140, 50, 140*9+4, 50*20+11); math.Abs(got-20.0/9) > 1e-9 {
|
||||
t.Errorf("aspect = %v, want %v", got, 20.0/9)
|
||||
}
|
||||
// Padding that grows with the window does not move it.
|
||||
for _, pad := range []int{0, 3, 8} {
|
||||
if got := cellAspectFromWindow(100, 30, 100*10+pad, 30*21+pad); math.Abs(got-2.1) > 1e-9 {
|
||||
t.Errorf("padding %d: aspect = %v", pad, got)
|
||||
}
|
||||
}
|
||||
for _, bad := range [][4]int{{0, 10, 100, 100}, {10, 0, 100, 100}, {10, 10, 0, 100}, {10, 10, 100, 0}, {100, 100, 50, 50}} {
|
||||
if got := cellAspectFromWindow(bad[0], bad[1], bad[2], bad[3]); got != 2 {
|
||||
t.Errorf("%v: aspect = %v, want the default 2", bad, got)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestPosterSource(t *testing.T) {
|
||||
for in, want := range map[string]string{
|
||||
"https://artworks.thetvdb.com/banners/posters/1-1.jpg": "artworks.thetvdb.com/banners/posters/1-1.jpg",
|
||||
"http://radarr:7878|/MediaCover/1/poster.jpg?lastWrite=5": "/MediaCover/1/poster.jpg",
|
||||
} {
|
||||
if got := posterSource(in); got != want {
|
||||
t.Errorf("posterSource(%q) = %q, want %q", in, got, want)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user