1 package jester.tests; 2 3 import jester.*; 4 import junit.framework.*; 5 6 public class SimpleIntCodeManglerTest extends TestCase { 7 public SimpleIntCodeManglerTest(String name) { 8 super(name); 9 } 10 public static void main(String args[]) { 11 junit.awtui.TestRunner.main(new String [] { "jester.tests.SimpleIntCodeManglerTest" }); 12 } 13 public static Test suite() { 14 TestSuite suite = new TestSuite(SimpleIntCodeManglerTest.class); 15 return suite; 16 } 17 public void testContinuesIfChangeFails() throws SourceChangeException { 18 MockClassSourceChanger mockClassSourceChanger = new MockClassSourceChanger(); 19 mockClassSourceChanger.setThrowExceptionOnFirstChangeAttempt(true); 20 mockClassSourceChanger.setOriginalContents("abc 3 jshf 8 def"); 21 22 CodeMangler codeMangler = new SimpleIntCodeMangler(mockClassSourceChanger); 23 24 mockClassSourceChanger.setExpectedWriteOverSourceReplacingCalls(2); mockClassSourceChanger.setExpectedWriteOverSourceReplacing("abc 3 jshf ".length(), "8", "9"); 26 assertTrue("could make change of 8 to 9 (can't change 3 to 4)", codeMangler.makeChangeToClass()); 27 mockClassSourceChanger.setExpectedWriteOriginalBackCalls(1); 28 assertTrue("could not make a subsequent change", !codeMangler.makeChangeToClass()); 29 30 mockClassSourceChanger.verify(); 31 } 32 public void testContinuesIfChangeSucceeds() throws SourceChangeException { 33 MockClassSourceChanger mockClassSourceChanger = new MockClassSourceChanger(); 34 mockClassSourceChanger.setThrowExceptionOnFirstChangeAttempt(false); 35 mockClassSourceChanger.setOriginalContents("abc 3 jshf 8 def"); 36 37 CodeMangler codeMangler = new SimpleIntCodeMangler(mockClassSourceChanger); 38 39 mockClassSourceChanger.setExpectedWriteOverSourceReplacingCalls(2); 40 mockClassSourceChanger.setExpectedWriteOverSourceReplacing("abd ".length(), "3", "4"); 41 assertTrue("could make change of 3 to 4", codeMangler.makeChangeToClass()); 42 mockClassSourceChanger.setExpectedWriteOverSourceReplacing("abc 3 jshf ".length(), "8", "9"); 43 assertTrue("could make another change", codeMangler.makeChangeToClass()); 44 mockClassSourceChanger.setExpectedWriteOriginalBackCalls(1); 45 assertTrue("could not make another change", !codeMangler.makeChangeToClass()); 46 47 mockClassSourceChanger.verify(); 48 } 49 public void testCouldntMangle() throws SourceChangeException { 50 MockClassSourceChanger mockClassSourceChanger = new MockClassSourceChanger(); 51 mockClassSourceChanger.setOriginalContents("abc def"); 52 mockClassSourceChanger.setExpectedWriteOverSourceReplacingCalls(0); 53 54 CodeMangler codeMangler = new SimpleIntCodeMangler(mockClassSourceChanger); 55 56 assertTrue("couldn't make change - mock checks didnt try to make any change", !codeMangler.makeChangeToClass()); 57 58 mockClassSourceChanger.verify(); 59 } 60 public void testDoesntTryToChangeBadlyNamedMethodCalls() throws SourceChangeException { 61 MockClassSourceChanger mockClassSourceChanger = new MockClassSourceChanger(); 62 mockClassSourceChanger.setOriginalContents("abc method3 def"); 63 mockClassSourceChanger.setExpectedWriteOverSourceReplacingCalls(0); 64 65 CodeMangler codeMangler = new SimpleIntCodeMangler(mockClassSourceChanger); 66 67 assertTrue("couldn't make change - mock checks didnt try to make any change", !codeMangler.makeChangeToClass()); 68 69 mockClassSourceChanger.verify(); 70 } 71 public void testSimpleMangle() throws SourceChangeException { 72 MockClassSourceChanger mockClassSourceChanger = new MockClassSourceChanger(); 73 mockClassSourceChanger.setOriginalContents("abc 1 def"); 74 mockClassSourceChanger.setExpectedWriteOverSourceReplacing(4, "1", "2"); 75 76 CodeMangler codeMangler = new SimpleIntCodeMangler(mockClassSourceChanger); 77 78 assertTrue("could make change - mock checks make expected change", codeMangler.makeChangeToClass()); 79 } 80 public void testBug955882() throws SourceChangeException { 81 MockClassSourceChanger mockClassSourceChanger = new MockClassSourceChanger(); 82 mockClassSourceChanger.setOriginalContents("int Log2(float n) { return Log(2,n); }"); 83 mockClassSourceChanger.setExpectedWriteOverSourceReplacing(31, "2", "3"); 84 85 CodeMangler codeMangler = new SimpleIntCodeMangler(mockClassSourceChanger); 86 87 assertTrue("could make change - mock checks make expected change", codeMangler.makeChangeToClass()); 88 } 89 public void testBugIgnoreRegionsNotBeingIgnored() throws SourceChangeException { 90 MockClassSourceChanger mockClassSourceChanger = new MockClassSourceChanger(); 91 mockClassSourceChanger.setOriginalContents("foo //1\n 1 bar", new IgnoreList("x//x\\n")); 92 mockClassSourceChanger.setExpectedWriteOverSourceReplacing(9, "1", "2"); 93 94 CodeMangler codeMangler = new SimpleIntCodeMangler(mockClassSourceChanger); 95 96 assertTrue("could make change - mock checks make expected change", codeMangler.makeChangeToClass()); 97 } 98 public void testSimpleMangleRollover() throws SourceChangeException { 99 MockClassSourceChanger mockClassSourceChanger = new MockClassSourceChanger(); 100 mockClassSourceChanger.setOriginalContents("abc 9 def"); 101 mockClassSourceChanger.setExpectedWriteOverSourceReplacing(4, "9", "0"); 102 103 CodeMangler codeMangler = new SimpleIntCodeMangler(mockClassSourceChanger); 104 105 assertTrue("could make change - mock checks make expected change", codeMangler.makeChangeToClass()); 106 } 107 } | Popular Tags |