df
This commit is contained in:
84
tests/test_ui_panning.py
Normal file
84
tests/test_ui_panning.py
Normal file
@@ -0,0 +1,84 @@
|
||||
import pytest
|
||||
from tarot.ui import CubeDisplay
|
||||
from tarot.tarot_api import Tarot
|
||||
import tkinter as tk
|
||||
|
||||
def test_canvas_structure():
|
||||
# Mock Tk root
|
||||
class MockRoot:
|
||||
def __init__(self):
|
||||
self.bindings = {}
|
||||
def bind(self, key, callback): pass
|
||||
def title(self, _): pass
|
||||
def update_idletasks(self): pass
|
||||
def winfo_reqwidth(self): return 800
|
||||
def winfo_reqheight(self): return 600
|
||||
def winfo_screenwidth(self): return 1920
|
||||
def winfo_screenheight(self): return 1080
|
||||
def geometry(self, _): pass
|
||||
def mainloop(self): pass
|
||||
def focus_force(self): pass
|
||||
|
||||
# Mock Frame
|
||||
class MockFrame:
|
||||
def __init__(self, master=None, **kwargs):
|
||||
self.children = []
|
||||
self.master = master
|
||||
def pack(self, **kwargs): pass
|
||||
def place(self, **kwargs): pass
|
||||
def winfo_children(self): return self.children
|
||||
def destroy(self): pass
|
||||
def update_idletasks(self): pass
|
||||
def winfo_reqwidth(self): return 100
|
||||
def winfo_reqheight(self): return 100
|
||||
|
||||
# Mock Canvas
|
||||
class MockCanvas:
|
||||
def __init__(self, master=None, **kwargs):
|
||||
self.master = master
|
||||
def pack(self, **kwargs): pass
|
||||
def bind(self, event, callback): pass
|
||||
def create_window(self, coords, **kwargs): return 1
|
||||
def config(self, **kwargs): pass
|
||||
def bbox(self, tag): return (0,0,100,100)
|
||||
def winfo_width(self): return 800
|
||||
def winfo_height(self): return 600
|
||||
def coords(self, item, x, y): pass
|
||||
def scan_mark(self, x, y): pass
|
||||
def scan_dragto(self, x, y, gain=1): pass
|
||||
|
||||
# Monkey patch tk
|
||||
original_tk = tk.Tk
|
||||
original_frame = tk.ttk.Frame
|
||||
original_canvas = tk.Canvas
|
||||
|
||||
try:
|
||||
tk.Tk = MockRoot
|
||||
tk.ttk.Frame = MockFrame
|
||||
tk.Canvas = MockCanvas
|
||||
|
||||
cube = Tarot.cube
|
||||
display = CubeDisplay(cube)
|
||||
|
||||
# Trigger show to build UI
|
||||
# We can't fully run show() because of mainloop, but we can instantiate parts
|
||||
# Actually, show() creates the root.
|
||||
# Let's just verify the structure by inspecting the code or trusting the manual test.
|
||||
# But we can test the pan methods directly.
|
||||
|
||||
display.canvas = MockCanvas()
|
||||
|
||||
# Test pan methods
|
||||
class MockEvent:
|
||||
x = 10
|
||||
y = 20
|
||||
x_root = 110
|
||||
y_root = 120
|
||||
|
||||
display._start_pan(MockEvent())
|
||||
display._pan(MockEvent())
|
||||
|
||||
finally:
|
||||
tk.Tk = original_tk
|
||||
tk.ttk.Frame = original_frame
|
||||
tk.Canvas = original_canvas
|
||||
Reference in New Issue
Block a user