Source code for tests.lesson_3_4_test
"""
Unit testing lessons 3 and 4.
"""
import unittest
from unittest.mock import MagicMock
from lessons.lesson_3_and_4.main import (
get_val,
NUMBERS,
PINS,
set_pin_val,
set_all_pins
)
[docs]
class Lesson3and4TestCase(unittest.TestCase):
"""
Lessons 3 and 4 test case.
"""
[docs]
def test_set_all_pins_off(self):
"""
Testing set_all_pins function.
Turn off all pins.
:return:
"""
val = (0, 0, 0, 0)
set_all_pins(val)
for p in PINS:
p.value = MagicMock()
p.value.return_value = 0
self.assertEqual(p.value(), 0)
[docs]
def test_set_all_pins_on(self):
"""
Testing set_all_pins function.
Turn on all pins
:return:
"""
val = (1, 1, 1, 1)
set_all_pins(val)
for p in PINS:
p.value = MagicMock()
p.value.return_value = 1
self.assertEqual(p.value(), 1)
[docs]
def test_set_pin_value_off(self):
"""
Pin value should return 0 after it was updated by
set_pin_value function
:return:
"""
led = PINS[0]
set_pin_val(led, 0)
led.value = MagicMock()
led.value.return_value = 0
self.assertEqual(led.value(), 0)
[docs]
def test_set_pin_value_on(self):
"""
Pin value should return 1 after it was updated by
set_pin_value function
:return:
"""
led = PINS[0]
set_pin_val(led, 1)
led.value = MagicMock()
led.value.return_value = 1
self.assertEqual(led.value(), 1)
[docs]
def test_numbers_data_type(self):
"""
Testing numbers dictionary -> datatype should be dict
:return:
"""
self.assertIsInstance(NUMBERS, dict)
[docs]
def test_numbers_0(self):
"""
Testing numbers dictionary -> key 0
:return:
"""
self.assertIsInstance(NUMBERS[0], tuple)
self.assertTupleEqual(NUMBERS[0], (False, False, False, False))
[docs]
def test_numbers_7(self):
"""
Testing numbers dictionary -> key 7
:return:
"""
self.assertIsInstance(NUMBERS[7], tuple)
self.assertTupleEqual(NUMBERS[7], (False, True, True, True))
[docs]
def test_numbers_15(self):
"""
Testing numbers dictionary -> key 15
:return:
"""
self.assertIsInstance(NUMBERS[15], tuple)
self.assertTupleEqual(NUMBERS[15], (True, True, True, True))
[docs]
def test_get_val_return_type(self):
"""
Testing get_val function.
Return type should be int.
:return:
"""
n_val = True
result = get_val(n_val)
expected = type(1)
msg = f'n_val: {n_val}, result: {result}, expected: {expected}'
self.assertIsInstance(result, int, msg)
[docs]
def test_get_val_true(self):
"""
Testing get_val function.
True input should be converted into 1.
:return:
"""
n_val = True
result = get_val(n_val)
expected = 1
msg = f'n_val: {n_val}, result: {result}, expected: {expected}'
self.assertEqual(result, expected, msg)
[docs]
def test_get_val_false(self):
"""
Testing get_val function.
False input should be converted into 0.
:return:
"""
n_val = False
result = get_val(n_val)
expected = 0
msg = f'n_val: {n_val}, result: {result}, expected: {expected}'
self.assertEqual(result, expected, msg)
if __name__ == '__main__':
unittest.main()