internal/processtest: bug fix: allow some numerical errors for cursor positions

Updates #2475
This commit is contained in:
Hajime Hoshi 2023-09-17 19:48:17 +09:00
parent fd689467c5
commit 07d2706e63

View File

@ -30,6 +30,13 @@ type Game struct {
y int y int
} }
func delta(x0, x1 int) int {
if x0 < x1 {
return x1 - x0
}
return x0 - x1
}
func (g *Game) Update() error { func (g *Game) Update() error {
switch g.count { switch g.count {
case 0: case 0:
@ -41,7 +48,8 @@ func (g *Game) Update() error {
case 60: case 60:
return ebiten.Termination return ebiten.Termination
default: default:
if x, y := ebiten.CursorPosition(); g.x != x || g.y != y { // Allow some numerical errors (±1).
if x, y := ebiten.CursorPosition(); delta(g.x, x) > 1 || delta(g.y, y) > 1 {
return fmt.Errorf("cursor position changed: got: (%d, %d), want: (%d, %d)", x, y, g.x, g.y) return fmt.Errorf("cursor position changed: got: (%d, %d), want: (%d, %d)", x, y, g.x, g.y)
} }
} }
@ -56,7 +64,8 @@ func (g *Game) Draw(screen *ebiten.Image) {
func (g *Game) Layout(width, height int) (int, int) { func (g *Game) Layout(width, height int) (int, int) {
// Using a fixed size matters. // Using a fixed size matters.
// If a window size is changed or fullscreened, the cursor position calculation considers the current screen scale. // If a window size is changed or fullscreened, the cursor position calculation considers the current screen scale, and
// a fixed size changes the scale.
return 320, 240 return 320, 240
} }