| require 'test/unit' | |
| require 'fast/FastDebugger' | |
| require 'ruby-debug-base' | |
| module XoredDebugger | |
| class FastDebuggerTest < Test::Unit::TestCase | |
| include DebugEventHandler | |
| def test_catch | |
| @break_called = false | |
| @line_called = false | |
| @catch_called = false | |
| debugger = FastDebugger.new | |
| debugger.handler = self | |
| debugger.start | |
| bp_manager = debugger.breakpoint_manager | |
| bp_manager.add_exception_breakpoint('RuntimeError', true) | |
| begin | |
| raise RuntimeError, 'Shoud be catched' | |
| rescue RuntimeError | |
| end | |
| debugger.terminate | |
| assert(!@break_called) | |
| assert(@line_called) | |
| assert(@catch_called) | |
| end | |
| def test_not_catch | |
| @break_called = false | |
| @line_called = false | |
| @catch_called = false | |
| debugger = FastDebugger.new | |
| debugger.handler = self | |
| debugger.start | |
| bp_manager = debugger.breakpoint_manager | |
| bp_manager.add_exception_breakpoint('ScriptError', true) | |
| begin | |
| raise RuntimeError, 'Shoud not be catched' | |
| rescue RuntimeError | |
| end | |
| debugger.terminate | |
| assert(!@break_called) | |
| assert(!@line_called) | |
| assert(!@catch_called) | |
| end | |
| def test_line | |
| @break_called = false | |
| @line_called = false | |
| @catch_called = false | |
| debugger = FastDebugger.new | |
| debugger.handler = self | |
| debugger.start | |
| bp_manager = debugger.breakpoint_manager | |
| bp_manager.add_line_breakpoint(__FILE__, __LINE__ + 1, true) | |
| a = 0 # At this line breakpoint handler will be called | |
| debugger.terminate | |
| assert(@break_called) | |
| assert(@line_called) | |
| assert(!@catch_called) | |
| end | |
| def at_breakpoint(context) | |
| @break_called = true | |
| end | |
| def at_catchpoint(context, excpt) | |
| @catch_called = true | |
| end | |
| def at_line(context, file, line) | |
| @line_called = true | |
| end | |
| end | |
| end |