Skip to content

Commit 98e34c8

Browse files
committed
I04_1-156: added unit tests
1 parent 75cb752 commit 98e34c8

File tree

5 files changed

+167
-1
lines changed

5 files changed

+167
-1
lines changed

dls_util/image/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
from .color import Color
22
from .image import Image
3-
from .overlay import Overlay
3+
from .overlay import Overlay, TextOverlay
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
import unittest
2+
from mock import MagicMock
3+
import time
4+
5+
from dls_barcode.camera.plate_overlay import PlateOverlay
6+
7+
8+
class TestPlateOverlay(unittest.TestCase):
9+
def setUp(self):
10+
self._plate = MagicMock()
11+
self._options = MagicMock()
12+
self._image = MagicMock()
13+
14+
def test_overlay_has_default_lifetime(self):
15+
# Arrange
16+
expected_lifetime = 2
17+
18+
# Act
19+
overlay = PlateOverlay(self._plate, self._options)
20+
21+
# Assert
22+
time.sleep(expected_lifetime/2)
23+
self.assertFalse(overlay.has_expired())
24+
time.sleep(expected_lifetime / 2)
25+
self.assertTrue(overlay.has_expired())
26+
27+
def test_lifetime_can_be_initialised(self):
28+
# Arrange
29+
lifetime = 0.2
30+
31+
# Act
32+
overlay = PlateOverlay(self._plate, self._options, lifetime)
33+
34+
# Assert
35+
time.sleep(lifetime)
36+
self.assertTrue(overlay.has_expired())
37+
38+
def test_expired_overlay_is_not_drawn_on_image(self):
39+
# Arrange
40+
lifetime = 0.001
41+
overlay = PlateOverlay(self._plate, self._options, lifetime)
42+
43+
# Act
44+
time.sleep(lifetime)
45+
overlay.draw_on_image(self._image)
46+
47+
# Assert
48+
self._plate.draw_plate.assert_not_called()
49+
self._plate.draw_pins.assert_not_called()
50+
51+
def test_not_expired_plate_is_drawn_on_image(self):
52+
# Arrange
53+
lifetime = 1000
54+
overlay = PlateOverlay(self._plate, self._options, lifetime)
55+
56+
# Act
57+
overlay.draw_on_image(self._image)
58+
59+
# Assert
60+
self._plate.draw_plate.assert_called_once()
61+
self._plate.draw_pins.assert_called_once()
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import unittest
2+
from mock import MagicMock
3+
import time
4+
5+
from dls_util.image import TextOverlay
6+
7+
8+
class TestTextOverlay(unittest.TestCase):
9+
def setUp(self):
10+
self._color = MagicMock()
11+
12+
def test_overlay_has_default_lifetime(self):
13+
# Arrange
14+
expected_lifetime = 2
15+
16+
# Act
17+
overlay = TextOverlay("blah", self._color)
18+
19+
# Assert
20+
time.sleep(expected_lifetime/2)
21+
self.assertFalse(overlay.has_expired())
22+
time.sleep(expected_lifetime / 2)
23+
self.assertTrue(overlay.has_expired())
24+
25+
def test_lifetime_can_be_initialised(self):
26+
# Arrange
27+
lifetime = 0.2
28+
29+
# Act
30+
overlay = TextOverlay("blah", self._color, lifetime)
31+
32+
# Assert
33+
time.sleep(lifetime)
34+
self.assertTrue(overlay.has_expired())
35+
36+
# Can't test the drawing method because overlay is passed an opencv image.
37+
# It should be refactored to get an Image object instead of creating it itself
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import unittest
2+
import time
3+
4+
from dls_util.message import Message, MessageType
5+
6+
7+
class TestMessage(unittest.TestCase):
8+
def test_message_has_default_lifetime(self):
9+
# Arrange
10+
expected_lifetime = 2
11+
12+
# Act
13+
msg = Message(MessageType.INFO, "hello")
14+
15+
# Assert
16+
time.sleep(expected_lifetime/2)
17+
self.assertFalse(msg.has_expired())
18+
time.sleep(expected_lifetime / 2)
19+
self.assertTrue(msg.has_expired())
20+
21+
def test_lifetime_can_be_initialised(self):
22+
# Arrange
23+
lifetime = 0.1
24+
25+
# Act
26+
msg = Message(MessageType.INFO, "hello", lifetime)
27+
28+
# Assert
29+
time.sleep(lifetime)
30+
self.assertTrue(msg.has_expired())
31+
32+
def test_parameters_initalised_correctly(self):
33+
# Arrange
34+
type = MessageType.WARNING
35+
content = "hello there"
36+
37+
# Act
38+
msg = Message(type, content)
39+
40+
# Assert
41+
self.assertEqual(msg.type(), type)
42+
self.assertEqual(msg.content(), content)
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import unittest
2+
import time
3+
from dls_util.object_with_lifetime import ObjectWithLifetime
4+
5+
6+
class TestObjectWithLifetime(unittest.TestCase):
7+
def test_object_with_life_less_than_lifetime_has_not_expired(self):
8+
# Arrange
9+
lifetime = 0.5
10+
11+
# Act
12+
obj = ObjectWithLifetime(lifetime)
13+
14+
# Assert
15+
self.assertFalse(obj.has_expired())
16+
17+
def test_object_with_life_greater_than_lifetime_has_expired(self):
18+
# Arrange
19+
lifetime = 0.5
20+
21+
# Act
22+
obj = ObjectWithLifetime(lifetime)
23+
time.sleep(lifetime)
24+
25+
# Assert
26+
self.assertTrue(obj.has_expired())

0 commit comments

Comments
 (0)