Source code for tests.lesson_1_test
"""
Test suite for lesson 1.
"""
import unittest
from unittest.mock import MagicMock
from lessons.lesson_1.main import (
LED,
toggle_is_on,
toggle_led,
check_toggle_val
)
[docs]
class Lesson1TestCase(unittest.TestCase):
"""
Testing led functionality by mocking Pin methods
"""
[docs]
def test_check_toggle_val_0(self):
"""
Pass 0 as a parameter.
No errors.
Returns None.
:return:
"""
self.assertIsNone(check_toggle_val(0))
[docs]
def test_check_toggle_val_1(self):
"""
Pass 1 as a parameter.
No errors.
Returns None.
:return:
"""
self.assertIsNone(check_toggle_val(1))
[docs]
def test_check_toggle_val_type_error(self):
"""
Pass string as a parameter.
Verify exception text.
:return:
"""
val = '0'
err = f"Invalid parameter type: {type(val)}! Only integers allowed."
with self.assertRaises(TypeError) as e:
check_toggle_val(val)
self.assertEqual(str(e.exception), err)
[docs]
def test_toggle_led_off(self):
"""
Turn LED off.
Check function return value is None.
:return:
"""
toggle_led(0)
LED.value = MagicMock()
LED.value(0)
LED.value.return_value = 0
self.assertEqual(LED.value(), 0)
[docs]
def test_toggle_led_on(self):
"""
Turn LED on.
Check function return value is None.
:return:
"""
toggle_led(1)
LED.value = MagicMock()
LED.value(1)
LED.value.return_value = 1
self.assertEqual(LED.value(), 1)
[docs]
def test_toggle_led_error(self):
"""
Pass invalid param value.
Verify error.
:return:
"""
val = 3
err = f"Invalid parameter: {val}! Only 1 and 0 allowed."
with self.assertRaises(ValueError) as e:
toggle_led(3)
self.assertEqual(str(e.exception), err)
[docs]
def test_toggle_is_on_0(self):
"""
Testing toggle_is_on function.
Should return 1 when input param is 0.
:return:
"""
self.assertEqual(toggle_is_on(0), 1)
[docs]
def test_toggle_is_on_1(self):
"""
Testing toggle_is_on function.
Should return 0 when input param is 1.
:return:
"""
self.assertEqual(toggle_is_on(1), 0)
[docs]
def test_toggle_is_on_error(self):
"""
Testing toggle_is_on function.
Should return error when input param is invalid.
:return:
"""
val = 2
err = f"Invalid parameter: {val}! Only 1 and 0 allowed."
with self.assertRaises(ValueError) as e:
toggle_is_on(val)
self.assertEqual(str(e.exception), err)
[docs]
def test_led_off(self):
"""
Mock the led.value() function and return 0 always
:return:
"""
LED.value = MagicMock()
LED.value(0)
LED.value.return_value = 0
self.assertEqual(LED.value(), 0)
if __name__ == '__main__':
unittest.main()