83 lines
3.0 KiB
Python
83 lines
3.0 KiB
Python
|
from unittest import TestCase
|
||
|
|
||
|
from .context import Bit
|
||
|
|
||
|
class TestBit(TestCase):
|
||
|
def setUp(self):
|
||
|
self.true = ["1", 1, True]
|
||
|
self.false = ["0", 0, False]
|
||
|
pass
|
||
|
|
||
|
def test_init(self):
|
||
|
"""
|
||
|
Test creation of bit object
|
||
|
"""
|
||
|
for t in self.true:
|
||
|
self.assertTrue(Bit(t), f"Bit({t}) == True")
|
||
|
for f in self.false:
|
||
|
self.assertFalse(Bit(f), f"Bit({f}) == False")
|
||
|
|
||
|
def test_conversion(self):
|
||
|
"""
|
||
|
Test the conversion methods
|
||
|
"""
|
||
|
self.assertEqual(str(Bit(True)), "1", f'str(Bit(True)) == "1"')
|
||
|
self.assertEqual(str(Bit(False)), "0", f'str(Bit(False)) == "0"')
|
||
|
self.assertEqual(int(Bit(True)), 1, f'int(Bit(True)) == 1')
|
||
|
self.assertEqual(int(Bit(False)), 0, f'int(Bit(False)) == 0')
|
||
|
self.assertEqual(bool(Bit(True)), True, f'bool(Bit(True)) == True')
|
||
|
self.assertEqual(bool(Bit(False)), False, f'bool(Bit(False)) == False')
|
||
|
|
||
|
def test_comparison(self):
|
||
|
"""
|
||
|
Test the comparison operators
|
||
|
"""
|
||
|
self.assertNotEqual(Bit(False), Bit(True), 'Bit(False) != Bit(True)')
|
||
|
self.assertNotEqual(Bit(True), Bit(False), 'Bit(True) != Bit(False)')
|
||
|
self.assertLess(Bit(False), Bit(True), 'Bit(False) < Bit(True)')
|
||
|
self.assertGreater(Bit(True), Bit(False), 'Bit(True) > Bit(False)')
|
||
|
self.assertLessEqual(Bit(False), Bit(True), 'Bit(False) <= Bit(True)')
|
||
|
self.assertLessEqual(Bit(True), Bit(True), 'Bit(True) <= Bit(True)')
|
||
|
self.assertLessEqual(Bit(False), Bit(False),
|
||
|
'Bit(False) <= Bit(False)')
|
||
|
self.assertGreaterEqual(Bit(True), Bit(False),
|
||
|
'Bit(True) >= Bit(False)')
|
||
|
self.assertGreaterEqual(Bit(True), Bit(True),
|
||
|
'Bit(True) >= Bit(True)')
|
||
|
self.assertGreaterEqual(Bit(False), Bit(False),
|
||
|
'Bit(False) >= Bit(False)')
|
||
|
|
||
|
def test_lie(self):
|
||
|
"""
|
||
|
Test the lie function/property
|
||
|
"""
|
||
|
self.assertFalse(Bit(True).lie, "Bit(True).lie == False")
|
||
|
self.assertTrue(Bit(False).lie, "Bit(False).lie == True")
|
||
|
|
||
|
def test_toggle(self):
|
||
|
"""
|
||
|
Test the toggle function
|
||
|
"""
|
||
|
var = Bit(True)
|
||
|
var.toggle()
|
||
|
self.assertFalse(var, "Bit(True).toggle() == False")
|
||
|
var.toggle()
|
||
|
self.assertTrue(var, "Bit(False).toggle() == True")
|
||
|
|
||
|
def test_errors(self):
|
||
|
"""
|
||
|
Test that errors are raised for invalid values
|
||
|
"""
|
||
|
with self.subTest("Raise TypeError"):
|
||
|
self.assertRaises(TypeError, Bit, 12.7)
|
||
|
self.assertRaises(TypeError, Bit, b'xyz')
|
||
|
self.assertRaises(TypeError, Bit, [True, False])
|
||
|
self.assertRaises(TypeError, Bit, [True])
|
||
|
|
||
|
with self.subTest("Raise ValueError"):
|
||
|
self.assertRaises(ValueError, Bit, "2")
|
||
|
self.assertRaises(ValueError, Bit, 2)
|
||
|
self.assertRaises(ValueError, Bit, -1)
|
||
|
self.assertRaises(ValueError, Bit, "-2")
|
||
|
|