test_label_dialog.py 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. import pytest
  2. from qtpy import QtCore
  3. from qtpy import QtWidgets
  4. from labelme.widgets import LabelDialog
  5. from labelme.widgets import LabelQLineEdit
  6. @pytest.mark.gui
  7. def test_LabelQLineEdit(qtbot):
  8. list_widget = QtWidgets.QListWidget()
  9. list_widget.addItems(["cat", "dog", "person"])
  10. widget = LabelQLineEdit()
  11. widget.setListWidget(list_widget)
  12. qtbot.addWidget(widget)
  13. # key press to navigate in label list
  14. item = widget.list_widget.findItems("cat", QtCore.Qt.MatchExactly)[0]
  15. widget.list_widget.setCurrentItem(item)
  16. assert widget.list_widget.currentItem().text() == "cat"
  17. qtbot.keyPress(widget, QtCore.Qt.Key_Down)
  18. assert widget.list_widget.currentItem().text() == "dog"
  19. # key press to enter label
  20. qtbot.keyPress(widget, QtCore.Qt.Key_P)
  21. qtbot.keyPress(widget, QtCore.Qt.Key_E)
  22. qtbot.keyPress(widget, QtCore.Qt.Key_R)
  23. qtbot.keyPress(widget, QtCore.Qt.Key_S)
  24. qtbot.keyPress(widget, QtCore.Qt.Key_O)
  25. qtbot.keyPress(widget, QtCore.Qt.Key_N)
  26. assert widget.text() == "person"
  27. @pytest.mark.gui
  28. def test_LabelDialog_addLabelHistory(qtbot):
  29. labels = ["cat", "dog", "person"]
  30. widget = LabelDialog(labels=labels, sort_labels=True)
  31. qtbot.addWidget(widget)
  32. widget.addLabelHistory("bicycle")
  33. assert widget.labelList.count() == 4
  34. widget.addLabelHistory("bicycle")
  35. assert widget.labelList.count() == 4
  36. item = widget.labelList.item(0)
  37. assert item.text() == "bicycle"
  38. @pytest.mark.gui
  39. def test_LabelDialog_popUp(qtbot):
  40. labels = ["cat", "dog", "person"]
  41. widget = LabelDialog(labels=labels, sort_labels=True)
  42. qtbot.addWidget(widget)
  43. # popUp(text='cat')
  44. def interact():
  45. qtbot.keyClick(
  46. widget.edit, QtCore.Qt.Key_P
  47. ) # enter 'p' for 'person' # NOQA
  48. qtbot.keyClick(widget.edit, QtCore.Qt.Key_Enter) # NOQA
  49. qtbot.keyClick(widget.edit, QtCore.Qt.Key_Enter) # NOQA
  50. QtCore.QTimer.singleShot(500, interact)
  51. label, flags, group_id, description = widget.popUp("cat")
  52. assert label == "person"
  53. assert flags == {}
  54. assert group_id is None
  55. assert description == ""
  56. # popUp()
  57. def interact():
  58. qtbot.keyClick(widget.edit, QtCore.Qt.Key_Enter) # NOQA
  59. qtbot.keyClick(widget.edit, QtCore.Qt.Key_Enter) # NOQA
  60. QtCore.QTimer.singleShot(500, interact)
  61. label, flags, group_id, description = widget.popUp()
  62. assert label == "person"
  63. assert flags == {}
  64. assert group_id is None
  65. assert description == ""
  66. # popUp() + key_Up
  67. def interact():
  68. qtbot.keyClick(
  69. widget.edit, QtCore.Qt.Key_Up
  70. ) # 'person' -> 'dog' # NOQA
  71. qtbot.keyClick(widget.edit, QtCore.Qt.Key_Enter) # NOQA
  72. qtbot.keyClick(widget.edit, QtCore.Qt.Key_Enter) # NOQA
  73. QtCore.QTimer.singleShot(500, interact)
  74. label, flags, group_id, description = widget.popUp()
  75. assert label == "dog"
  76. assert flags == {}
  77. assert group_id is None
  78. assert description == ""