test_label_dialog.py 2.8 KB
Newer Older
1 2
from qtpy import QtCore
from qtpy import QtWidgets
3

K
Kentaro Wada 已提交
4 5
from labelme.widgets import LabelDialog
from labelme.widgets import LabelQLineEdit
6 7 8 9


def test_LabelQLineEdit(qtbot):
    list_widget = QtWidgets.QListWidget()
K
Kentaro Wada 已提交
10
    list_widget.addItems(["cat", "dog", "person"])
K
Kentaro Wada 已提交
11
    widget = LabelQLineEdit()
12 13 14 15
    widget.setListWidget(list_widget)
    qtbot.addWidget(widget)

    # key press to navigate in label list
K
Kentaro Wada 已提交
16
    item = widget.list_widget.findItems("cat", QtCore.Qt.MatchExactly)[0]
17
    widget.list_widget.setCurrentItem(item)
K
Kentaro Wada 已提交
18
    assert widget.list_widget.currentItem().text() == "cat"
19
    qtbot.keyPress(widget, QtCore.Qt.Key_Down)
K
Kentaro Wada 已提交
20
    assert widget.list_widget.currentItem().text() == "dog"
21 22 23 24 25 26 27 28

    # key press to enter label
    qtbot.keyPress(widget, QtCore.Qt.Key_P)
    qtbot.keyPress(widget, QtCore.Qt.Key_E)
    qtbot.keyPress(widget, QtCore.Qt.Key_R)
    qtbot.keyPress(widget, QtCore.Qt.Key_S)
    qtbot.keyPress(widget, QtCore.Qt.Key_O)
    qtbot.keyPress(widget, QtCore.Qt.Key_N)
K
Kentaro Wada 已提交
29
    assert widget.text() == "person"
K
Kentaro Wada 已提交
30 31 32


def test_LabelDialog_addLabelHistory(qtbot):
K
Kentaro Wada 已提交
33
    labels = ["cat", "dog", "person"]
K
Kentaro Wada 已提交
34
    widget = LabelDialog(labels=labels, sort_labels=True)
K
Kentaro Wada 已提交
35 36
    qtbot.addWidget(widget)

K
Kentaro Wada 已提交
37
    widget.addLabelHistory("bicycle")
K
Kentaro Wada 已提交
38
    assert widget.labelList.count() == 4
K
Kentaro Wada 已提交
39
    widget.addLabelHistory("bicycle")
K
Kentaro Wada 已提交
40 41
    assert widget.labelList.count() == 4
    item = widget.labelList.item(0)
K
Kentaro Wada 已提交
42
    assert item.text() == "bicycle"
K
Kentaro Wada 已提交
43 44 45


def test_LabelDialog_popUp(qtbot):
K
Kentaro Wada 已提交
46
    labels = ["cat", "dog", "person"]
K
Kentaro Wada 已提交
47
    widget = LabelDialog(labels=labels, sort_labels=True)
K
Kentaro Wada 已提交
48 49 50 51 52
    qtbot.addWidget(widget)

    # popUp(text='cat')

    def interact():
K
Kentaro Wada 已提交
53 54 55
        qtbot.keyClick(
            widget.edit, QtCore.Qt.Key_P
        )  # enter 'p' for 'person'  # NOQA
K
Kentaro Wada 已提交
56 57
        qtbot.keyClick(widget.edit, QtCore.Qt.Key_Enter)  # NOQA
        qtbot.keyClick(widget.edit, QtCore.Qt.Key_Enter)  # NOQA
K
Kentaro Wada 已提交
58 59

    QtCore.QTimer.singleShot(500, interact)
K
Kentaro Wada 已提交
60 61
    label, flags, group_id = widget.popUp("cat")
    assert label == "person"
62
    assert flags == {}
K
Kentaro Wada 已提交
63
    assert group_id is None
K
Kentaro Wada 已提交
64 65 66 67

    # popUp()

    def interact():
K
Kentaro Wada 已提交
68 69
        qtbot.keyClick(widget.edit, QtCore.Qt.Key_Enter)  # NOQA
        qtbot.keyClick(widget.edit, QtCore.Qt.Key_Enter)  # NOQA
K
Kentaro Wada 已提交
70 71

    QtCore.QTimer.singleShot(500, interact)
K
Kentaro Wada 已提交
72
    label, flags, group_id = widget.popUp()
K
Kentaro Wada 已提交
73
    assert label == "person"
74
    assert flags == {}
K
Kentaro Wada 已提交
75
    assert group_id is None
K
Kentaro Wada 已提交
76 77 78 79

    # popUp() + key_Up

    def interact():
K
Kentaro Wada 已提交
80 81 82
        qtbot.keyClick(
            widget.edit, QtCore.Qt.Key_Up
        )  # 'person' -> 'dog'  # NOQA
K
Kentaro Wada 已提交
83 84
        qtbot.keyClick(widget.edit, QtCore.Qt.Key_Enter)  # NOQA
        qtbot.keyClick(widget.edit, QtCore.Qt.Key_Enter)  # NOQA
K
Kentaro Wada 已提交
85 86

    QtCore.QTimer.singleShot(500, interact)
K
Kentaro Wada 已提交
87
    label, flags, group_id = widget.popUp()
K
Kentaro Wada 已提交
88
    assert label == "dog"
89
    assert flags == {}
K
Kentaro Wada 已提交
90
    assert group_id is None