1 33 34 package edu.rice.cs.drjava.model.debug; 35 36 import java.io.*; 37 38 import edu.rice.cs.drjava.config.*; 39 import edu.rice.cs.drjava.model.*; 40 41 import edu.rice.cs.util.swing.Utilities; 42 43 46 public final class DebugTest extends DebugTestCase implements OptionConstants { 47 48 51 public void testStartupAndShutdown() throws DebugException, InterruptedException { 52 _log.log("----testStartupAndShutdown----"); 53 DebugTestListener debugListener = new DebugStartAndStopListener(); 54 _debugger.addListener(debugListener); 55 56 synchronized(_notifierLock) { 58 _debugger.startUp(); 59 _setPendingNotifies(1); while (_pendingNotifies > 0) _notifierLock.wait(); 61 } 62 debugListener.assertDebuggerStartedCount(1); debugListener.assertDebuggerShutdownCount(0); 64 65 assertTrue("Debug Manager should be ready", _debugger.isReady()); 67 assertNotNull("EventRequestManager should not be null after startUp", _debugger.getEventRequestManager()); 68 assertNotNull("PendingRequestManager should not be null after startUp", _debugger.getPendingRequestManager()); 69 70 synchronized(_notifierLock) { 72 _debugger.shutdown(); 73 _setPendingNotifies(1); while (_pendingNotifies > 0) _notifierLock.wait(); 75 } 76 debugListener.assertDebuggerStartedCount(1); 77 debugListener.assertDebuggerShutdownCount(1); 79 synchronized(_notifierLock) { 81 _debugger.startUp(); 82 _setPendingNotifies(1); while (_pendingNotifies > 0) _notifierLock.wait(); 84 } 85 debugListener.assertDebuggerStartedCount(2); debugListener.assertDebuggerShutdownCount(1); 87 88 InterpretListener resetListener = new InterpretListener() { 90 public void interactionStarted() { 91 _log.log("interactionStarted called in resetListener"); 93 interactionStartCount++; 94 } 95 public void interactionEnded() { 96 _log.log("interactionEnded called in resetListener"); 98 interactionEndCount++; 99 } 100 public void interpreterChanged(boolean inProgress) { 101 _log.log("interpreterChanged called in resetListener"); 103 interpreterChangedCount++; 104 } 105 public void interpreterResetting() { 106 _log.log("interpreterResetting called in resetListener"); 108 interpreterResettingCount++; 109 } 110 public void interpreterReady(File wd) { 111 synchronized(_notifierLock) { 112 interpreterReadyCount++; 113 _log.log("interpreterReady " + interpreterReadyCount); 114 _notifyLock(); 115 } 116 } 117 public void consoleReset() { consoleResetCount++; } 118 }; 119 120 _model.addListener(resetListener); _setPendingNotifies(2); 123 124 127 _model.resetInteractions(FileOption.NULL_FILE); 128 129 synchronized(_notifierLock) { while (_pendingNotifies > 0) _notifierLock.wait(); } 130 131 _model.removeListener(resetListener); 132 133 resetListener.assertInterpreterResettingCount(1); resetListener.assertInterpreterReadyCount(1); debugListener.assertDebuggerStartedCount(2); 136 debugListener.assertDebuggerShutdownCount(2); 138 139 synchronized(_notifierLock) { 141 _debugger.startUp(); 142 _setPendingNotifies(1); while (_pendingNotifies > 0) _notifierLock.wait(); 144 } 145 debugListener.assertDebuggerStartedCount(3); debugListener.assertDebuggerShutdownCount(2); 147 148 synchronized(_notifierLock) { 150 _debugger.shutdown(); 151 _setPendingNotifies(1); while (_pendingNotifies > 0) _notifierLock.wait(); 153 } 154 debugListener.assertDebuggerStartedCount(3); 155 debugListener.assertDebuggerShutdownCount(3); 157 _debugger.removeListener(debugListener); 158 } 159 160 161 165 public synchronized void testMultiThreadedSetCurrentThread() throws Exception { 166 _log.log("----testMultiThreadedSetCurrentThread----"); 167 BreakpointTestListener debugListener = new BreakpointTestListener(); 168 _debugger.addListener(debugListener); 169 170 OpenDefinitionsDocument doc = _startupDebugger("Monkey.java", 172 MONKEY_CLASS); 173 174 int index = MONKEY_CLASS.indexOf("System.out.println(\"I\'m a thread! Yeah!\");"); 176 _debugger.toggleBreakpoint(doc,index, 11, true); 177 index = MONKEY_CLASS.indexOf("System.out.println(\"James likes bananas!\");"); 178 _debugger.toggleBreakpoint(doc,index, 17, true); 179 180 synchronized(_notifierLock) { 182 interpretIgnoreResult("java Monkey"); 183 _setPendingNotifies(6); while (_pendingNotifies > 0) _notifierLock.wait(); 185 } 186 DebugThreadData threadA = new DebugThreadData(_debugger.getCurrentThread()); 187 DebugThreadData threadB = new DebugThreadData(_debugger.getThreadAt(1)); 188 synchronized(_notifierLock) { 189 _asyncDoSetCurrentThread(threadB); 190 _setPendingNotifies(2); while (_pendingNotifies > 0) _notifierLock.wait(); 192 } 193 194 DebugThreadData thread1 = new DebugThreadData(_debugger.getThreadAt(1)); 195 DebugThreadData thread2 = new DebugThreadData(_debugger.getCurrentThread()); 196 197 assertTrue(thread1.getUniqueID() == threadA.getUniqueID()); 199 assertTrue(thread2.getUniqueID() == threadB.getUniqueID()); 200 201 _shutdownAndWaitForInteractionEnded(); 203 _debugger.removeListener(debugListener); 204 } 205 206 257 258 259 public synchronized void testMultiThreadedBreakpointsAndStep() throws Exception { 260 _log.log("----testMultiThreadedBreakpointsAndStep----"); 261 BreakpointTestListener debugListener = new BreakpointTestListener(); 262 _debugger.addListener(debugListener); 263 264 OpenDefinitionsDocument doc = _startupDebugger("Monkey.java", MONKEY_CLASS); 266 267 int index = MONKEY_CLASS.indexOf("System.out.println(\"I\'m a thread! Yeah!\");"); 269 _debugger.toggleBreakpoint(doc,index,11,true); 270 index = MONKEY_CLASS.indexOf("System.out.println(\"I just woke up. I\'m a big boy now.\");"); 271 _debugger.toggleBreakpoint(doc,index,16,true); 272 273 Utilities.clearEventQueue(); 274 debugListener.assertRegionAddedCount(2); 275 276 synchronized(_notifierLock) { 278 interpretIgnoreResult("java Monkey"); 279 _setPendingNotifies(6); while (_pendingNotifies > 0) _notifierLock.wait(); 281 } 282 283 DebugThreadData thread = new DebugThreadData(_debugger.getCurrentThread()); 284 synchronized(_notifierLock) { 286 _asyncResume(); 287 _setPendingNotifies(2); while (_pendingNotifies > 0) _notifierLock.wait(); 291 } 292 293 DebugThreadData thread2 = new DebugThreadData(_debugger.getCurrentThread()); 294 assertTrue("testMultiThreadedBreakPoint thread references should not be equal", 295 !thread.getName().equals(thread2.getName())); 296 297 debugListener.assertBreakpointReachedCount(2); debugListener.assertThreadLocationUpdatedCount(3); debugListener.assertCurrThreadSuspendedCount(3); debugListener.assertCurrThreadResumedCount(1); 302 _debugger.removeListener(debugListener); 303 304 _log.log("Testing stepping..."); 305 306 StepTestListener stepTestListener = new StepTestListener(); 308 _debugger.addListener(stepTestListener); 309 synchronized(_notifierLock) { 310 _asyncStep(Debugger.STEP_INTO); 311 _setPendingNotifies(2); while (_pendingNotifies > 0) _notifierLock.wait(); 313 } 314 stepTestListener.assertStepRequestedCount(1); 315 _debugger.removeListener(stepTestListener); 316 317 DebugThreadData thread3 = new DebugThreadData(_debugger.getCurrentThread()); 318 assertEquals("testMultiThreadedBreakPoint thread references should be equal", 319 thread2.getName(), thread3.getName()); 320 321 _debugger.addListener(debugListener); 323 InterpretListener interpretListener = new InterpretListener(); 324 _model.addListener(interpretListener); 325 synchronized(_notifierLock) { 326 _asyncResume(); 327 _setPendingNotifies(3); while (_pendingNotifies > 0) _notifierLock.wait(); 330 } 331 interpretListener.assertInteractionEndCount(1); 332 _model.removeListener(interpretListener); 333 334 _shutdownWithoutSuspendedInteraction(); 336 _debugger.removeListener(debugListener); 337 } 338 339 340 341 344 public synchronized void testBreakpoints() throws Exception { 345 _log.log("----testBreakpoints----"); 346 BreakpointTestListener debugListener = new BreakpointTestListener(); 347 _debugger.addListener(debugListener); 348 349 OpenDefinitionsDocument doc = _startupDebugger("DrJavaDebugClass.java", 351 DEBUG_CLASS); 352 353 _debugger.toggleBreakpoint(doc,DEBUG_CLASS.indexOf("bar();"),4,true); 355 356 Utilities.clearEventQueue(); 357 debugListener.assertRegionAddedCount(1); 358 359 synchronized(_notifierLock) { 361 interpretIgnoreResult("new DrJavaDebugClass().foo()"); 362 _setPendingNotifies(3); while (_pendingNotifies > 0) _notifierLock.wait(); 364 } 365 366 _log.log("----After breakpoint:\n" + getInteractionsText()); 367 368 debugListener.assertBreakpointReachedCount(1); debugListener.assertThreadLocationUpdatedCount(1); debugListener.assertCurrThreadSuspendedCount(1); debugListener.assertCurrThreadResumedCount(0); 373 debugListener.assertCurrThreadDiedCount(0); 374 assertInteractionsContains("Foo Line 1"); 375 assertInteractionsDoesNotContain("Bar Line 1"); 376 377 _log.log("adding another breakpoint"); 378 379 _debugger.toggleBreakpoint(doc, DEBUG_CLASS.indexOf("System.out.println(\"Bar Line 2\")"), 9, true); 381 382 Utilities.clearEventQueue(); 383 debugListener.assertRegionAddedCount(2); 384 385 synchronized(_notifierLock) { 387 _log.log("resuming"); 388 _asyncResume(); 389 _setPendingNotifies(3); while (_pendingNotifies > 0) _notifierLock.wait(); 391 } 392 _log.log("----After one resume:\n" + getInteractionsText()); 393 debugListener.assertCurrThreadResumedCount(1); debugListener.assertBreakpointReachedCount(2); debugListener.assertThreadLocationUpdatedCount(2); debugListener.assertCurrThreadSuspendedCount(2); debugListener.assertCurrThreadDiedCount(0); 398 assertInteractionsContains("Bar Line 1"); 399 assertInteractionsDoesNotContain("Bar Line 2"); 400 401 InterpretListener interpretListener = new InterpretListener(); 403 _model.addListener(interpretListener); 404 synchronized(_notifierLock) { 405 _log.log("-------- Resuming --------"); 406 _asyncResume(); 407 _setPendingNotifies(3); while (_pendingNotifies > 0) _notifierLock.wait(); 410 } 411 interpretListener.assertInteractionEndCount(1); 412 _model.removeListener(interpretListener); 413 414 _log.log("----After second resume:\n" + getInteractionsText()); 415 debugListener.assertCurrThreadResumedCount(2); debugListener.assertBreakpointReachedCount(2); 417 debugListener.assertThreadLocationUpdatedCount(2); 418 debugListener.assertCurrThreadSuspendedCount(2); 419 assertInteractionsContains("Foo Line 3"); 420 421 _shutdownWithoutSuspendedInteraction(); 423 _debugger.removeListener(debugListener); 424 } 425 426 433 public synchronized void testBreakpointsWithSameNamePrefix() throws Exception { 434 _log.log("----testBreakpointsWithSameNamePrefix----"); 435 BreakpointTestListener debugListener = new BreakpointTestListener(); 436 _debugger.addListener(debugListener); 437 438 OpenDefinitionsDocument doc = _startupDebugger("DrJavaDebugClass.java", 440 DEBUG_CLASS); 441 442 _debugger.toggleBreakpoint(doc,DEBUG_CLASS.indexOf("Bar Line 1"),8,true); 444 445 Utilities.clearEventQueue(); 446 debugListener.assertRegionAddedCount(1); 447 448 synchronized(_notifierLock) { 450 interpretIgnoreResult("new DrJavaDebugClass2().baz()"); 451 _setPendingNotifies(3); while (_pendingNotifies > 0) _notifierLock.wait(); 453 } 454 455 _log.log("----After breakpoint:\n" + getInteractionsText()); 456 457 debugListener.assertBreakpointReachedCount(1); debugListener.assertThreadLocationUpdatedCount(1); debugListener.assertCurrThreadSuspendedCount(1); debugListener.assertCurrThreadResumedCount(0); 462 debugListener.assertCurrThreadDiedCount(0); 463 assertInteractionsContains("Baz Line 1"); 464 assertInteractionsDoesNotContain("Bar Line 1"); 465 466 InterpretListener interpretListener = new InterpretListener(); 468 _model.addListener(interpretListener); 469 synchronized(_notifierLock) { 470 _log.log("-------- Resuming --------"); 471 _asyncResume(); 472 _setPendingNotifies(3); while (_pendingNotifies > 0) _notifierLock.wait(); 475 } 476 interpretListener.assertInteractionEndCount(1); 477 _model.removeListener(interpretListener); 478 479 _log.log("----After second resume:\n" + getInteractionsText()); 480 debugListener.assertCurrThreadResumedCount(1); debugListener.assertBreakpointReachedCount(1); 482 debugListener.assertThreadLocationUpdatedCount(1); 483 debugListener.assertCurrThreadSuspendedCount(1); 484 assertInteractionsContains("Bar Line 2"); 485 486 _shutdownWithoutSuspendedInteraction(); 488 _debugger.removeListener(debugListener); 489 } 490 491 494 public void testStepInto() throws Exception { 495 _log.log("----testStepInto----"); 496 StepTestListener debugListener = new StepTestListener(); 497 _debugger.addListener(debugListener); 498 499 OpenDefinitionsDocument doc = _startupDebugger("DrJavaDebugClass.java", 501 DEBUG_CLASS); 502 503 _debugger.toggleBreakpoint(doc,DEBUG_CLASS.indexOf("bar();"),4,true); 505 506 Utilities.clearEventQueue(); 507 debugListener.assertRegionAddedCount(1); 508 509 synchronized(_notifierLock) { 511 interpretIgnoreResult("new DrJavaDebugClass().foo()"); 512 _setPendingNotifies(3); while (_pendingNotifies > 0) _notifierLock.wait(); 514 } 515 516 _log.log("----After breakpoint:\n" + getInteractionsText()); 517 518 debugListener.assertBreakpointReachedCount(1); debugListener.assertThreadLocationUpdatedCount(1); debugListener.assertCurrThreadSuspendedCount(1); debugListener.assertCurrThreadResumedCount(0); 523 debugListener.assertCurrThreadDiedCount(0); 524 assertInteractionsContains("Foo Line 1"); 525 assertInteractionsDoesNotContain("Bar Line 1"); 526 527 synchronized(_notifierLock) { 529 _asyncStep(Debugger.STEP_INTO); 530 _setPendingNotifies(2); while (_pendingNotifies > 0) _notifierLock.wait(); 532 } 533 debugListener.assertStepRequestedCount(1); debugListener.assertCurrThreadResumedCount(1); debugListener.assertThreadLocationUpdatedCount(2); debugListener.assertCurrThreadSuspendedCount(2); debugListener.assertBreakpointReachedCount(1); 538 debugListener.assertCurrThreadDiedCount(0); 539 assertInteractionsDoesNotContain("Bar Line 1"); 540 541 synchronized(_notifierLock) { 543 _asyncStep(Debugger.STEP_OVER); 544 _setPendingNotifies(2); while (_pendingNotifies > 0) _notifierLock.wait(); 546 } 547 548 _log.log("****"+getInteractionsText()); 549 debugListener.assertStepRequestedCount(2); debugListener.assertCurrThreadResumedCount(2); debugListener.assertThreadLocationUpdatedCount(3); debugListener.assertCurrThreadDiedCount(0); 553 debugListener.assertCurrThreadSuspendedCount(3); debugListener.assertBreakpointReachedCount(1); 555 assertInteractionsContains("Bar Line 1"); 556 assertInteractionsDoesNotContain("Bar Line 2"); 557 558 synchronized(_notifierLock) { 560 _asyncStep(Debugger.STEP_OVER); 561 _setPendingNotifies(2); while (_pendingNotifies > 0) _notifierLock.wait(); 563 } 564 debugListener.assertStepRequestedCount(3); debugListener.assertCurrThreadResumedCount(3); debugListener.assertThreadLocationUpdatedCount(4); debugListener.assertCurrThreadDiedCount(0); 568 debugListener.assertCurrThreadSuspendedCount(4); debugListener.assertBreakpointReachedCount(1); 570 assertInteractionsContains("Bar Line 2"); 571 assertInteractionsDoesNotContain("Foo Line 3"); 572 573 synchronized(_notifierLock) { 575 _asyncStep(Debugger.STEP_OVER); 576 _setPendingNotifies(2); while (_pendingNotifies > 0) _notifierLock.wait(); 578 } 579 synchronized(_notifierLock) { 580 _asyncStep(Debugger.STEP_OVER); 581 _setPendingNotifies(2); while (_pendingNotifies > 0) _notifierLock.wait(); 583 } 584 debugListener.assertStepRequestedCount(5); debugListener.assertCurrThreadResumedCount(5); debugListener.assertThreadLocationUpdatedCount(6); debugListener.assertCurrThreadDiedCount(0); 588 debugListener.assertCurrThreadSuspendedCount(6); debugListener.assertBreakpointReachedCount(1); 590 assertInteractionsContains("Foo Line 3"); 591 592 593 InterpretListener interpretListener = new InterpretListener(); 595 _model.addListener(interpretListener); 596 synchronized(_notifierLock) { 597 _asyncStep(Debugger.STEP_OVER); 598 _setPendingNotifies(3); while (_pendingNotifies > 0) _notifierLock.wait(); 601 } 602 interpretListener.assertInteractionEndCount(1); 603 _model.removeListener(interpretListener); 604 605 debugListener.assertStepRequestedCount(6); debugListener.assertCurrThreadDiedCount(1); 607 608 _shutdownWithoutSuspendedInteraction(); 610 _debugger.removeListener(debugListener); 611 } 612 613 614 public synchronized void testStepOut() throws Exception { 615 _log.log("----testStepOut----"); 616 StepTestListener debugListener = new StepTestListener(); 617 _debugger.addListener(debugListener); 618 619 OpenDefinitionsDocument doc = _startupDebugger("DrJavaDebugClass.java", 621 DEBUG_CLASS); 622 623 _debugger.toggleBreakpoint(doc,DEBUG_CLASS.indexOf("bar();"),4,true); 625 626 Utilities.clearEventQueue(); 627 debugListener.assertRegionAddedCount(1); 628 629 synchronized(_notifierLock) { 631 interpretIgnoreResult("new DrJavaDebugClass().foo()"); 632 _setPendingNotifies(3); while (_pendingNotifies > 0) _notifierLock.wait(); 634 } 635 636 _log.log("----After breakpoint:\n" + getInteractionsText()); 637 638 debugListener.assertBreakpointReachedCount(1); debugListener.assertThreadLocationUpdatedCount(1); debugListener.assertCurrThreadSuspendedCount(1); debugListener.assertCurrThreadResumedCount(0); 643 debugListener.assertCurrThreadDiedCount(0); 644 assertInteractionsContains("Foo Line 1"); 645 assertInteractionsDoesNotContain("Bar Line 1"); 646 647 synchronized(_notifierLock) { 649 _asyncStep(Debugger.STEP_INTO); 650 _setPendingNotifies(2); while (_pendingNotifies > 0) _notifierLock.wait(); 652 } 653 debugListener.assertStepRequestedCount(1); debugListener.assertCurrThreadResumedCount(1); debugListener.assertThreadLocationUpdatedCount(2); debugListener.assertCurrThreadSuspendedCount(2); debugListener.assertBreakpointReachedCount(1); 658 debugListener.assertCurrThreadDiedCount(0); 659 assertInteractionsDoesNotContain("Bar Line 1"); 660 661 synchronized(_notifierLock) { 663 _asyncStep(Debugger.STEP_OUT); 664 _setPendingNotifies(2); while (_pendingNotifies > 0) _notifierLock.wait(); 666 } 667 668 _log.log("****"+getInteractionsText()); 669 debugListener.assertStepRequestedCount(2); debugListener.assertCurrThreadResumedCount(2); debugListener.assertThreadLocationUpdatedCount(3); debugListener.assertCurrThreadDiedCount(0); 673 debugListener.assertCurrThreadSuspendedCount(3); debugListener.assertBreakpointReachedCount(1); 675 assertInteractionsContains("Bar Line 2"); 676 assertInteractionsDoesNotContain("Foo Line 3"); 677 678 _shutdownAndWaitForInteractionEnded(); 680 _debugger.removeListener(debugListener); 681 } 682 683 686 public synchronized void testStepOverWithPackage() throws Exception { 687 _log.log("----testStepOverWithPackage----"); 688 StepTestListener debugListener = new StepTestListener(); 689 _debugger.addListener(debugListener); 690 691 File aDir = new File(_tempDir, "a"); 693 aDir.mkdir(); 694 File file = new File(aDir, "DrJavaDebugClassWithPackage.java"); 695 696 OpenDefinitionsDocument doc = _startupDebugger(file, DEBUG_CLASS_WITH_PACKAGE); 698 699 _debugger.toggleBreakpoint(doc,DEBUG_CLASS_WITH_PACKAGE.indexOf("foo line 1"), 4,true); 701 702 Utilities.clearEventQueue(); 703 debugListener.assertRegionAddedCount(1); 704 705 synchronized(_notifierLock) { 707 interpretIgnoreResult("new a.DrJavaDebugClassWithPackage().foo()"); 708 _setPendingNotifies(3); while (_pendingNotifies > 0) _notifierLock.wait(); 710 } 711 712 _log.log("----After breakpoint:\n" + getInteractionsText()); 713 714 debugListener.assertBreakpointReachedCount(1); debugListener.assertThreadLocationUpdatedCount(1); debugListener.assertCurrThreadSuspendedCount(1); debugListener.assertCurrThreadResumedCount(0); 719 debugListener.assertCurrThreadDiedCount(0); 720 assertInteractionsDoesNotContain("foo line 1"); 721 722 synchronized(_notifierLock) { 724 _asyncStep(Debugger.STEP_OVER); 725 _setPendingNotifies(2); while (_pendingNotifies > 0) _notifierLock.wait(); 727 } 728 debugListener.assertStepRequestedCount(1); debugListener.assertCurrThreadResumedCount(1); debugListener.assertThreadLocationUpdatedCount(2); debugListener.assertCurrThreadSuspendedCount(2); debugListener.assertBreakpointReachedCount(1); 733 debugListener.assertCurrThreadDiedCount(0); 734 assertInteractionsContains("foo line 1"); 735 assertInteractionsDoesNotContain("foo line 2"); 736 737 synchronized(_notifierLock) { 739 _asyncStep(Debugger.STEP_OVER); 740 _setPendingNotifies(2); while (_pendingNotifies > 0) _notifierLock.wait(); 742 } 743 744 _log.log("****"+getInteractionsText()); 745 debugListener.assertStepRequestedCount(2); debugListener.assertCurrThreadResumedCount(2); debugListener.assertThreadLocationUpdatedCount(3); debugListener.assertCurrThreadDiedCount(0); 749 debugListener.assertCurrThreadSuspendedCount(3); debugListener.assertBreakpointReachedCount(1); 751 assertInteractionsContains("foo line 2"); 752 753 InterpretListener interpretListener = new InterpretListener(); 755 _model.addListener(interpretListener); 756 synchronized(_notifierLock) { 757 _asyncResume(); 758 _setPendingNotifies(3); while (_pendingNotifies > 0) _notifierLock.wait(); 761 } 762 interpretListener.assertInteractionEndCount(1); 763 _model.removeListener(interpretListener); 764 765 _log.log("----After resume:\n" + getInteractionsText()); 766 debugListener.assertCurrThreadResumedCount(3); debugListener.assertBreakpointReachedCount(1); 768 debugListener.assertThreadLocationUpdatedCount(3); 769 debugListener.assertCurrThreadSuspendedCount(3); 770 771 772 _shutdownWithoutSuspendedInteraction(); 774 _debugger.removeListener(debugListener); 775 } 776 777 780 public void testGetPackageDir() { 781 String class1 = "edu.rice.cs.drjava.model.MyTest"; 782 String class2 = "MyTest"; 783 String sep = System.getProperty("file.separator"); 784 785 assertEquals("package dir with package", 786 "edu" + sep + "rice" + sep + "cs" + sep + 787 "drjava" + sep + "model" + sep, 788 _debugger.getPackageDir(class1)); 789 assertEquals("package dir without package", 790 "", 791 _debugger.getPackageDir(class2)); 792 } 793 } 794 795 | Popular Tags |