|
From: Markus B. <mba...@us...> - 2005-10-03 11:32:06
|
Update of /cvsroot/rubyeclipse/org.rubypeople.rdt.ui.tests/src/org/rubypeople/rdt/internal/ui/text In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7594/src/org/rubypeople/rdt/internal/ui/text Modified Files: TC_RubyPartitionScanner.java Log Message: merged from SRB_0-6-1_2 Index: TC_RubyPartitionScanner.java =================================================================== RCS file: /cvsroot/rubyeclipse/org.rubypeople.rdt.ui.tests/src/org/rubypeople/rdt/internal/ui/text/TC_RubyPartitionScanner.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** TC_RubyPartitionScanner.java 2 Mar 2005 00:55:05 -0000 1.2 --- TC_RubyPartitionScanner.java 3 Oct 2005 11:31:41 -0000 1.3 *************** *** 9,13 **** import org.eclipse.jface.text.Document; import org.eclipse.jface.text.IDocument; ! import org.eclipse.jface.text.rules.DefaultPartitioner; /** --- 9,13 ---- import org.eclipse.jface.text.Document; import org.eclipse.jface.text.IDocument; ! import org.eclipse.jface.text.rules.FastPartitioner; /** *************** *** 16,29 **** */ public class TC_RubyPartitionScanner extends TestCase { public void testPartitioningOfSingleLineComment() { String source = "# This is a comment\n"; - IDocument doc = new Document(source); ! DefaultPartitioner partitioner = new DefaultPartitioner(new RubyPartitionScanner(), RubyPartitionScanner.LEGAL_CONTENT_TYPES); ! partitioner.connect(doc); ! assertEquals(RubyPartitionScanner.SINGLE_LINE_COMMENT, partitioner.getContentType(3)); } } --- 16,105 ---- */ public class TC_RubyPartitionScanner extends TestCase { + + private String getContentType(String content, int offset) { + IDocument doc = new Document(content); + FastPartitioner partitioner = new FastPartitioner(new RubyPartitionScanner(), RubyPartitionScanner.LEGAL_CONTENT_TYPES); + partitioner.connect(doc); + return partitioner.getContentType(offset); + } + public void testPartitioningOfSingleLineComment() { String source = "# This is a comment\n"; ! assertEquals(RubyPartitionScanner.SINGLE_LINE_COMMENT, this.getContentType(source, 0)); ! assertEquals(RubyPartitionScanner.SINGLE_LINE_COMMENT, this.getContentType(source, 1)); ! assertEquals(RubyPartitionScanner.SINGLE_LINE_COMMENT, this.getContentType(source, 18)); ! } ! ! public void testRecognizeSpecialCase() { ! String source = "a,b=?#,'This is not a comment!'\n"; ! ! assertEquals(IDocument.DEFAULT_CONTENT_TYPE, this.getContentType(source, 5)); ! assertEquals(IDocument.DEFAULT_CONTENT_TYPE, this.getContentType(source, 6)); ! } ! ! public void testMultilineComment() { ! String source = "=begin\nComment\n=end"; ! assertEquals(RubyPartitionScanner.MULTI_LINE_COMMENT, this.getContentType(source, 0)); ! assertEquals(RubyPartitionScanner.MULTI_LINE_COMMENT, this.getContentType(source, 10)); ! } ! ! public void testMultilineCommentNotOnFirstColumn() { ! String source = " =begin\nComment\n=end"; ! ! assertEquals(IDocument.DEFAULT_CONTENT_TYPE, this.getContentType(source, 0)); ! assertEquals(IDocument.DEFAULT_CONTENT_TYPE, this.getContentType(source, 1)); ! assertEquals(IDocument.DEFAULT_CONTENT_TYPE, this.getContentType(source, 2)); ! assertEquals(IDocument.DEFAULT_CONTENT_TYPE, this.getContentType(source, 10)); ! } ! ! ! public void testHereDocOK() { ! String source = "puts <<TEST\nMyName\nTEST"; ! assertEquals(RubyPartitionScanner.STRING, this.getContentType(source, 5)); ! ! source = "puts <<-TEST\nMyName\nTEST\nputs 'ab'"; ! assertEquals(RubyPartitionScanner.STRING, this.getContentType(source, 5)); ! ! source = "puts <<\"TEST\"\nMyName\nTEST"; ! assertEquals(RubyPartitionScanner.STRING, this.getContentType(source, 5)); ! ! source = "puts <<'TEST'\nMyName\nTEST"; ! assertEquals(RubyPartitionScanner.STRING, this.getContentType(source, 5)); ! ! source = "puts <<-'ax%&'\nMyName\nax%&"; ! assertEquals(RubyPartitionScanner.STRING, this.getContentType(source, 5)); ! } + + public void testNoHereDoc() { + + // space after << + String source = "puts << 'abc'"; + + assertEquals(IDocument.DEFAULT_CONTENT_TYPE, this.getContentType(source, 5)); + // normaler String + assertEquals(RubyPartitionScanner.STRING, this.getContentType(source, 9)); + + // end not on first column + source = "puts <<HERE\n HERE" ; + assertEquals(IDocument.DEFAULT_CONTENT_TYPE, this.getContentType(source, 5)); + source = "puts <<-"; // whatever that means in ruby + assertEquals(IDocument.DEFAULT_CONTENT_TYPE, this.getContentType(source, 5)); + + // recognize keyword end although there is no matching HERE + // this assures that there are no tokens eaten + source = "puts <<HERE\nend\n" ; + assertEquals(IDocument.DEFAULT_CONTENT_TYPE, this.getContentType(source, 14)); + + source = "puts <<'abc'\ntest" ; + assertEquals(IDocument.DEFAULT_CONTENT_TYPE, this.getContentType(source, 6)); + + source = "puts <<'abc'\ntest\nabd" ; + assertEquals(IDocument.DEFAULT_CONTENT_TYPE, this.getContentType(source, 6)); + } + } |