diff --git a/test/test_core/test_breakpoint.py b/test/test_core/test_breakpoint.py
new file mode 100644
index 0000000000000000000000000000000000000000..f361e62f7a1b80df928852616e83db9ba1bdca9d
--- /dev/null
+++ b/test/test_core/test_breakpoint.py
@@ -0,0 +1,74 @@
+from simudator.core.breakpoint_state import StateBreakpoint
+from simudator.core.breakpoint_memory import MemoryBreakpoint
+from simudator.core.breakpoint_lambda import LambdaBreakpoint
+from simudator.core.module import Module
+from simudator.core.modules.memory import Memory
+from simudator.core.processor import Processor
+from simudator.core.signal import Signal
+
+class DummyModule(Module):
+    def __init__(self, name: str = "") -> None:
+        super().__init__(name)
+        self.value = 0
+
+    def get_state(self) -> dict:
+        state = super().get_state()
+        state["value"] = self.value
+        return state
+
+def test_state_breakpoint():
+    m = DummyModule()
+    bp = StateBreakpoint(m, "value", 10)
+
+    assert bp.is_break() == False
+
+    m.value = 10
+    assert bp.is_break() == True
+
+    m.value = "-"
+    assert bp.is_break() == False
+
+def test_memory_breakpoint():
+    cpu = Processor()
+    in_s = Signal(cpu)
+    out_s = Signal(cpu)
+    ctrl_s = Signal(cpu)
+    adr_s = Signal(cpu)
+    mem = Memory(in_s, out_s, ctrl_s, adr_s, 8)
+    cpu.add_module(mem)
+
+    # Default memory value is not -2 => should not break
+    bp = MemoryBreakpoint(mem, 3, -2)
+    assert bp.is_break() == False
+
+    # Write the relevant memory address to some other value 
+    # => should not break
+    in_s.update_value("a")
+    adr_s.update_value(3)
+    ctrl_s.update_value(True)
+    cpu.do_tick()   # Address the memory
+    cpu.do_tick()   # Write to the memory
+    assert bp.is_break() == False
+
+    # Write the breakpoint value to the relevant address => should break 
+    in_s.update_value(-2)
+    cpu.do_tick()
+    assert bp.is_break() == True
+
+    # Writing to some other address should not affect
+    in_s.update_value(-2)
+    adr_s.update_value(7)
+    cpu.do_tick()   # Address the memory
+    cpu.do_tick()   # Write to the memory
+    assert bp.is_break() == True
+
+    # Writing some other value to the relevant address => should no longer break
+    adr_s.update_value(3)
+    in_s.update_value(4.6)
+    cpu.do_tick()   # Address the memory
+    cpu.do_tick()   # Write to the memory
+    assert bp.is_break() == False
+
+def test_lambda_breakpoint():
+    pass
+