38 lines
1017 B
Go
38 lines
1017 B
Go
package capture
|
|
|
|
import "testing"
|
|
|
|
func TestMappingRoundTrip(t *testing.T) {
|
|
// 模拟 125% 缩放的副屏:窗口左上角在 (-1920,0)
|
|
m := Mapping{OffsetX: -1920, OffsetY: 0, ScaleX: 1.25, ScaleY: 1.25}
|
|
|
|
got := m.ToPhysical(100, 100, 400, 200)
|
|
want := Region{X: -1795, Y: 125, W: 500, H: 250}
|
|
if got != want {
|
|
t.Fatalf("逻辑→物理换算错误,期望 %+v,实际 %+v", want, got)
|
|
}
|
|
|
|
x, y, w, h := m.ToLogical(got)
|
|
if x != 100 || y != 100 || w != 400 || h != 200 {
|
|
t.Fatalf("物理→逻辑逆向换算错误:%v %v %v %v", x, y, w, h)
|
|
}
|
|
}
|
|
|
|
func TestRegionValidAndInset(t *testing.T) {
|
|
if (Region{}).Valid() {
|
|
t.Fatal("零区域不应有效")
|
|
}
|
|
r := Region{X: 10, Y: 20, W: 100, H: 50}
|
|
if !r.Valid() {
|
|
t.Fatal("正常区域应有效")
|
|
}
|
|
in := r.Inset(5)
|
|
if in != (Region{X: 15, Y: 25, W: 90, H: 40}) {
|
|
t.Fatalf("Inset 结果错误: %+v", in)
|
|
}
|
|
// 收缩超过一半时保持原样,避免出现负尺寸
|
|
if r.Inset(60) != r {
|
|
t.Fatal("过度收缩应返回原区域")
|
|
}
|
|
}
|