1 /******************************************************************************* 2 * Copyright (c) 2014 IBM Corporation and others. 3 * 4 * This program and the accompanying materials 5 * are made available under the terms of the Eclipse Public License 2.0 6 * which accompanies this distribution, and is available at 7 * https://www.eclipse.org/legal/epl-2.0/ 8 * 9 * SPDX-License-Identifier: EPL-2.0 10 * 11 * Contributors: 12 * IBM Corporation - initial API and implementation 13 *******************************************************************************/ 14 package org.eclipse.jdt.debug.tests.breakpoints; 15 16 import org.eclipse.core.runtime.Path; 17 import org.eclipse.debug.core.IBreakpointManager; 18 import org.eclipse.debug.core.model.IBreakpoint; 19 import org.eclipse.jdt.debug.core.IJavaLineBreakpoint; 20 import org.eclipse.jdt.debug.core.IJavaMethodBreakpoint; 21 import org.eclipse.jdt.debug.tests.TestUtil; 22 23 /** 24 * Tests the Java debugger's 'toggle breakpoints target'. 25 */ 26 public class TestToggleBreakpointsTarget8 extends AbstractToggleBreakpointsTarget { 27 28 29 30 TestToggleBreakpointsTarget8(String name)31 public TestToggleBreakpointsTarget8(String name) { 32 super(name); 33 // TODO Auto-generated constructor stub 34 } 35 36 /** 37 * Tests that qualified names get created for method breakpoints in default method of Java 8 interface 38 * files. 39 * 40 * @throws Exception 41 */ testInterfaceDefaultMethodBreakpoint()42 public void testInterfaceDefaultMethodBreakpoint() throws Exception { 43 Listener listener = new Listener(); 44 IBreakpointManager manager = getBreakpointManager(); 45 manager.addBreakpointListener(listener); 46 try { 47 Path path = new Path("java8/EvalTestIntf18.java"); 48 toggleBreakpoint(path, 23); // 0 based offset in document line numbers 49 TestUtil.waitForJobs(getName(), 100, DEFAULT_TIMEOUT); 50 IBreakpoint added = listener.getAdded(); 51 assertTrue("Should be a method breakpoint", added instanceof IJavaMethodBreakpoint); 52 IJavaMethodBreakpoint breakpoint = (IJavaMethodBreakpoint) added; 53 assertEquals("Wrong type name", "Intf18", breakpoint.getTypeName()); 54 assertEquals("Wrong method name", "test2", breakpoint.getMethodName()); 55 assertEquals("Wrong signature", "()I", breakpoint.getMethodSignature()); 56 } finally { 57 manager.removeBreakpointListener(listener); 58 removeAllBreakpoints(); 59 } 60 } 61 62 /** 63 * Tests that qualified names get created for method breakpoints in Static method of Java 8 interface 64 * files. 65 * 66 * @throws Exception 67 */ testInterfaceStaticMethodBreakpoint()68 public void testInterfaceStaticMethodBreakpoint() throws Exception { 69 Listener listener = new Listener(); 70 IBreakpointManager manager = getBreakpointManager(); 71 manager.addBreakpointListener(listener); 72 try { 73 Path path = new Path("java8/EvalTestIntf18.java"); 74 toggleBreakpoint(path, 28); // 0 based offset in document line numbers 75 TestUtil.waitForJobs(getName(), 100, DEFAULT_TIMEOUT); 76 IBreakpoint added = listener.getAdded(); 77 assertTrue("Should be a method breakpoint", added instanceof IJavaMethodBreakpoint); 78 IJavaMethodBreakpoint breakpoint = (IJavaMethodBreakpoint) added; 79 assertEquals("Wrong type name", "Intf18", breakpoint.getTypeName()); 80 assertEquals("Wrong method name", "test3", breakpoint.getMethodName()); 81 assertEquals("Wrong signature", "()V", breakpoint.getMethodSignature()); 82 } finally { 83 manager.removeBreakpointListener(listener); 84 removeAllBreakpoints(); 85 } 86 } 87 88 89 /** 90 * Tests that qualified names does get created for method breakpoints in unimplemented method of Java 8 interface 91 * files. 92 * 93 * @throws Exception 94 */ testInterfaceUnimplementedMethodBreakpoint()95 public void testInterfaceUnimplementedMethodBreakpoint() throws Exception { 96 Listener listener = new Listener(); 97 IBreakpointManager manager = getBreakpointManager(); 98 manager.addBreakpointListener(listener); 99 try { 100 Path path = new Path("java8/EvalTestIntf18.java"); 101 toggleBreakpoint(path, 22); // 0 based offset in document line numbers 102 TestUtil.waitForJobs(getName(), 100, DEFAULT_TIMEOUT); 103 assertTrue(listener.isEmpty()); 104 } finally { 105 manager.removeBreakpointListener(listener); 106 removeAllBreakpoints(); 107 } 108 } 109 110 /** 111 * Tests that qualified names get created for line breakpoints in Interface implemented method 112 * files. 113 * 114 * @throws Exception 115 */ testInterfaceLineBreakpoint()116 public void testInterfaceLineBreakpoint() throws Exception { 117 Listener listener = new Listener(); 118 IBreakpointManager manager = getBreakpointManager(); 119 manager.addBreakpointListener(listener); 120 try { 121 Path path = new Path("java8/EvalTestIntf18.java"); 122 toggleBreakpoint(path, 24); // 0 based offset in document line numbers 123 TestUtil.waitForJobs(getName(), 100, DEFAULT_TIMEOUT); 124 IBreakpoint added = listener.getAdded(); 125 assertTrue("Should be a line breakpoint", added instanceof IJavaLineBreakpoint); 126 IJavaLineBreakpoint breakpoint = (IJavaLineBreakpoint) added; 127 assertEquals("Wrong line number", 25, breakpoint.getLineNumber()); 128 assertEquals("Wrong type name", "Intf18", breakpoint.getTypeName()); 129 } finally { 130 manager.removeBreakpointListener(listener); 131 removeAllBreakpoints(); 132 } 133 } 134 135 } 136