| <!DOCTYPE html> |
| <html> |
| <head> |
| <script src="../../http/tests/inspector/resources/inspector-test.js"></script> |
| <script src="resources/breakpoint-options-utilities.js"></script> |
| <script> |
| function triggerSymbolicBreakpoint() { |
| [1, 2, 3].reverse(); |
| TestPage.dispatchEventToFrontend("TestPage-SymbolicBreakpoint"); |
| } |
| |
| function test() |
| { |
| function triggerBreakpoint() { |
| return Promise.all([ |
| InspectorTest.awaitEvent("TestPage-SymbolicBreakpoint"), |
| InspectorTest.evaluateInPage(`triggerSymbolicBreakpoint()`), |
| ]); |
| } |
| |
| let suite = InspectorTest.createAsyncSuite("SymbolicBreakpoint"); |
| |
| InspectorTest.BreakpointOptions.addTestCases(suite, { |
| testCaseNamePrefix: "ExactCaseInsensitive.Native.JS.Hit.", |
| createBreakpoint() { |
| let breakpoint = new WI.SymbolicBreakpoint("rEvErSe", {caseSensitive: false}); |
| WI.debuggerManager.addSymbolicBreakpoint(breakpoint); |
| return breakpoint; |
| }, |
| triggerBreakpoint, |
| }); |
| |
| suite.addTestCase({ |
| name: "SymbolicBreakpoint.ExactCaseInsensitive.Native.JS.Miss", |
| async test() { |
| let pauseCount = 0; |
| let pausedListener = WI.debuggerManager.addEventListener(WI.DebuggerManager.Event.Paused, (event) => { |
| ++pauseCount; |
| WI.debuggerManager.resume(); |
| }); |
| |
| InspectorTest.log("Adding breakpoint..."); |
| let breakpoint = new WI.SymbolicBreakpoint("rEvErS", {caseSensitive: false}); |
| WI.debuggerManager.addSymbolicBreakpoint(breakpoint); |
| InspectorTest.assert(!WI.debuggerManager.symbolicBreakpointsForSymbol("triggerSymbolicBreakpoint").length, "Should not match breakpoint."); |
| |
| InspectorTest.log("Triggering breakpoint..."); |
| await triggerBreakpoint(); |
| InspectorTest.expectEqual(pauseCount, 0, "Should not pause."); |
| |
| InspectorTest.newline(); |
| |
| InspectorTest.log("Removing breakpoint..."); |
| breakpoint.remove(); |
| |
| InspectorTest.log("Triggering breakpoint..."); |
| await triggerBreakpoint(); |
| InspectorTest.expectEqual(pauseCount, 0, "Should not pause."); |
| |
| WI.debuggerManager.removeEventListener(WI.DebuggerManager.Event.Paused, pausedListener); |
| }, |
| }); |
| |
| suite.addTestCase({ |
| name: "SymbolicBreakpoint.ExactCaseInsensitive.Native.JS.Disabled", |
| async test() { |
| let pauseCount = 0; |
| let pausedListener = WI.debuggerManager.addEventListener(WI.DebuggerManager.Event.Paused, (event) => { |
| ++pauseCount; |
| WI.debuggerManager.resume(); |
| }); |
| |
| InspectorTest.log("Adding breakpoint..."); |
| let breakpoint = new WI.SymbolicBreakpoint("rEvErSe", {caseSensitive: false, disabled: true}); |
| WI.debuggerManager.addSymbolicBreakpoint(breakpoint); |
| InspectorTest.assert(!WI.debuggerManager.symbolicBreakpointsForSymbol("triggerSymbolicBreakpoint").length, "Should not match breakpoint."); |
| |
| InspectorTest.log("Triggering breakpoint..."); |
| await triggerBreakpoint(); |
| InspectorTest.expectEqual(pauseCount, 0, "Should not pause."); |
| |
| InspectorTest.newline(); |
| |
| InspectorTest.log("Removing breakpoint..."); |
| breakpoint.remove(); |
| |
| InspectorTest.log("Triggering breakpoint..."); |
| await triggerBreakpoint(); |
| InspectorTest.expectEqual(pauseCount, 0, "Should not pause."); |
| |
| WI.debuggerManager.removeEventListener(WI.DebuggerManager.Event.Paused, pausedListener); |
| }, |
| }); |
| |
| suite.runTestCasesAndFinish(); |
| } |
| </script> |
| </head> |
| <body onload="runTest()"> |
| <p>Tests for SymbolicBreakpoint.</p> |
| </body> |
| </html> |