|
From: Christopher W. <caw...@us...> - 2005-03-28 23:23:26
|
Update of /cvsroot/rubyeclipse/org.rubypeople.rdt.debug.ui.tests/src/org/rubypeople/rdt/internal/debug/ui/tests In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1359/src/org/rubypeople/rdt/internal/debug/ui/tests Modified Files: TC_RubyConsoleTracker.java Log Message: apply david corbin's patches Index: TC_RubyConsoleTracker.java =================================================================== RCS file: /cvsroot/rubyeclipse/org.rubypeople.rdt.debug.ui.tests/src/org/rubypeople/rdt/internal/debug/ui/tests/TC_RubyConsoleTracker.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** TC_RubyConsoleTracker.java 3 May 2004 17:17:30 -0000 1.1 --- TC_RubyConsoleTracker.java 28 Mar 2005 23:23:02 -0000 1.2 *************** *** 1,5 **** package org.rubypeople.rdt.internal.debug.ui.tests; ! import junit.framework.Assert; import junit.framework.TestCase; --- 1,7 ---- package org.rubypeople.rdt.internal.debug.ui.tests; ! import java.util.ArrayList; ! import java.util.List; ! import junit.framework.TestCase; *************** *** 14,30 **** import org.eclipse.jface.text.IDocument; import org.eclipse.jface.text.IRegion; - import org.eclipse.jface.text.Region; import org.rubypeople.rdt.internal.debug.ui.console.RubyConsoleTracker; import org.rubypeople.rdt.internal.debug.ui.console.RubyStackTraceHyperlink; public class TC_RubyConsoleTracker extends TestCase { ! public TC_RubyConsoleTracker(String name) { ! super(name); ! } ! ! protected void setUp() { } ! public void testCorrect() throws Exception { //data/test/configFile.rb:1:in `require': No such file to load -- inifile (LoadError) --- 16,34 ---- import org.eclipse.jface.text.IDocument; import org.eclipse.jface.text.IRegion; import org.rubypeople.rdt.internal.debug.ui.console.RubyConsoleTracker; import org.rubypeople.rdt.internal.debug.ui.console.RubyStackTraceHyperlink; + import org.rubypeople.rdt.internal.debug.ui.console.RubyConsoleTracker.FileExistanceChecker; public class TC_RubyConsoleTracker extends TestCase { ! private static final String SYNTAX_IN_REQUIRE = " /RdtTest/FooTest.rb:2:in `require': /RdtTestLib/anotherFile.rb:9: parse error (SyntaxError)"; ! private TestConsole console; ! private MockFileExistanceChecker fileChecker; ! ! public void setUp() throws Exception { ! fileChecker = new MockFileExistanceChecker(); ! console = new TestConsole(fileChecker); } ! public void testCorrect() throws Exception { //data/test/configFile.rb:1:in `require': No such file to load -- inifile (LoadError) *************** *** 32,104 **** // * from /data/test/fetchmail.rb:2:in `require' ! TestConsole console = new TestConsole() ; console.lineAppend("/d/t.rb:1:in `require': No such file to load -- inifile (LoadError)") ; ! RubyStackTraceHyperlink link = console.getLink() ; ! Assert.assertNotNull(link) ; ! Assert.assertEquals(0, console.getOffset()) ; ! Assert.assertEquals(9, console.getLength()) ; ! Assert.assertEquals("/d/t.rb", link.getFilename()) ; ! Assert.assertEquals(1, link.getLineNumber()) ; ! console.lineAppend(" from c:/d/abc.rb:99") ; ! link = console.getLink() ; ! Assert.assertNotNull(link) ; ! Assert.assertEquals(8, console.getOffset()) ; ! Assert.assertEquals(14, console.getLength()) ; ! Assert.assertEquals("c:/d/abc.rb", link.getFilename()) ; ! Assert.assertEquals(99, link.getLineNumber()) ; ! // Another one directly following ! console.lineAppend("/name with from in the middle/rb.rb:123") ; ! link = console.getLink() ; ! Assert.assertNotNull(link) ; ! Assert.assertEquals(0, console.getOffset()) ; ! Assert.assertEquals(39, console.getLength()) ; ! Assert.assertEquals("/name with from in the middle/rb.rb", link.getFilename()) ; ! Assert.assertEquals(123, link.getLineNumber()) ; ! } public void testSecondWithoutFirst() throws Exception { ! TestConsole console = new TestConsole() ; ! console.lineAppend(" from c:/d/abc.rb:99") ; ! RubyStackTraceHyperlink link = console.getLink() ; ! Assert.assertNotNull(link) ; ! Assert.assertEquals(8, console.getOffset()) ; ! Assert.assertEquals("c:/d/abc.rb", link.getFilename()) ; } public void testInCorrect() throws Exception { ! ! TestConsole console = new TestConsole() ; console.lineAppend("/d/t.rb:a:in `require': No such file to load -- inifile (LoadError)") ; ! RubyStackTraceHyperlink link = console.getLink() ; ! Assert.assertNull(link) ; ! console.lineAppend("/d/t.rb:123 ") ; ! Assert.assertNull(link) ; } - public class TestConsole implements IConsole { ! private RubyStackTraceHyperlink link; ! private int offset ; ! private int length ; SimpleDocument doc = new SimpleDocument() ; RubyConsoleTracker tracker ; ! public TestConsole() throws Exception { ! tracker = new RubyConsoleTracker(); tracker.init(this) ; } public void addLink(IConsoleHyperlink pLink, int pOffset, int pLength) { ! this.link = (RubyStackTraceHyperlink) pLink ; ! this.offset = pOffset ; ! this.length = pLength ; } public void connect(IStreamMonitor streamMonitor, String streamIdentifer) { ! // TODO Auto-generated method stub } public void connect(IStreamsProxy streamsProxy) { ! // TODO Auto-generated method stub } public IDocument getDocument() { --- 36,131 ---- // * from /data/test/fetchmail.rb:2:in `require' ! fileChecker.addKnownFile("/d/t.rb"); ! fileChecker.addKnownFile("c:/d/abc.rb"); ! console.lineAppend("/d/t.rb:1:in `require': No such file to load -- inifile (LoadError)") ; ! console.lineAppend("\tfrom c:/d/abc.rb:99") ; ! console.lineAppend(" /name with from in the middle/rb.rb:123") ; + console.assertLink(0, 9, "/d/t.rb", 1, 0); + console.assertLink(6, 14, "c:/d/abc.rb", 99, 1); + console.assertLinkCount(2); + } + + public void testSyntaxErrorInRequire() throws Exception { + fileChecker.addKnownFile("/RdtTest/FooTest.rb"); + fileChecker.addKnownFile("/RdtTestLib/anotherFile.rb"); + + console.lineAppend(SYNTAX_IN_REQUIRE) ; + + console.assertLinkCount(2); + console.assertLink( 1, 21, "/RdtTest/FooTest.rb", 2, 0); + console.assertLink(37, 28, "/RdtTestLib/anotherFile.rb", 9, 1); } public void testSecondWithoutFirst() throws Exception { ! fileChecker.addKnownFile("c:/d/abc.rb"); ! ! console.lineAppend("\tfrom c:/d/abc.rb:99") ; ! ! console.assertLink(6, 14, "c:/d/abc.rb", 99, 0); } public void testInCorrect() throws Exception { ! fileChecker.addKnownFile("/d/t.rb"); ! console.lineAppend("/d/t.rb:a:in `require': No such file to load -- inifile (LoadError)") ; ! console.lineAppend("/d/t.rb:123 "); ! console.assertLinkCount(0); ! } ! ! private final class MockFileExistanceChecker implements RubyConsoleTracker.FileExistanceChecker { ! private List knownFiles = new ArrayList(); ! ! public void addKnownFile(String filename) { ! knownFiles.add(filename); ! } ! public boolean fileExists(String filename) { ! return knownFiles.contains(filename); ! } } public class TestConsole implements IConsole { ! private class MetaLink { ! public RubyStackTraceHyperlink link; ! public int offset; ! public int length; ! } ! ! private List metaLinks = new ArrayList(); SimpleDocument doc = new SimpleDocument() ; RubyConsoleTracker tracker ; ! public TestConsole(FileExistanceChecker fileChecker) throws Exception { ! tracker = new RubyConsoleTracker(fileChecker); tracker.init(this) ; } + public void assertLinkCount(int expectedLinkCount) { + assertEquals(expectedLinkCount, metaLinks.size()); + } + + public void assertLink(int expectedOffset, int expectedLength, String expectedFilename, int expectedLineNumber, int linkIndex) { + MetaLink metaLink = (MetaLink) metaLinks.get(linkIndex); + assertNotNull(metaLink); + assertEquals("Offset of link["+linkIndex+"]", expectedOffset, metaLink.offset); + assertEquals(expectedLength, metaLink.length); + assertEquals(expectedFilename, metaLink.link.getFilename()); + assertEquals(expectedLineNumber, metaLink.link.getLineNumber()); + } + public void addLink(IConsoleHyperlink pLink, int pOffset, int pLength) { ! MetaLink metaLink = new MetaLink(); ! metaLink.link = (RubyStackTraceHyperlink) pLink ; ! metaLink.offset = pOffset ; ! metaLink.length = pLength ; ! ! metaLinks.add(metaLink); } public void connect(IStreamMonitor streamMonitor, String streamIdentifer) { ! throw new RuntimeException("Not Implemented Exception"); } public void connect(IStreamsProxy streamsProxy) { ! throw new RuntimeException("Not Implemented Exception"); } public IDocument getDocument() { *************** *** 106,114 **** } public IProcess getProcess() { ! // TODO Auto-generated method stub ! return null; } public IRegion getRegion(IConsoleHyperlink link) { ! return new Region(this.getOffset(), this.getLength()) ; } --- 133,140 ---- } public IProcess getProcess() { ! throw new RuntimeException("Not Implemented Exception"); } public IRegion getRegion(IConsoleHyperlink link) { ! throw new RuntimeException("Not Implemented Exception"); } *************** *** 117,132 **** tracker.lineAppended(doc.getLineInformationOfOffset(1)) ; } - - public RubyStackTraceHyperlink getLink() { - return link; - } - - public int getLength() { - return length; - } - - public int getOffset() { - return offset; - } } --- 143,146 ---- |