68 lines
1.9 KiB
Python
68 lines
1.9 KiB
Python
import pytest
|
|
import tkinter as tk
|
|
from target_simulator.gui.target_list_frame import TargetListFrame
|
|
|
|
|
|
def test_target_list_frame_init():
|
|
root = tk.Tk()
|
|
frame = TargetListFrame(root)
|
|
assert frame is not None
|
|
root.destroy()
|
|
|
|
|
|
def test_get_targets_returns_cache():
|
|
root = tk.Tk()
|
|
frame = TargetListFrame(root)
|
|
frame.targets_cache = ["dummy_target"]
|
|
assert frame.get_targets() == ["dummy_target"]
|
|
root.destroy()
|
|
|
|
|
|
def test_update_target_list_updates_cache():
|
|
root = tk.Tk()
|
|
frame = TargetListFrame(root)
|
|
from target_simulator.core.models import Target
|
|
t = Target(target_id=1)
|
|
t.current_range_nm = 10.0
|
|
t.current_azimuth_deg = 45.0
|
|
t.current_velocity_fps = 100.0
|
|
t.current_heading_deg = 90.0
|
|
t.current_altitude_ft = 5000.0
|
|
frame.update_target_list([t])
|
|
assert frame.targets_cache == [t]
|
|
root.destroy()
|
|
|
|
|
|
def test_targets_changed_callback_called():
|
|
root = tk.Tk()
|
|
called = {}
|
|
def cb(targets):
|
|
called["ok"] = True
|
|
frame = TargetListFrame(root, targets_changed_callback=cb)
|
|
frame.targets_cache = []
|
|
from target_simulator.core.models import Target
|
|
t = Target(target_id=2)
|
|
t.current_range_nm = 20.0
|
|
t.current_azimuth_deg = 90.0
|
|
t.current_velocity_fps = 200.0
|
|
t.current_heading_deg = 180.0
|
|
t.current_altitude_ft = 10000.0
|
|
frame.update_target_list([t])
|
|
if frame.targets_changed_callback:
|
|
frame.targets_changed_callback(frame.targets_cache)
|
|
assert called.get("ok")
|
|
root.destroy()
|
|
|
|
|
|
def test_on_remove_click_no_selection(monkeypatch):
|
|
root = tk.Tk()
|
|
frame = TargetListFrame(root)
|
|
frame.tree.focus = lambda: ""
|
|
called = {}
|
|
def warn(title, msg, parent=None):
|
|
called["warn"] = True
|
|
monkeypatch.setattr("tkinter.messagebox.showwarning", warn)
|
|
frame._on_remove_click()
|
|
assert called.get("warn")
|
|
root.destroy()
|