1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168
|
# -*- coding: utf-8 -*-
"""
Tests for custom widgets made for Mu.
"""
from unittest import mock
import pytest
import mu.interface.main
import mu.interface.themes
import mu.interface.editor
@pytest.fixture
def microbit():
"""
Fixture for easy setup of microbit device in tests
"""
microbit = mu.logic.Device(
0x0D28,
0x0204,
"COM1",
123456,
"ARM",
"BBC micro:bit",
"microbit",
None,
)
return microbit
@pytest.fixture
def adafruit_feather():
"""
Fixture for easy setup of adafruit feather device in tests
"""
adafruit_feather = mu.logic.Device(
0x239A,
0x800B,
"COM1",
123456,
"ARM",
"CircuitPython",
"circuitpython",
"Adafruit Feather",
)
return adafruit_feather
def test_device_selector_device_changed_to_none():
"""
Check that when device changes to index out of range,
the device selector emits None on the device_changed signal
"""
device_selector = mu.interface.main.DeviceSelector()
device_selector.device_changed = mock.MagicMock()
device_selector._device_changed(-1)
device_selector.device_changed.emit.assert_called_once_with(None)
def test_device_selector_selected_device_w_no_devices():
"""
Test that device_changed signals are emitted, when the user
changes device.
"""
device_selector = mu.interface.main.DeviceSelector()
device_list = []
device_selector.selector.model = mock.MagicMock(return_value=device_list)
device = device_selector.selected_device()
assert device is None
def test_device_selector_device_changed(microbit, adafruit_feather):
"""
Test that device_changed signals are emitted, when the user
changes device.
"""
device_selector = mu.interface.main.DeviceSelector()
device_selector.device_changed = mock.MagicMock()
device_list = [microbit, adafruit_feather]
device_selector.selector.model = mock.MagicMock(return_value=device_list)
device_selector._device_changed(0)
device_selector.device_changed.emit.assert_called_once_with(microbit)
device_selector._device_changed(1)
device_selector.device_changed.emit.assert_called_with(adafruit_feather)
def test_DeviceSelector_device_connected(microbit):
"""
Test that _update_view is called when a device connects
"""
device_selector = mu.interface.main.DeviceSelector()
device_selector._update_view = mock.MagicMock()
device_selector.device_connected(microbit)
device_selector._update_view.assert_called_once_with()
def test_DeviceSelector_device_disconnected(microbit):
"""
Test that _update_view is called when a device disconnects
"""
device_selector = mu.interface.main.DeviceSelector()
device_selector._update_view = mock.MagicMock()
device_selector.device_disconnected(microbit)
device_selector._update_view.assert_called_once_with()
def test_DeviceSelector_update_view_selector_hidden_on_1_device():
"""
Test that _update_view hides the combobox selector when only
one device connected
"""
device_selector = mu.interface.main.DeviceSelector()
model = mock.MagicMock()
model.data = mock.MagicMock(return_value="Tooltip text")
device_selector.selector.model = mock.MagicMock(return_value=model)
device_selector.selector.count = mock.MagicMock(return_value=1)
device_selector._update_view()
assert device_selector.selector.isHidden()
def test_DeviceSelector_update_view_selector_shown_on_2_devices():
"""
Test that _update_view displays the combobox selector when two
devices connected
"""
device_selector = mu.interface.main.DeviceSelector(show_label=True)
model = mock.MagicMock()
model.data = mock.MagicMock(return_value="Tooltip text")
device_selector.selector.model = mock.MagicMock(return_value=model)
device_selector.selector.count = mock.MagicMock(return_value=2)
device_selector._update_view()
assert not device_selector.selector.isHidden()
assert device_selector.status_label.isHidden()
def test_DeviceSelector_update_view_check_disconnected_icon():
"""
Test that _update_view displays the disconnected icon when
no device connected
"""
device_selector = mu.interface.main.DeviceSelector()
device_selector.selector.count = mock.MagicMock(return_value=0)
device_selector.connection_status.setPixmap = mock.MagicMock()
device_selector._update_view()
device_selector.connection_status.setPixmap.assert_called_once_with(
device_selector.disconnected_icon
)
def test_DeviceSelector_update_view_check_connected_icon():
"""
Test that _update_view displays the connected icon when
one device connected
"""
device_selector = mu.interface.main.DeviceSelector()
model = mock.MagicMock()
model.data = mock.MagicMock(return_value="Tooltip text")
device_selector.selector.model = mock.MagicMock(return_value=model)
device_selector.selector.count = mock.MagicMock(return_value=1)
device_selector.connection_status.setPixmap = mock.MagicMock()
device_selector._update_view()
device_selector.connection_status.setPixmap.assert_called_once_with(
device_selector.connected_icon
)
|