|
From: David C. <dc...@us...> - 2005-11-13 13:05:14
|
Update of /cvsroot/rubyeclipse/org.rubypeople.rdt.core.tests/src/org/rubypeople/rdt/internal/core/builder In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7002/src/org/rubypeople/rdt/internal/core/builder Modified Files: TC_MassIndexUpdater.java TC_IncrementalRdtCompiler.java TC_RubyCodeAnalyzer.java ShamSymbolIndex.java TC_IndexUpdater.java Added Files: ShamIndexUpdater.java Log Message: Optimize complation process so SymbolIndex is not flushed twice for each file. Index: TC_RubyCodeAnalyzer.java =================================================================== RCS file: /cvsroot/rubyeclipse/org.rubypeople.rdt.core.tests/src/org/rubypeople/rdt/internal/core/builder/TC_RubyCodeAnalyzer.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** TC_RubyCodeAnalyzer.java 12 Nov 2005 19:15:53 -0000 1.1 --- TC_RubyCodeAnalyzer.java 13 Nov 2005 13:05:07 -0000 1.2 *************** *** 16,20 **** import junit.framework.TestCase; - import org.eclipse.core.resources.IFile; import org.jruby.ast.Node; import org.jruby.ast.visitor.NodeVisitor; --- 16,19 ---- *************** *** 30,34 **** private ShamRubyParser parser; private RubyCodeAnalyzer compiler; ! private MockIndexUpdater indexUpdater; private Node rootNode; --- 29,33 ---- private ShamRubyParser parser; private RubyCodeAnalyzer compiler; ! private ShamIndexUpdater indexUpdater; private Node rootNode; *************** *** 48,52 **** parser = new ShamRubyParser(); parser.addParseResult(file, rootNode); ! indexUpdater = new MockIndexUpdater(); compiler = new RubyCodeAnalyzer(markerManager, parser, indexUpdater); } --- 47,51 ---- parser = new ShamRubyParser(); parser.addParseResult(file, rootNode); ! indexUpdater = new ShamIndexUpdater(); compiler = new RubyCodeAnalyzer(markerManager, parser, indexUpdater); } *************** *** 57,61 **** parser.assertParsed(file, FILE_CONTENTS); file.assertContentStreamClosed(); ! indexUpdater.assertUpdated(file, rootNode); } --- 56,60 ---- parser.assertParsed(file, FILE_CONTENTS); file.assertContentStreamClosed(); ! indexUpdater.assertUpdated(file, rootNode, true); } *************** *** 70,93 **** markerManager.assertErrorCreated(file, syntaxException); } - - private static final class MockIndexUpdater extends IndexUpdater { - - public MockIndexUpdater() { - super(null); - } - - private Node rootNodeArg; - private IFile fileArg; - - public void update(IFile file, Node rootNode) { - fileArg = file; - rootNodeArg = rootNode; - } - - public void assertUpdated(IFile expectedFile, Node expectedRootNode) { - assertEquals("File", expectedFile, fileArg); - assertEquals("Node", expectedRootNode, rootNodeArg); - } - } - } --- 69,71 ---- Index: TC_MassIndexUpdater.java =================================================================== RCS file: /cvsroot/rubyeclipse/org.rubypeople.rdt.core.tests/src/org/rubypeople/rdt/internal/core/builder/TC_MassIndexUpdater.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** TC_MassIndexUpdater.java 12 Nov 2005 19:15:53 -0000 1.3 --- TC_MassIndexUpdater.java 13 Nov 2005 13:05:07 -0000 1.4 *************** *** 12,23 **** import java.util.ArrayList; - import java.util.HashMap; import java.util.List; - import java.util.Map; import junit.framework.TestCase; - import org.eclipse.core.resources.IFile; - import org.jruby.ast.Node; import org.rubypeople.eclipse.shams.resources.ShamFile; import org.rubypeople.eclipse.shams.resources.ShamProject; --- 12,19 ---- *************** *** 61,86 **** parser.assertParsed(file3); ! updater.assertUpdated(file1, rootNode1); ! updater.assertUpdated(file2, rootNode2); ! updater.assertUpdated(file3, rootNode3); ! } ! ! private static class ShamIndexUpdater extends IndexUpdater { ! ! private Map updates = new HashMap(); ! ! public ShamIndexUpdater() { ! super(null); ! } ! ! public void assertUpdated(ShamFile expectedFile, ShamNode expectedNode) { ! assertTrue("Should have updated " + expectedFile, ! updates.containsKey(expectedFile)); ! assertEquals(expectedNode, updates.get(expectedFile)); ! } ! ! public void update(IFile file, Node rootNode) { ! updates.put(file, rootNode); ! } } } --- 57,63 ---- parser.assertParsed(file3); ! updater.assertUpdated(file1, rootNode1, false); ! updater.assertUpdated(file2, rootNode2, false); ! updater.assertUpdated(file3, rootNode3, false); } } Index: TC_IncrementalRdtCompiler.java =================================================================== RCS file: /cvsroot/rubyeclipse/org.rubypeople.rdt.core.tests/src/org/rubypeople/rdt/internal/core/builder/TC_IncrementalRdtCompiler.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** TC_IncrementalRdtCompiler.java 12 Nov 2005 19:15:53 -0000 1.1 --- TC_IncrementalRdtCompiler.java 13 Nov 2005 13:05:07 -0000 1.2 *************** *** 1,5 **** package org.rubypeople.rdt.internal.core.builder; - import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; --- 1,4 ---- Index: ShamSymbolIndex.java =================================================================== RCS file: /cvsroot/rubyeclipse/org.rubypeople.rdt.core.tests/src/org/rubypeople/rdt/internal/core/builder/ShamSymbolIndex.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** ShamSymbolIndex.java 12 Nov 2005 19:15:53 -0000 1.3 --- ShamSymbolIndex.java 13 Nov 2005 13:05:07 -0000 1.4 *************** *** 20,23 **** --- 20,24 ---- import org.eclipse.core.resources.IProject; import org.jruby.lexer.yacc.ISourcePosition; + import org.rubypeople.eclipse.shams.resources.ShamFile; import org.rubypeople.eclipse.shams.resources.ShamProject; import org.rubypeople.rdt.internal.core.symbols.Symbol; *************** *** 70,72 **** --- 71,77 ---- } + public void assertNotFlushed(ShamFile file) { + Assert.assertEquals(false, flushedFiles.contains(file)); + } + } \ No newline at end of file Index: TC_IndexUpdater.java =================================================================== RCS file: /cvsroot/rubyeclipse/org.rubypeople.rdt.core.tests/src/org/rubypeople/rdt/internal/core/builder/TC_IndexUpdater.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** TC_IndexUpdater.java 12 Nov 2005 19:15:53 -0000 1.6 --- TC_IndexUpdater.java 13 Nov 2005 13:05:07 -0000 1.7 *************** *** 43,47 **** public void testIrrelevantNodes() { Node node = new TrueNode(POSITION_1); ! updater.update(file, node); symbolIndex.assertFlushed(file); --- 43,47 ---- public void testIrrelevantNodes() { Node node = new TrueNode(POSITION_1); ! updater.update(file, node, false); symbolIndex.assertFlushed(file); *************** *** 52,56 **** Colon2Node nameNode = new Colon2Node(POSITION_1, null, TEST_CLASS_NAME); Node node = new ClassNode(POSITION_1, nameNode, null, null); ! updater.update(file, node); symbolIndex.assertFlushed(file); --- 52,56 ---- Colon2Node nameNode = new Colon2Node(POSITION_1, null, TEST_CLASS_NAME); Node node = new ClassNode(POSITION_1, nameNode, null, null); ! updater.update(file, node, false); symbolIndex.assertFlushed(file); *************** *** 58,65 **** } public void testWithTree() throws Exception { Node node = parseCode("if x\nclass Foo\nend\n end\n"); ! updater.update(file,node); symbolIndex.assertFlushed(file); --- 58,74 ---- } + public void testSkippingFlush() { + Colon2Node nameNode = new Colon2Node(POSITION_1, null, TEST_CLASS_NAME); + Node node = new ClassNode(POSITION_1, nameNode, null, null); + updater.update(file, node, true); + + symbolIndex.assertNotFlushed(file); + symbolIndex.assertAdded(new ClassSymbol(TEST_CLASS_NAME), file, POSITION_1); + } + public void testWithTree() throws Exception { Node node = parseCode("if x\nclass Foo\nend\n end\n"); ! updater.update(file,node, false); symbolIndex.assertFlushed(file); *************** *** 70,74 **** Node node = parseCode("if x\nclass Foo::Bar\nend\n end\n"); ! updater.update(file,node); symbolIndex.assertFlushed(file); --- 79,83 ---- Node node = parseCode("if x\nclass Foo::Bar\nend\n end\n"); ! updater.update(file,node, false); symbolIndex.assertFlushed(file); *************** *** 79,83 **** Node node = parseCode("if x\nclass X::Foo::Bar\nend\n end\n"); ! updater.update(file,node); symbolIndex.assertFlushed(file); --- 88,92 ---- Node node = parseCode("if x\nclass X::Foo::Bar\nend\n end\n"); ! updater.update(file,node, false); symbolIndex.assertFlushed(file); *************** *** 88,92 **** Node node = parseCode("if x\nmodule Foo\nclass Bar\nend\n end\nend\n"); ! updater.update(file,node); symbolIndex.assertFlushed(file); --- 97,101 ---- Node node = parseCode("if x\nmodule Foo\nclass Bar\nend\n end\nend\n"); ! updater.update(file,node, false); symbolIndex.assertFlushed(file); *************** *** 97,101 **** Node node = parseCode("module Foo\nclass Bar\nclass InnerBar\nend\nend\nend\n"); ! updater.update(file,node); symbolIndex.assertFlushed(file); --- 106,110 ---- Node node = parseCode("module Foo\nclass Bar\nclass InnerBar\nend\nend\nend\n"); ! updater.update(file,node, false); symbolIndex.assertFlushed(file); *************** *** 106,110 **** Node node = parseCode("def method\nend") ; ! updater.update(file,node); symbolIndex.assertAdded(new MethodSymbol("method"), file, new RdtPosition(0, 1, 3, 12)); --- 115,119 ---- Node node = parseCode("def method\nend") ; ! updater.update(file,node, false); symbolIndex.assertAdded(new MethodSymbol("method"), file, new RdtPosition(0, 1, 3, 12)); *************** *** 114,118 **** Node node = parseCode("class Foo\ndef method\nend\nend") ; ! updater.update(file,node); symbolIndex.assertAdded(new MethodSymbol("Foo::method"), file, new RdtPosition(1, 2, 13, 24)); --- 123,127 ---- Node node = parseCode("class Foo\ndef method\nend\nend") ; ! updater.update(file,node, false); symbolIndex.assertAdded(new MethodSymbol("Foo::method"), file, new RdtPosition(1, 2, 13, 24)); --- NEW FILE: ShamIndexUpdater.java --- /** * */ package org.rubypeople.rdt.internal.core.builder; import java.util.HashMap; import java.util.List; import java.util.Map; import junit.framework.Assert; import org.eclipse.core.resources.IFile; import org.jruby.ast.Node; import org.rubypeople.rdt.internal.core.util.ListUtil; final class ShamIndexUpdater extends IndexUpdater { public ShamIndexUpdater() { super(null); } private Map updates = new HashMap(); public void update(IFile file, Node rootNode, boolean skipFlush) { updates.put(file, createArgList(rootNode, skipFlush)); } private List createArgList(Node rootNode, boolean skipFlush) { return ListUtil.create(rootNode, new Boolean(skipFlush)); } public void assertUpdated(IFile expectedFile, Node expectedRootNode, boolean expectedSkipFlush) { Object args = updates.get(expectedFile); Assert.assertNotNull(expectedFile + " should have been updated", args); Assert.assertEquals(createArgList(expectedRootNode, expectedSkipFlush), args); } } |