1 package org.antlr.works.test.ut; 2 3 import org.antlr.works.grammar.RefactorEngine; 4 import org.antlr.works.grammar.RefactorMutator; 5 import org.antlr.works.test.AbstractTest; 6 import org.antlr.works.test.TestConstants; 7 37 38 public class TestRefactor extends AbstractTest { 39 40 public void testRename_1() throws Exception { 41 parseFile(TestConstants.REFACTOR_ORIGINAL_A); 42 43 assertEquals("grammar name", "references", getParser().name.getName()); 44 45 String originalText = getTextFromFile(TestConstants.REFACTOR_ORIGINAL_A); 46 47 TestRefactorMutator mutator = new TestRefactorMutator(); 48 RefactorEngine engine = new RefactorEngine(); 49 engine.setMutator(mutator); 50 engine.setTokens(getParser().getTokens()); 51 52 mutator.setText(originalText); 53 engine.renameToken(getParser().decls.get(1), "OTHER_2"); 54 55 assertEquals("rename OTHER -> OTHER_2", getTextFromFile(TestConstants.RENAME_OTHER), mutator.getText()); 56 57 mutator.setText(originalText); 58 engine.renameToken(getParser().decls.get(4), "RAB"); 59 60 assertEquals("rename BAR -> RAB", getTextFromFile(TestConstants.RENAME_BAR), mutator.getText()); 61 } 62 63 public void testRename_2() throws Exception { 64 parseFile(TestConstants.REFACTOR_ORIGINAL_B); 65 66 assertEquals("grammar name", "test", getParser().name.getName()); 67 68 String originalText = getTextFromFile(TestConstants.REFACTOR_ORIGINAL_B); 69 70 TestRefactorMutator mutator = new TestRefactorMutator(); 71 RefactorEngine engine = new RefactorEngine(); 72 engine.setMutator(mutator); 73 engine.setTokens(getParser().getTokens()); 74 75 mutator.setText(originalText); 76 engine.renameToken(getParser().decls.get(0), "foo"); 77 78 assertEquals("rename n_expression -> foo", getTextFromFile(TestConstants.RENAME_B), mutator.getText()); 79 } 80 81 private class TestRefactorMutator implements RefactorMutator { 82 public StringBuffer mutableText; 83 84 public TestRefactorMutator() { 85 } 86 87 public void replace(int start, int end, String s) { 88 mutableText.replace(start, end, s); 89 } 90 91 public void insert(int index, String s) { 92 mutableText.insert(index, s); 93 } 94 95 public void insertAtLinesBoundary(int index, String s) { 96 mutableText.insert(index, s); 97 } 98 99 public void delete(int start, int end) { 100 mutableText.delete(start, end); 101 } 102 103 public void setText(String text) { 104 mutableText = new StringBuffer (text); 105 } 106 107 public String getText() { 108 return mutableText.toString(); 109 } 110 } 111 112 } 113 | Popular Tags |