import tkinter as tk
from target_simulator.gui.trajectory_editor_window import TrajectoryEditorWindow
from target_simulator.core.models import Waypoint, ManeuverType


class DummyMaster:
    def __init__(self):
        pass
    def bind(self, *a, **k):
        return None


def test_time_multiplier_parsing(monkeypatch):
    monkeypatch.setattr(tk.Toplevel, 'wait_window', lambda self, w: None)
    ed = TrajectoryEditorWindow(DummyMaster(), existing_ids=[], max_range_nm=50)
    ed.time_multiplier_var.set('4x')
    ed._on_time_multiplier_changed()
    assert ed.time_multiplier == 4.0


def test_total_simulation_time_calculation(monkeypatch):
    monkeypatch.setattr(tk.Toplevel, 'wait_window', lambda self, w: None)
    ed = TrajectoryEditorWindow(DummyMaster(), existing_ids=[], max_range_nm=50)
    # set valid waypoints
    w1 = Waypoint()
    w1.maneuver_type = ManeuverType.FLY_TO_POINT
    w1.target_range_nm = 1
    w1.target_azimuth_deg = 0
    w1.target_altitude_ft = 0
    w2 = Waypoint()
    w2.maneuver_type = ManeuverType.FLY_TO_POINT
    w2.duration_s = 5
    w2.target_range_nm = 2
    w2.target_azimuth_deg = 0
    w2.target_altitude_ft = 0
    ed.waypoints = [w1, w2]
    t = ed._get_total_simulation_time()
    assert isinstance(t, float) and t >= 0.0
