|
From: <jas...@us...> - 2006-06-30 04:10:10
|
Revision: 1503 Author: jasonpmorrison Date: 2006-06-29 21:10:03 -0700 (Thu, 29 Jun 2006) ViewCVS: http://svn.sourceforge.net/rubyeclipse/?rev=1503&view=rev Log Message: ----------- - Added additional local var matching - Added instance var matching Modified Paths: -------------- branches/type_inferrence/trunk/org.rubypeople.rdt.core.tests/src/org/rubypeople/rdt/internal/ti/ReferenceMatchTest.java Modified: branches/type_inferrence/trunk/org.rubypeople.rdt.core.tests/src/org/rubypeople/rdt/internal/ti/ReferenceMatchTest.java =================================================================== --- branches/type_inferrence/trunk/org.rubypeople.rdt.core.tests/src/org/rubypeople/rdt/internal/ti/ReferenceMatchTest.java 2006-06-29 19:17:08 UTC (rev 1502) +++ branches/type_inferrence/trunk/org.rubypeople.rdt.core.tests/src/org/rubypeople/rdt/internal/ti/ReferenceMatchTest.java 2006-06-30 04:10:03 UTC (rev 1503) @@ -19,8 +19,9 @@ referenceFinder = new DefaultReferenceFinder(); } - private void assertReferencesEquals( String source, List<ISourcePosition> references, int[][] offsets, String matchName ) + private void assertReferencesEquals( String source, int offset, String matchName, int[][] offsets ) { + List <ISourcePosition> references = referenceFinder.findReferences(source, offset); assertEquals( offsets.length, references.size() ); for ( int i = 0; i < offsets.length; i++ ) { @@ -29,16 +30,59 @@ assertEquals( matchName, source.substring(references.get(i).getStartOffset(), references.get(i).getEndOffset())); } } + + /** + * Match locals within ClassNode::DefnNode + */ public void testLocalVariableMatches() { String source = "class Klass;def foo(x);puts x*2;end;def bar;my_var = 5;my_var = 6;puts my_var;foo(my_var);end;end"; - List <ISourcePosition> references = referenceFinder.findReferences(source, 46); - assertEquals( 4, references.size() ); - int[][] offsets = {{44,50},{55,61},{71,77},{82,88}}; - String matchName = "my_var"; - - assertReferencesEquals( source, references, offsets, matchName ); - + assertReferencesEquals( source, 46, "my_var", offsets ); } + + /** + * Match locals within Kernel::DefnNode + */ + public void testLocalVariablesInKernelDefnScope() { + String source = "def foo;my_var=5;puts my_var*2;end"; + int[][] offsets = {{8,14},{22,28}}; + assertReferencesEquals( source, 10, "my_var", offsets ); + } + + /** + * Match locals in Kernel + */ + public void testLocalVariablesInKernelScope() { + String source = "my_var = 5;puts my_var*2;other_var = my_var * my_var"; + int[][] offsets = {{0,6},{16,22},{37,43},{46,52}}; + assertReferencesEquals( source, 1, "my_var", offsets ); + } + + /** + * Match instance vars inside one ClassNode across DefnNode + */ + public void testInstanceVariableMatches() { + String source = "class Klass;def foo(param);@inst_var = param;puts @inst_var;end;def bar;y @inst_var;end;end"; + int[][] offsets = {{27,36},{50,59},{74,83}}; + assertReferencesEquals( source, 29, "@inst_var", offsets ); + } + /** + * Match instance vars inside two DefnNodes, each in a separate ClassNode (for the same class) + */ + public void testInstanceVariableMatchInReopenedClass() { + String source = "class Klass;def foo;@inst_var=5;end;end;class Klass;def bar;@inst_var=6;end;end"; + int[][] offsets = {{20,29},{60,69}}; + assertReferencesEquals( source, 23, "@inst_var", offsets ); + } + + /** + * Test matching a local variable before, inside, and after a block. + */ + public void testLocalVariableMatchesIntoBlockScope() { + String source = "class Klass;def foo;my_var = 5;5.times { puts my_var };puts my_var;end;end"; + int[][] offsets = {{20,26},{46,52},{60,66}}; + assertReferencesEquals( source, 23, "my_var", offsets ); + } + } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |