Files
2026-01-21 04:46:32 +00:00

45 lines
1.6 KiB
Python

import unittest
from import_utils import import_local
class TestLogicGates(unittest.TestCase):
@classmethod
def setUpClass(cls):
cls.logic_gates = import_local("logic_gates")
def test_mappings_have_unique_keys(self):
module = self.logic_gates
self.assertEqual(len(module.CLASS_MAPPINGS), len(set(module.CLASS_MAPPINGS.keys())))
self.assertEqual(len(module.CLASS_MAPPINGS), len(module.classes))
def test_bitwise_shift_supports_negative_shift(self):
Shift = self.logic_gates.CLASS_MAPPINGS["LogicGateBitwiseShift"]
node = Shift()
self.assertEqual(node.bitwiseShift(8, 1), (16,))
self.assertEqual(node.bitwiseShift(8, -1), (4,))
def test_bitwise_shift_validates_range(self):
Shift = self.logic_gates.CLASS_MAPPINGS["LogicGateBitwiseShift"]
node = Shift()
with self.assertRaises(ValueError):
node.bitwiseShift(1, 33)
def test_compare_gate(self):
Compare = self.logic_gates.CLASS_MAPPINGS["LogicGateCompare"]
node = Compare()
self.assertEqual(node.compareInt(2, 1), (True,))
self.assertEqual(node.compareInt(1, 2), (False,))
def test_memory_node_flip_flop(self):
Memory = self.logic_gates.CLASS_MAPPINGS["MemoryNode"]
node = Memory()
self.assertEqual(node.memory("a", 0), ("a",))
self.assertEqual(node.memory("b", 0), ("a",))
self.assertEqual(node.memory("b", 1), ("b",))
def test_replace_string_regex(self):
Replace = self.logic_gates.CLASS_MAPPINGS["ReplaceString"]
node = Replace()
self.assertEqual(node.replace("hello", "l+", "x"), ("hexo",))