test_label_dialog.py 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  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 = widget.popUp("cat")
  52. assert label == "person"
  53. assert flags == {}
  54. assert group_id is None
  55. # popUp()
  56. def interact():
  57. qtbot.keyClick(widget.edit, QtCore.Qt.Key_Enter) # NOQA
  58. qtbot.keyClick(widget.edit, QtCore.Qt.Key_Enter) # NOQA
  59. QtCore.QTimer.singleShot(500, interact)
  60. label, flags, group_id = widget.popUp()
  61. assert label == "person"
  62. assert flags == {}
  63. assert group_id is None
  64. # popUp() + key_Up
  65. def interact():
  66. qtbot.keyClick(
  67. widget.edit, QtCore.Qt.Key_Up
  68. ) # 'person' -> 'dog' # NOQA
  69. qtbot.keyClick(widget.edit, QtCore.Qt.Key_Enter) # NOQA
  70. qtbot.keyClick(widget.edit, QtCore.Qt.Key_Enter) # NOQA
  71. QtCore.QTimer.singleShot(500, interact)
  72. label, flags, group_id = widget.popUp()
  73. assert label == "dog"
  74. assert flags == {}
  75. assert group_id is None