From 64fdf6c6799724c7ac90acbcfdca6b0fa4f7db5c Mon Sep 17 00:00:00 2001
From: Oscar Gustafsson <oscar.gustafsson@gmail.com>
Date: Wed, 25 Jan 2023 13:55:57 +0100
Subject: [PATCH] Even more test coverage

---
 test/test_gui.py           | 52 +++++++++++++++++++++++++++++++++++++-
 test/test_gui/twotapfir.py |  2 +-
 2 files changed, 52 insertions(+), 2 deletions(-)

diff --git a/test/test_gui.py b/test/test_gui.py
index 8f7f3989..f0b582d3 100644
--- a/test/test_gui.py
+++ b/test/test_gui.py
@@ -1,3 +1,6 @@
+from qtpy import QtCore
+
+
 import pytest
 
 try:
@@ -35,7 +38,6 @@ def test_flip(qtbot, datadir):
     assert not dragbutton.is_flipped()
     dragbutton._flip()
     assert dragbutton.is_flipped()
-
     widget.exit_app()
 
 
@@ -52,3 +54,51 @@ def test_sfg_invalidated_by_remove_of_operation(qtbot, datadir):
     assert ops_before_remove -1 == len(widget.operationDragDict)
 
     widget.exit_app()
+
+
+def test_select_operation(qtbot, datadir):
+    widget = GUI.MainWindow()
+    qtbot.addWidget(widget)
+    widget._load_from_file(datadir.join('twotapfir.py'))
+    sfg = widget.sfg_dict['twotapfir']
+    op = sfg.find_by_name("cmul2")[0]
+    dragbutton = widget.operationDragDict[op]
+    assert not dragbutton.pressed
+    assert not widget.pressed_operations
+
+    # Click
+    qtbot.mouseClick(dragbutton, QtCore.Qt.MouseButton.LeftButton)
+    assert dragbutton.pressed
+    assert len(widget.pressed_operations) == 1
+
+    # Click again, should unselect
+    qtbot.mouseClick(dragbutton, QtCore.Qt.MouseButton.LeftButton)
+    # Currently failing
+    # assert not dragbutton.pressed
+    # assert not widget.pressed_operations
+
+    # Select another operation
+    op2 = sfg.find_by_name("add1")[0]
+    dragbutton2 = widget.operationDragDict[op2]
+    assert not dragbutton2.pressed
+
+    # Click
+    qtbot.mouseClick(dragbutton2, QtCore.Qt.MouseButton.LeftButton)
+    assert dragbutton2.pressed
+    # Unselect previous
+    assert not dragbutton.pressed
+    assert len(widget.pressed_operations) == 1
+
+    # Control-click first
+    qtbot.mouseClick(dragbutton, QtCore.Qt.MouseButton.LeftButton, QtCore.Qt.KeyboardModifier.ControlModifier)
+    assert dragbutton2.pressed
+    assert dragbutton.pressed
+    assert len(widget.pressed_operations) == 2
+
+    # Control-click second
+    qtbot.mouseClick(dragbutton2, QtCore.Qt.MouseButton.LeftButton, QtCore.Qt.KeyboardModifier.ControlModifier)
+    assert not dragbutton2.pressed
+    assert dragbutton.pressed
+    assert len(widget.pressed_operations) == 1
+
+    widget.exit_app()
diff --git a/test/test_gui/twotapfir.py b/test/test_gui/twotapfir.py
index 97d76c32..15660359 100644
--- a/test/test_gui/twotapfir.py
+++ b/test/test_gui/twotapfir.py
@@ -14,7 +14,7 @@ out1 = Output(name="")
 # Operations:
 t1 = Delay(initial_value=0, name="")
 cmul1 = ConstantMultiplication(value=0.5, name="cmul2", latency_offsets={'in0': None, 'out0': None})
-add1 = Addition(name="", latency_offsets={'in0': None, 'in1': None, 'out0': None})
+add1 = Addition(name="add1", latency_offsets={'in0': None, 'in1': None, 'out0': None})
 cmul2 = ConstantMultiplication(value=0.5, name="cmul", latency_offsets={'in0': None, 'out0': None})
 
 # Signals:
-- 
GitLab