debug-breakpoints.js revision bb769b257e753aafcbd96767abb2abc645eaa20c
1// Copyright 2008 the V8 project authors. All rights reserved. 2// Redistribution and use in source and binary forms, with or without 3// modification, are permitted provided that the following conditions are 4// met: 5// 6// * Redistributions of source code must retain the above copyright 7// notice, this list of conditions and the following disclaimer. 8// * Redistributions in binary form must reproduce the above 9// copyright notice, this list of conditions and the following 10// disclaimer in the documentation and/or other materials provided 11// with the distribution. 12// * Neither the name of Google Inc. nor the names of its 13// contributors may be used to endorse or promote products derived 14// from this software without specific prior written permission. 15// 16// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 17// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 18// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 19// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 20// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 21// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 22// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 26// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 28// Flags: --expose-debug-as debug 29// Get the Debug object exposed from the debug context global object. 30Debug = debug.Debug 31 32function f() {a=1;b=2}; 33function g() { 34 a=1; 35 b=2; 36} 37 38bp = Debug.setBreakPoint(f, 0, 0); 39assertEquals("() {[B0]a=1;b=2}", Debug.showBreakPoints(f)); 40Debug.clearBreakPoint(bp); 41assertEquals("() {a=1;b=2}", Debug.showBreakPoints(f)); 42bp1 = Debug.setBreakPoint(f, 0, 8); 43assertEquals("() {a=1;[B0]b=2}", Debug.showBreakPoints(f)); 44bp2 = Debug.setBreakPoint(f, 0, 4); 45assertEquals("() {[B0]a=1;[B1]b=2}", Debug.showBreakPoints(f)); 46bp3 = Debug.setBreakPoint(f, 0, 11); 47assertEquals("() {[B0]a=1;[B1]b=2[B2]}", Debug.showBreakPoints(f)); 48Debug.clearBreakPoint(bp1); 49assertEquals("() {[B0]a=1;b=2[B1]}", Debug.showBreakPoints(f)); 50Debug.clearBreakPoint(bp2); 51assertEquals("() {a=1;b=2[B0]}", Debug.showBreakPoints(f)); 52Debug.clearBreakPoint(bp3); 53assertEquals("() {a=1;b=2}", Debug.showBreakPoints(f)); 54 55// The following test checks that the Debug.showBreakPoints(g) produces output 56// like follows when changein breakpoints. 57// 58// function g() { 59// [BX]a=1; 60// [BX]b=2; 61// }[BX] 62 63// Test set and clear breakpoint at the first possible location (line 0, 64// position 0). 65bp = Debug.setBreakPoint(g, 0, 0); 66// function g() { 67// [B0]a=1; 68// b=2; 69// } 70assertTrue(Debug.showBreakPoints(g).indexOf("[B0]a=1;") > 0); 71Debug.clearBreakPoint(bp); 72// function g() { 73// a=1; 74// b=2; 75// } 76assertTrue(Debug.showBreakPoints(g).indexOf("[B0]") < 0); 77 78// Second test set and clear breakpoints on lines 1, 2 and 3 (position = 0). 79bp1 = Debug.setBreakPoint(g, 2, 0); 80// function g() { 81// a=1; 82// [B0]b=2; 83// } 84assertTrue(Debug.showBreakPoints(g).indexOf("[B0]b=2;") > 0); 85bp2 = Debug.setBreakPoint(g, 1, 0); 86// function g() { 87// [B0]a=1; 88// [B1]b=2; 89// } 90assertTrue(Debug.showBreakPoints(g).indexOf("[B0]a=1;") > 0); 91assertTrue(Debug.showBreakPoints(g).indexOf("[B1]b=2;") > 0); 92bp3 = Debug.setBreakPoint(g, 3, 0); 93// function g() { 94// [B0]a=1; 95// [B1]b=2; 96// }[B2] 97assertTrue(Debug.showBreakPoints(g).indexOf("[B0]a=1;") > 0); 98assertTrue(Debug.showBreakPoints(g).indexOf("[B1]b=2;") > 0); 99assertTrue(Debug.showBreakPoints(g).indexOf("[B2]}") > 0); 100Debug.clearBreakPoint(bp1); 101// function g() { 102// [B0]a=1; 103// b=2; 104// }[B1] 105assertTrue(Debug.showBreakPoints(g).indexOf("[B0]a=1;") > 0); 106assertTrue(Debug.showBreakPoints(g).indexOf("[B1]}") > 0); 107assertTrue(Debug.showBreakPoints(g).indexOf("[B2]") < 0); 108Debug.clearBreakPoint(bp2); 109// function g() { 110// a=1; 111// b=2; 112// }[B0] 113assertTrue(Debug.showBreakPoints(g).indexOf("[B0]}") > 0); 114assertTrue(Debug.showBreakPoints(g).indexOf("[B1]") < 0); 115Debug.clearBreakPoint(bp3); 116// function g() { 117// a=1; 118// b=2; 119// } 120assertTrue(Debug.showBreakPoints(g).indexOf("[B0]") < 0); 121