|
From: <caw...@us...> - 2007-07-19 19:07:35
|
Revision: 2803
http://svn.sourceforge.net/rubyeclipse/?rev=2803&view=rev
Author: cawilliams
Date: 2007-07-19 12:07:17 -0700 (Thu, 19 Jul 2007)
Log Message:
-----------
add test and fix for some nasty heredoc syntax that was breaking editor
Modified Paths:
--------------
trunk/org.rubypeople.rdt.ui.tests/src/org/rubypeople/rdt/internal/ui/text/TC_RubyPartitionScanner.java
Modified: trunk/org.rubypeople.rdt.ui.tests/src/org/rubypeople/rdt/internal/ui/text/TC_RubyPartitionScanner.java
===================================================================
--- trunk/org.rubypeople.rdt.ui.tests/src/org/rubypeople/rdt/internal/ui/text/TC_RubyPartitionScanner.java 2007-07-19 19:07:12 UTC (rev 2802)
+++ trunk/org.rubypeople.rdt.ui.tests/src/org/rubypeople/rdt/internal/ui/text/TC_RubyPartitionScanner.java 2007-07-19 19:07:17 UTC (rev 2803)
@@ -16,6 +16,10 @@
*/
public class TC_RubyPartitionScanner extends TestCase {
+ private void assertContentType(String contentType, String code, int offset) {
+ assertEquals("Content type doesn't match expectations for: " + code.charAt(offset), contentType, getContentType(code, offset));
+ }
+
private String getContentType(String content, int offset) {
IDocument doc = new Document(content);
FastPartitioner partitioner = new FastPartitioner(new MergingPartitionScanner(), RubyPartitionScanner.LEGAL_CONTENT_TYPES);
@@ -24,104 +28,103 @@
}
public void testUnclosedInterpolationDoesntInfinitelyLoop() {
- String source = "%[\"#{\"]";
- this.getContentType(source, 0);
+ getContentType("%[\"#{\"]", 0);
assert(true);
}
public void testPartitioningOfSingleLineComment() {
String source = "# This is a comment\n";
- assertEquals(RubyPartitionScanner.RUBY_SINGLE_LINE_COMMENT, this.getContentType(source, 0));
- assertEquals(RubyPartitionScanner.RUBY_SINGLE_LINE_COMMENT, this.getContentType(source, 1));
- assertEquals(RubyPartitionScanner.RUBY_SINGLE_LINE_COMMENT, this.getContentType(source, 18));
+ assertContentType(RubyPartitionScanner.RUBY_SINGLE_LINE_COMMENT, source, 0);
+ assertContentType(RubyPartitionScanner.RUBY_SINGLE_LINE_COMMENT, source, 1);
+ assertContentType(RubyPartitionScanner.RUBY_SINGLE_LINE_COMMENT, source, 18);
}
public void testRecognizeSpecialCase() {
String source = "a,b=?#,'This is not a comment!'\n";
- assertEquals(RubyPartitionScanner.RUBY_DEFAULT, this.getContentType(source, 5));
- assertEquals(RubyPartitionScanner.RUBY_DEFAULT, this.getContentType(source, 6));
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, source, 5);
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, source, 6);
}
public void testMultilineComment() {
String source = "=begin\nComment\n=end";
- assertEquals(RubyPartitionScanner.RUBY_MULTI_LINE_COMMENT, this.getContentType(source, 0));
- assertEquals(RubyPartitionScanner.RUBY_MULTI_LINE_COMMENT, this.getContentType(source, 10));
+ assertContentType(RubyPartitionScanner.RUBY_MULTI_LINE_COMMENT, source, 0);
+ assertContentType(RubyPartitionScanner.RUBY_MULTI_LINE_COMMENT, source, 10);
source = "=begin\n"+
" for multiline comments, the =begin and =end must\n" +
" appear in the first column\n" +
"=end";
- assertEquals(RubyPartitionScanner.RUBY_MULTI_LINE_COMMENT, this.getContentType(source, 0));
- assertEquals(RubyPartitionScanner.RUBY_MULTI_LINE_COMMENT, this.getContentType(source, source.length() / 2));
- assertEquals(RubyPartitionScanner.RUBY_MULTI_LINE_COMMENT, this.getContentType(source, source.length() - 2));
+ assertContentType(RubyPartitionScanner.RUBY_MULTI_LINE_COMMENT, source, 0);
+ assertContentType(RubyPartitionScanner.RUBY_MULTI_LINE_COMMENT, source, source.length() / 2);
+ assertContentType(RubyPartitionScanner.RUBY_MULTI_LINE_COMMENT, source, source.length() - 2);
}
public void testMultilineCommentNotOnFirstColumn() {
String source = " =begin\nComment\n=end";
- assertEquals(RubyPartitionScanner.RUBY_DEFAULT, this.getContentType(source, 0));
- assertEquals(RubyPartitionScanner.RUBY_DEFAULT, this.getContentType(source, 1));
- assertEquals(RubyPartitionScanner.RUBY_DEFAULT, this.getContentType(source, 2));
- assertEquals(RubyPartitionScanner.RUBY_DEFAULT, this.getContentType(source, 10));
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, source, 0);
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, source, 1);
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, source, 2);
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, source, 10);
}
public void testRecognizeDivision() {
String source = "1/3 #This is a comment\n";
- assertEquals(RubyPartitionScanner.RUBY_DEFAULT, this.getContentType(source, 0));
- assertEquals(RubyPartitionScanner.RUBY_DEFAULT, this.getContentType(source, 3));
- assertEquals(RubyPartitionScanner.RUBY_SINGLE_LINE_COMMENT, this.getContentType(source, 5));
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, source, 0);
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, source, 3);
+ assertContentType(RubyPartitionScanner.RUBY_SINGLE_LINE_COMMENT, source, 5);
}
public void testRecognizeOddballCharacters() {
String source = "?\" #comment\n";
- assertEquals(RubyPartitionScanner.RUBY_DEFAULT, this.getContentType(source, 0));
- assertEquals(RubyPartitionScanner.RUBY_DEFAULT, this.getContentType(source, 2));
- assertEquals(RubyPartitionScanner.RUBY_SINGLE_LINE_COMMENT, this.getContentType(source, 5));
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, source, 0);
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, source, 2);
+ assertContentType(RubyPartitionScanner.RUBY_SINGLE_LINE_COMMENT, source, 5);
source = "?' #comment\n";
- assertEquals(RubyPartitionScanner.RUBY_DEFAULT, this.getContentType(source, 0));
- assertEquals(RubyPartitionScanner.RUBY_DEFAULT, this.getContentType(source, 2));
- assertEquals(RubyPartitionScanner.RUBY_SINGLE_LINE_COMMENT, this.getContentType(source, 5));
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, source, 0);
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, source, 2);
+ assertContentType(RubyPartitionScanner.RUBY_SINGLE_LINE_COMMENT, source, 5);
source = "?/ #comment\n";
- assertEquals(RubyPartitionScanner.RUBY_DEFAULT, this.getContentType(source, 0));
- assertEquals(RubyPartitionScanner.RUBY_DEFAULT, this.getContentType(source, 2));
- assertEquals(RubyPartitionScanner.RUBY_SINGLE_LINE_COMMENT, this.getContentType(source, 5));
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, source, 0);
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, source, 2);
+ assertContentType(RubyPartitionScanner.RUBY_SINGLE_LINE_COMMENT, source, 5);
}
public void testPoundCharacterIsntAComment() {
String source = "?#";
- assertEquals(RubyPartitionScanner.RUBY_DEFAULT, this.getContentType(source, 1));
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, source, 1);
}
public void testSinglelineCommentJustAfterMultilineComment() {
String source = "=begin\nComment\n=end\n# this is a singleline comment\n";
- assertEquals(RubyPartitionScanner.RUBY_MULTI_LINE_COMMENT, this.getContentType(source, 0));
- assertEquals(RubyPartitionScanner.RUBY_MULTI_LINE_COMMENT, this.getContentType(source, 10));
- assertEquals(RubyPartitionScanner.RUBY_SINGLE_LINE_COMMENT, this.getContentType(source, source.length() - 5));
+ assertContentType(RubyPartitionScanner.RUBY_MULTI_LINE_COMMENT, source, 0);
+ assertContentType(RubyPartitionScanner.RUBY_MULTI_LINE_COMMENT, source, 10);
+ assertContentType(RubyPartitionScanner.RUBY_SINGLE_LINE_COMMENT, source, source.length() - 5);
}
public void testMultipleCommentsInARow() {
String code = "# comment 1\n# comment 2\nclass Chris\nend\n";
- assertEquals(RubyPartitionScanner.RUBY_SINGLE_LINE_COMMENT, this.getContentType(code, 6));
- assertEquals(RubyPartitionScanner.RUBY_SINGLE_LINE_COMMENT, this.getContentType(code, 17));
- assertEquals(RubyPartitionScanner.RUBY_DEFAULT, this.getContentType(code, 26));
- assertEquals(RubyPartitionScanner.RUBY_DEFAULT, this.getContentType(code, 29));
+ assertContentType(RubyPartitionScanner.RUBY_SINGLE_LINE_COMMENT, code, 6);
+ assertContentType(RubyPartitionScanner.RUBY_SINGLE_LINE_COMMENT, code, 17);
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, code, 26);
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, code, 29);
}
public void testCommentAfterEnd() {
String code = "class Chris\nend # comment\n";
- assertEquals(RubyPartitionScanner.RUBY_DEFAULT, this.getContentType(code, 12));
- assertEquals(RubyPartitionScanner.RUBY_SINGLE_LINE_COMMENT, this.getContentType(code, 17));
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, code, 12);
+ assertContentType(RubyPartitionScanner.RUBY_SINGLE_LINE_COMMENT, code, 17);
}
public void testCommentAfterEndWhileEditing() {
@@ -134,8 +137,8 @@
" def thing\r\n" +
" end #ocmm \r\n" +
"end";
- assertEquals(RubyPartitionScanner.RUBY_DEFAULT, this.getContentType(code, 76));
- assertEquals(RubyPartitionScanner.RUBY_SINGLE_LINE_COMMENT, this.getContentType(code, 83));
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, code, 76);
+ assertContentType(RubyPartitionScanner.RUBY_SINGLE_LINE_COMMENT, code, 83);
}
public void testCommentAtEndOfLineWithStringAtBeginning() {
@@ -144,18 +147,18 @@
" 123\n" +
" }\n" +
"}";
- assertEquals(RubyPartitionScanner.RUBY_DEFAULT, this.getContentType(code, 0));
- assertEquals(RubyPartitionScanner.RUBY_DEFAULT, this.getContentType(code, 4));
- assertEquals(RubyPartitionScanner.RUBY_DEFAULT, this.getContentType(code, 6));
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, code, 0);
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, code, 4);
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, code, 6);
- assertEquals(RubyPartitionScanner.RUBY_STRING, this.getContentType(code, 8));
- assertEquals(RubyPartitionScanner.RUBY_STRING, this.getContentType(code, 12));
- assertEquals(RubyPartitionScanner.RUBY_STRING, this.getContentType(code, 18));
+ assertContentType(RubyPartitionScanner.RUBY_STRING, code, 8);
+ assertContentType(RubyPartitionScanner.RUBY_STRING, code, 12);
+ assertContentType(RubyPartitionScanner.RUBY_STRING, code, 18);
- assertEquals(RubyPartitionScanner.RUBY_DEFAULT, this.getContentType(code, 19));
- assertEquals(RubyPartitionScanner.RUBY_DEFAULT, this.getContentType(code, 22));
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, code, 19);
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, code, 22);
- assertEquals(RubyPartitionScanner.RUBY_SINGLE_LINE_COMMENT, this.getContentType(code, 25));
+ assertContentType(RubyPartitionScanner.RUBY_SINGLE_LINE_COMMENT, code, 25);
}
public void testLinesWithJustSpaceBeforeComment() {
@@ -164,125 +167,108 @@
" def method\n" +
" \n" +
" end";
- assertEquals(RubyPartitionScanner.RUBY_SINGLE_LINE_COMMENT, this.getContentType(code, 5));
- assertEquals(RubyPartitionScanner.RUBY_DEFAULT, this.getContentType(code, 14));
- assertEquals(RubyPartitionScanner.RUBY_DEFAULT, this.getContentType(code, 20));
+ assertContentType(RubyPartitionScanner.RUBY_SINGLE_LINE_COMMENT, code, 5);
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, code, 14);
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, code, 20);
}
public void testCommentsWithAlotOfPrecedingSpaces() {
String code = " # We \n" +
" # caller-requested until.\n" +
"return self\n";
- assertEquals(RubyPartitionScanner.RUBY_SINGLE_LINE_COMMENT, this.getContentType(code, 16));
- assertEquals(RubyPartitionScanner.RUBY_DEFAULT, this.getContentType(code, 63));
- assertEquals(RubyPartitionScanner.RUBY_DEFAULT, this.getContentType(code, 70));
+ assertContentType(RubyPartitionScanner.RUBY_SINGLE_LINE_COMMENT, code, 16);
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, code, 63);
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, code, 70);
}
public void testCodeWithinString() {
String code = "string = \"here's some code: #{1} there\"";
- assertEquals(RubyPartitionScanner.RUBY_DEFAULT, this.getContentType(code, 2)); // st'r'...
- assertEquals(RubyPartitionScanner.RUBY_STRING, this.getContentType(code, 10)); // "'h'er...
- assertEquals(RubyPartitionScanner.RUBY_STRING, this.getContentType(code, 28)); // '#'{1...
- assertEquals(RubyPartitionScanner.RUBY_DEFAULT, this.getContentType(code, 30)); // '1'} t...
- assertEquals(RubyPartitionScanner.RUBY_STRING, this.getContentType(code, 31)); // '}' th...
- assertEquals(RubyPartitionScanner.RUBY_STRING, this.getContentType(code, 35)); // th'e're..
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, code, 2); // st'r'...
+ assertContentType(RubyPartitionScanner.RUBY_STRING, code, 10); // "'h'er...
+ assertContentType(RubyPartitionScanner.RUBY_STRING, code, 28); // '#'{1...
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, code, 30); // '1'} t...
+ assertContentType(RubyPartitionScanner.RUBY_STRING, code, 31); // '}' th...
+ assertContentType(RubyPartitionScanner.RUBY_STRING, code, 35); // th'e're..
}
public void testCodeWithinSingleQuoteString() {
String code = "string = 'here s some code: #{1} there'";
- assertEquals(RubyPartitionScanner.RUBY_DEFAULT, this.getContentType(code, 2)); // st'r'...
- assertEquals(RubyPartitionScanner.RUBY_STRING, this.getContentType(code, 10)); // "'h'er...
- assertEquals(RubyPartitionScanner.RUBY_STRING, this.getContentType(code, 28)); // '#'{1...
- assertEquals(RubyPartitionScanner.RUBY_STRING, this.getContentType(code, 30)); // '1'} t...
- assertEquals(RubyPartitionScanner.RUBY_STRING, this.getContentType(code, 31)); // '}' th...
- assertEquals(RubyPartitionScanner.RUBY_STRING, this.getContentType(code, 35)); // th'e're..
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, code, 2); // st'r'...
+ assertContentType(RubyPartitionScanner.RUBY_STRING, code, 10); // "'h'er...
+ assertContentType(RubyPartitionScanner.RUBY_STRING, code, 28); // '#'{1...
+ assertContentType(RubyPartitionScanner.RUBY_STRING, code, 30); // '1'} t...
+ assertContentType(RubyPartitionScanner.RUBY_STRING, code, 31); // '}' th...
+ assertContentType(RubyPartitionScanner.RUBY_STRING, code, 35); // th'e're..
}
public void testVariableSubstitutionWithinString() {
String code = "string = \"here's some code: #$global there\"";
- assertEquals(RubyPartitionScanner.RUBY_DEFAULT, this.getContentType(code, 2)); // st'r'...
- assertEquals(RubyPartitionScanner.RUBY_STRING, this.getContentType(code, 10)); // "'h'er...
- assertEquals(RubyPartitionScanner.RUBY_STRING, this.getContentType(code, 28)); // '#'$glo...
- assertEquals(RubyPartitionScanner.RUBY_DEFAULT, this.getContentType(code, 29)); // '$'global
- assertEquals(RubyPartitionScanner.RUBY_STRING, this.getContentType(code, 36));// ' 'there...
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, code, 2); // st'r'...
+ assertContentType(RubyPartitionScanner.RUBY_STRING, code, 10); // "'h'er...
+ assertContentType(RubyPartitionScanner.RUBY_STRING, code, 28); // '#'$glo...
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, code, 29); // '$'global
+ assertContentType(RubyPartitionScanner.RUBY_STRING, code, 36);// ' 'there...
}
public void testStringWithinCodeWithinString() {
String code = "string = \"here's some code: #{var = 'string'} there\"";
- assertEquals(RubyPartitionScanner.RUBY_DEFAULT, this.getContentType(code, 2)); // st'r'...
- assertEquals(RubyPartitionScanner.RUBY_STRING, this.getContentType(code, 10)); // "'h'er...
- assertEquals(RubyPartitionScanner.RUBY_STRING, this.getContentType(code, 28)); // '#'{var
- assertEquals(RubyPartitionScanner.RUBY_DEFAULT, this.getContentType(code, 30)); // 'v'ar =
- assertEquals(RubyPartitionScanner.RUBY_STRING, this.getContentType(code, 36)); // '''string
- assertEquals(RubyPartitionScanner.RUBY_STRING, this.getContentType(code, 46)); // 't'here
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, code, 2); // st'r'...
+ assertContentType(RubyPartitionScanner.RUBY_STRING, code, 10); // "'h'er...
+ assertContentType(RubyPartitionScanner.RUBY_STRING, code, 28); // '#'{var
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, code, 30); // 'v'ar =
+ assertContentType(RubyPartitionScanner.RUBY_STRING, code, 36); // '''string
+ assertContentType(RubyPartitionScanner.RUBY_STRING, code, 46); // 't'here
}
public void testStringWithEndBraceWithinCodeWithinString() {
String code = "string = \"here's some code: #{var = '}'; 1} there\"";
- assertEquals(RubyPartitionScanner.RUBY_DEFAULT, this.getContentType(code, 2)); // st'r'...
- assertEquals(RubyPartitionScanner.RUBY_STRING, this.getContentType(code, 10)); // "'h'er...
- assertEquals(RubyPartitionScanner.RUBY_STRING, this.getContentType(code, 28)); // '#'{var
- assertEquals(RubyPartitionScanner.RUBY_DEFAULT, this.getContentType(code, 30)); // 'v'ar =
- assertEquals(RubyPartitionScanner.RUBY_STRING, this.getContentType(code, 37)); // '}';
- assertEquals(RubyPartitionScanner.RUBY_DEFAULT, this.getContentType(code, 39)); // ';' 1}
- assertEquals(RubyPartitionScanner.RUBY_DEFAULT, this.getContentType(code, 41)); // ; '1'}
- assertEquals(RubyPartitionScanner.RUBY_STRING, this.getContentType(code, 42)); // 1'}' t
- assertEquals(RubyPartitionScanner.RUBY_STRING, this.getContentType(code, 44)); // 't'here
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, code, 2); // st'r'...
+ assertContentType(RubyPartitionScanner.RUBY_STRING, code, 10); // "'h'er...
+ assertContentType(RubyPartitionScanner.RUBY_STRING, code, 28); // '#'{var
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, code, 30); // 'v'ar =
+ assertContentType(RubyPartitionScanner.RUBY_STRING, code, 37); // '}';
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, code, 39); // ';' 1}
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, code, 41); // ; '1'}
+ assertContentType(RubyPartitionScanner.RUBY_STRING, code, 42); // 1'}' t
+ assertContentType(RubyPartitionScanner.RUBY_STRING, code, 44); // 't'here
}
public void testRegex() {
String code = "regex = /hi there/";
- assertEquals(RubyPartitionScanner.RUBY_DEFAULT, this.getContentType(code, 2)); // re'g'ex
- assertEquals(RubyPartitionScanner.RUBY_REGULAR_EXPRESSION, this.getContentType(code, 9)); // '/'hi the
- assertEquals(RubyPartitionScanner.RUBY_REGULAR_EXPRESSION, this.getContentType(code, 11)); // /h'i' the
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, code, 2); // re'g'ex
+ assertContentType(RubyPartitionScanner.RUBY_REGULAR_EXPRESSION, code, 9); // '/'hi the
+ assertContentType(RubyPartitionScanner.RUBY_REGULAR_EXPRESSION, code, 11); // /h'i' the
}
public void testRegexWithDynamicCode() {
String code = "/\\.#{Regexp.escape(extension.to_s)}$/ # comment";
- assertEquals(RubyPartitionScanner.RUBY_REGULAR_EXPRESSION, this.getContentType(code, 3));
- assertEquals(RubyPartitionScanner.RUBY_SINGLE_LINE_COMMENT, this.getContentType(code, 38)); // '#' co
- assertEquals(RubyPartitionScanner.RUBY_SINGLE_LINE_COMMENT, this.getContentType(code, 40)); // # 'c'ommen
+ assertContentType(RubyPartitionScanner.RUBY_REGULAR_EXPRESSION, code, 3);
+ assertContentType(RubyPartitionScanner.RUBY_SINGLE_LINE_COMMENT, code, 38); // '#' co
+ assertContentType(RubyPartitionScanner.RUBY_SINGLE_LINE_COMMENT, code, 40); // # 'c'ommen
}
- public void testWronglyColoredHeredoc() {
- // FIXME Something is weird, this test passes, and it works in a normal editor, but is broken in ActiveRecord::Base externally
- String code = "def destroy\n" +
-" unless new_record?\n" +
-" connection.delete <<-end_sql, \"#{self.class.name} Destroy\"\n" +
-" DELETE FROM #{self.class.table_name}\n" +
-" WHERE #{connection.quote_column_name(self.class.primary_key)} = #{quoted_id}\n" +
-" end_sql\n" +
-" end\n" +
-" \n" +
-" freeze\n" +
-"end";
- assertEquals(RubyPartitionScanner.RUBY_STRING, this.getContentType(code, 58)); // <<-'e'nd_sql
- assertEquals(RubyPartitionScanner.RUBY_DEFAULT, this.getContentType(code, code.length() - 8)); // fr'e'eze
- assertEquals(RubyPartitionScanner.RUBY_DEFAULT, this.getContentType(code, code.length() - 2)); // e'n'd
- }
-
public void testEscapedCharactersAndSingleQuoteInsideDoubleQuote() {
String code = "quoted_value = \"'#{quoted_value[1..-2].gsub(/\\'/, \"\\\\\\\\'\")}'\" if quoted_value.include?(\"\\\\\\'\") # (for ruby mode) \"\n" +
"quoted_value";
- assertEquals(RubyPartitionScanner.RUBY_STRING, this.getContentType(code, 16)); //
- assertEquals(RubyPartitionScanner.RUBY_DEFAULT, this.getContentType(code, 19)); // #{'q'uoted
- assertEquals(RubyPartitionScanner.RUBY_REGULAR_EXPRESSION, this.getContentType(code, 44)); // /
- assertEquals(RubyPartitionScanner.RUBY_STRING, this.getContentType(code, 51)); // "\
- assertEquals(RubyPartitionScanner.RUBY_STRING, this.getContentType(code, 59)); // '" if
- assertEquals(RubyPartitionScanner.RUBY_DEFAULT, this.getContentType(code, 62)); // 'i'f quoted_
- assertEquals(RubyPartitionScanner.RUBY_STRING, this.getContentType(code, 87)); // include?('"'
- assertEquals(RubyPartitionScanner.RUBY_SINGLE_LINE_COMMENT, this.getContentType(code, 95)); //'#' (for ruby mode)
- assertEquals(RubyPartitionScanner.RUBY_DEFAULT, this.getContentType(code, code.length() - 3));
+ assertContentType(RubyPartitionScanner.RUBY_STRING, code, 16); //
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, code, 19); // #{'q'uoted
+ assertContentType(RubyPartitionScanner.RUBY_REGULAR_EXPRESSION, code, 44); // /
+ assertContentType(RubyPartitionScanner.RUBY_STRING, code, 51); // "\
+ assertContentType(RubyPartitionScanner.RUBY_STRING, code, 59); // '" if
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, code, 62); // 'i'f quoted_
+ assertContentType(RubyPartitionScanner.RUBY_STRING, code, 87); // include?('"'
+ assertContentType(RubyPartitionScanner.RUBY_SINGLE_LINE_COMMENT, code, 95); //'#' (for ruby mode)
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, code, code.length() - 3);
}
public void testSingleQuotedString() {
String code = "require 'commands/server'";
- assertEquals(RubyPartitionScanner.RUBY_DEFAULT, this.getContentType(code, 1));
- assertEquals(RubyPartitionScanner.RUBY_STRING, this.getContentType(code, 8));
- assertEquals(RubyPartitionScanner.RUBY_STRING, this.getContentType(code, 9));
- assertEquals(RubyPartitionScanner.RUBY_STRING, this.getContentType(code, 17));
- assertEquals(RubyPartitionScanner.RUBY_STRING, this.getContentType(code, 18));
- assertEquals(RubyPartitionScanner.RUBY_STRING, this.getContentType(code, 24));
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, code, 1);
+ assertContentType(RubyPartitionScanner.RUBY_STRING, code, 8);
+ assertContentType(RubyPartitionScanner.RUBY_STRING, code, 9);
+ assertContentType(RubyPartitionScanner.RUBY_STRING, code, 17);
+ assertContentType(RubyPartitionScanner.RUBY_STRING, code, 18);
+ assertContentType(RubyPartitionScanner.RUBY_STRING, code, 24);
}
public void testCommands() {
@@ -290,29 +276,50 @@
" `mongrel_rails #{parameters.join(\" \")} -d`\n" +
"else\n" +
" ENV[\"RAILS_ENV\"] = OPTIONS[:environment]";
- assertEquals(RubyPartitionScanner.RUBY_DEFAULT, this.getContentType(code, 1));
- assertEquals(RubyPartitionScanner.RUBY_COMMAND, this.getContentType(code, 22));
- assertEquals(RubyPartitionScanner.RUBY_COMMAND, this.getContentType(code, 23));
- assertEquals(RubyPartitionScanner.RUBY_COMMAND, this.getContentType(code, 38));
- assertEquals(RubyPartitionScanner.RUBY_DEFAULT, this.getContentType(code, 50));
- assertEquals(RubyPartitionScanner.RUBY_STRING, this.getContentType(code, 55));
- assertEquals(RubyPartitionScanner.RUBY_DEFAULT, this.getContentType(code, 58));
- assertEquals(RubyPartitionScanner.RUBY_COMMAND, this.getContentType(code, 59));
- assertEquals(RubyPartitionScanner.RUBY_COMMAND, this.getContentType(code, 63));
- assertEquals(RubyPartitionScanner.RUBY_DEFAULT, this.getContentType(code, 65));
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, code, 1);
+ assertContentType(RubyPartitionScanner.RUBY_COMMAND, code, 22);
+ assertContentType(RubyPartitionScanner.RUBY_COMMAND, code, 23);
+ assertContentType(RubyPartitionScanner.RUBY_COMMAND, code, 38);
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, code, 50);
+ assertContentType(RubyPartitionScanner.RUBY_STRING, code, 55);
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, code, 58);
+ assertContentType(RubyPartitionScanner.RUBY_COMMAND, code, 59);
+ assertContentType(RubyPartitionScanner.RUBY_COMMAND, code, 63);
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, code, 65);
}
public void testPercentXCommand() {
String code = "if (@options.do_it)\n" +
" %x{#{cmd}}\n" +
"end\n";
- assertEquals(RubyPartitionScanner.RUBY_DEFAULT, this.getContentType(code, 1)); // i'f'
- assertEquals(RubyPartitionScanner.RUBY_COMMAND, this.getContentType(code, 22)); // '%'x
- assertEquals(RubyPartitionScanner.RUBY_COMMAND, this.getContentType(code, 24)); // %x'{'
- assertEquals(RubyPartitionScanner.RUBY_DEFAULT, this.getContentType(code, 27)); //'c'md
- assertEquals(RubyPartitionScanner.RUBY_COMMAND, this.getContentType(code, 30)); // cmd'}'
- assertEquals(RubyPartitionScanner.RUBY_COMMAND, this.getContentType(code, 31)); // cmd}'}'
- assertEquals(RubyPartitionScanner.RUBY_DEFAULT, this.getContentType(code, 33)); //'e'nd
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, code, 1); // i'f'
+ assertContentType(RubyPartitionScanner.RUBY_COMMAND, code, 22); // '%'x
+ assertContentType(RubyPartitionScanner.RUBY_COMMAND, code, 24); // %x'{'
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, code, 27); //'c'md
+ assertContentType(RubyPartitionScanner.RUBY_COMMAND, code, 30); // cmd'}'
+ assertContentType(RubyPartitionScanner.RUBY_COMMAND, code, 31); // cmd}'}'
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, code, 33); //'e'nd
}
+
+ public void testHeredocInArgumentList() {
+ String code = "connection.delete <<-end_sql, \"#{self.class.name} Destroy\"\n" +
+ " DELETE FROM #{self.class.table_name}\n" +
+ " WHERE #{connection.quote_column_name(self.class.primary_key)} = #{quoted_id}\n" +
+ "end_sql\n";
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, code, 1); // c'o'nnection
+ assertContentType(RubyPartitionScanner.RUBY_STRING, code, 18); // '<'<-end_sql
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, code, 33); // 's'elf.class
+ assertContentType(RubyPartitionScanner.RUBY_STRING, code, 48); // '}' Destroy
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, code, 75); // 's'elf.class
+ assertContentType(RubyPartitionScanner.RUBY_STRING, code, 96); // name'}'\n
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, code, 108); // {'c'onnection
+ assertContentType(RubyPartitionScanner.RUBY_STRING, code, 160); // '}' =
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, code, 166); // {'q'uoted
+ assertContentType(RubyPartitionScanner.RUBY_STRING, code, 175); // _id'}'\n
+ assertContentType(RubyPartitionScanner.RUBY_STRING, code, 177); // 'e'nd_sql
+ }
+
+ // TODO Handle yet even wackier heredoc syntax: http://blog.jayfields.com/2006/12/ruby-multiline-strings-here-doc-or.html
+
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|