package org.rubypeople.rdt.internal.core.search; import org.rubypeople.rdt.internal.core.util.CharOperation; import junit.framework.TestCase; public class MethodPatternParserTest extends TestCase { public void testSelectorOnly() { MethodPatternParser parser = new MethodPatternParser(); parser.parse("run"); assertStringEqualsCharArray("run", parser.getSelector()); assertNull(parser.getTypeSimpleName()); assertNull(parser.getQualifiedTypeName()); assertNull(parser.getParameterNames()); } public void testSimpleTypeNameWithSelector() { MethodPatternParser parser = new MethodPatternParser(); parser.parse("MyClass.run"); assertStringEqualsCharArray("run", parser.getSelector()); assertStringEqualsCharArray("MyClass", parser.getTypeSimpleName()); assertStringEqualsCharArray("MyClass", parser.getQualifiedTypeName()); assertNull(parser.getParameterNames()); } public void testQualifiedTypeNameWithSelector() { MethodPatternParser parser = new MethodPatternParser(); parser.parse("ActiveRecord::Base.run"); assertStringEqualsCharArray("run", parser.getSelector()); assertStringEqualsCharArray("Base", parser.getTypeSimpleName()); assertStringEqualsCharArray("ActiveRecord::Base", parser.getQualifiedTypeName()); assertNull(parser.getParameterNames()); } public void testQualifiedTypeNameWithSelectorAndParameters() { MethodPatternParser parser = new MethodPatternParser(); parser.parse("ActiveRecord::Base.run(arg1, arg2)"); assertStringEqualsCharArray("run", parser.getSelector()); assertStringEqualsCharArray("Base", parser.getTypeSimpleName()); assertStringEqualsCharArray("ActiveRecord::Base", parser.getQualifiedTypeName()); assertTrue(CharOperation.equals(new char[][] {"arg1".toCharArray(), "arg2".toCharArray()}, parser.getParameterNames())); } private void assertStringEqualsCharArray(String string, char[] selector) { assertTrue(CharOperation.equals(string.toCharArray(), selector)); } }