package org.rubypeople.rdt.internal.ui.text;
import junit.framework.TestCase;
import org.eclipse.jface.text.Document;
import org.eclipse.jface.text.IRegion;
public class TC_RubyWordFinder extends TestCase {
private static final String document =
"class Product < ActiveRecord::Base\n"+
" validates_presence_of :title, :description, :image_url\n"+
"end";
private IRegion findWord(int offset) {
return RubyWordFinder.findWord(new Document(document), offset);
}
private boolean regionEquals(IRegion region, int length){
return region.getLength() == length && region.getLength() == length;
}
private boolean isWordAtPosition(String word, int cursorPosition) {
return regionEquals(findWord(cursorPosition), word.length());
}
public void testFindFirstWord() {
assertTrue (isWordAtPosition("class", 0));
assertTrue (isWordAtPosition("class", 3));
assertTrue (isWordAtPosition("class", 4));
assertFalse(isWordAtPosition("class", 5));
assertNull(findWord(-1));
}
public void testFindWord() {
assertTrue (isWordAtPosition("Product", 6));
assertFalse(isWordAtPosition("Product", 5));
assertTrue (isWordAtPosition("Product", 12));
assertTrue (isWordAtPosition("ActiveRecord::Base", 16));
assertTrue (isWordAtPosition("<", 14));
}
public void testFindLastWord() {
assertTrue (isWordAtPosition("end", document.length() -1));
assertTrue (isWordAtPosition("end", document.length() -2));
assertTrue (isWordAtPosition("end", document.length() -3));
assertFalse(isWordAtPosition("end", document.length() -4));
assertNull(findWord(document.length()));
}
}