Files
urh/tests/test_protocol_label_dialog.py
Johannes Pohl 353868768d UI Upgrade of message type configuration (#532)
* first step of message type ui upgrade

* remove preselected index from ProtocolLabelDialog constructor

* remove selection changed for label

* move edit message type button to table

* remove delete button, functionality is now in table

* improve message type context menu

* add color selection to protocol label table

* allowing hiding of message types

* sync selection between message type table and message table

* make label visibility configurable in table

* enable deletion of labels in table

* update unittests

* fix selection bug

* update coveragerc

* support copy of labels to other message type

* avoid creating new object when reading message types from project

* fix test

* update changelog

* Make configuration button transparent

* selected label bold

* resize headers

* add show/hide all action

* same behaviour for label edits in tables

* adapt unittest

* cleanup on_table_selection_timer_timeout + update selection ui

* make current label and message type bold + add message type icon

* adapt unittest

* draw number of configured rules

* increase timeout for ci

* show num active rules only

* minor fixes

* increase timeout for ci

* sync show state

* disable grid

* close all -> close all files

* add close project action

* fix close project action

* clear message types on new project

* update changelog and project dialog buttons

* adapt unittests

* adapt unittests

* remove live update of qapp style to prevent segfault

* improve icon
2018-09-27 18:06:22 +02:00

81 lines
3.6 KiB
Python

from PyQt5.QtTest import QTest
from PyQt5.QtWidgets import QApplication
from tests.QtTestCase import QtTestCase
from tests.utils_testing import get_path_for_data_file
from urh.controller.dialogs.ProtocolLabelDialog import ProtocolLabelDialog
class TestProtocolLabelDialog(QtTestCase):
def setUp(self):
super().setUp()
QApplication.instance().processEvents()
QTest.qWait(self.WAIT_TIMEOUT_BEFORE_NEW)
self.form.add_protocol_file(get_path_for_data_file("protocol.proto.xml"))
self.cframe = self.form.compare_frame_controller
self.cframe.add_protocol_label(9, 19, 0, 0, edit_label_name=False) # equals 10-20 in view
self.cframe.add_protocol_label(39, 54, 1, 0, edit_label_name=False) # equals 40-55 in view
self.assertEqual(len(self.cframe.proto_analyzer.protocol_labels), 2)
self.dialog = ProtocolLabelDialog(message=self.cframe.proto_analyzer.messages[0],
viewtype=0, parent=self.cframe)
if self.SHOW:
self.dialog.show()
def test_protocol_label_dialog(self):
self.assertIn(self.cframe.proto_analyzer.default_message_type.name, self.dialog.windowTitle())
table_model = self.dialog.ui.tblViewProtoLabels.model()
self.assertEqual(table_model.rowCount(), 2)
label = table_model.message_type[0]
table_model.setData(table_model.index(0, 0), "testname")
self.assertEqual(label.name, "testname")
table_model.setData(table_model.index(0, 1), 15)
self.assertEqual(label.start, 15 - 1)
self.dialog.ui.tblViewProtoLabels.openPersistentEditor(table_model.index(0, 1))
table_model.setData(table_model.index(0, 2), 30)
self.assertEqual(label.end, 30)
self.dialog.ui.tblViewProtoLabels.openPersistentEditor(table_model.index(0, 2))
table_model.setData(table_model.index(0, 3), 4)
self.assertEqual(label.color_index, 4)
self.dialog.ui.tblViewProtoLabels.openPersistentEditor(table_model.index(0, 3))
table_model.setData(table_model.index(0, 4), False)
self.assertEqual(label.apply_decoding, False)
self.dialog.ui.tblViewProtoLabels.openPersistentEditor(table_model.index(0, 4))
def test_change_view_type(self):
table_model = self.dialog.ui.tblViewProtoLabels.model()
# Bit View
self.assertEqual(table_model.data(table_model.index(0, 1)), 10)
self.assertEqual(table_model.data(table_model.index(0, 2)), 20)
self.assertEqual(table_model.data(table_model.index(1, 1)), 40)
self.assertEqual(table_model.data(table_model.index(1, 2)), 55)
self.dialog.ui.cbProtoView.setCurrentIndex(1)
self.assertEqual(table_model.data(table_model.index(0, 1)), 4)
self.assertEqual(table_model.data(table_model.index(0, 2)), 6)
self.assertEqual(table_model.data(table_model.index(1, 1)), 12)
self.assertEqual(table_model.data(table_model.index(1, 2)), 15)
label = table_model.message_type[0]
table_model.setData(table_model.index(0, 1), 2)
table_model.setData(table_model.index(0, 2), 5)
self.assertEqual(label.start, 4)
self.assertEqual(label.end, 17)
def test_remove_labels(self):
self.dialog.ui.tblViewProtoLabels.selectAll()
self.assertEqual(self.dialog.ui.tblViewProtoLabels.model().rowCount(), 2)
remove_action = self.dialog.ui.tblViewProtoLabels.create_context_menu().actions()[0]
remove_action.trigger()
self.assertEqual(self.dialog.ui.tblViewProtoLabels.model().rowCount(), 0)
self.assertEqual(len(self.dialog.ui.tblViewProtoLabels.create_context_menu().actions()), 0)