1 package jester.tests; 2 3 import java.io.PrintWriter ; 4 import java.io.StringWriter ; 5 6 import jester.*; 7 import junit.framework.*; 8 9 public class ReportTest extends TestCase { 10 private XMLReportWriter myXMLWriter = new MockXMLReportWriter(); 11 12 public ReportTest(String name) { 13 super(name); 14 } 15 public static void main(String args[]) { 16 junit.awtui.TestRunner.main(new String [] { "jester.tests.ReportTest" }); 17 } 18 public static Test suite() { 19 TestSuite suite = new TestSuite(ReportTest.class); 20 return suite; 21 } 22 23 private Report newRealReport() { 24 return newRealReport(new PrintWriter (new StringWriter ())); 25 } 26 27 private Report newRealReport(PrintWriter aPrintWriter) { 28 return new RealReport(new TestConfiguration(), aPrintWriter, myXMLWriter, new MockProgressReporter()); 29 } 30 31 private void startFile(Report aReport, String fileName, String originalContents) throws ConfigurationException, SourceChangeException{ 32 aReport.startFile(fileName, new IgnoreListDocument(originalContents,new IgnoreList(""))); 33 } 34 35 public void testBottomScore() throws SourceChangeException { 36 Report aReport = newRealReport(); 37 startFile(aReport, "sourceFileName", "originalContents"); 38 int indexOfChange = 7; 39 aReport.changeThatDidNotCauseTestsToFail(indexOfChange, "valueChangedFrom", "valueChangedTo"); 40 assertEquals(0, aReport.totalScore()); 41 assertEquals(0, aReport.fileScore()); 42 } 43 44 public void testCantFinishDifferentFile() throws SourceChangeException { 45 Report aReport = newRealReport(); 46 startFile(aReport, "sourceFileName", "originalContents"); 47 try { 48 aReport.finishFile("otherFile"); 49 fail("can't finish different file - should have thrown exception"); 50 } catch (SourceChangeException ex) { 51 } 52 } 53 54 public void testCantStartTwoFiles() throws SourceChangeException { 55 Report aReport = newRealReport(); 56 startFile(aReport, "sourceFileName", "originalContents"); 57 try { 58 startFile(aReport, "otherFile", "originalContents"); 59 fail("can't start file if haven't finished other - should have thrown exception"); 60 } catch (SourceChangeException ex) { 61 } 62 } 63 64 public void testChangesToSameFileOrderedByIndex() throws SourceChangeException { 65 StringWriter sw = new StringWriter (); 66 Report aReport = newRealReport(new PrintWriter (sw)); 67 startFile(aReport, "sourceFileName1", "theOriginalContentsBeforeChanging"); 68 { 69 int indexOfChange4 = 7; 70 aReport.changeThatDidNotCauseTestsToFail(indexOfChange4, "valueChangedFrom4", "valueChangedTo4"); 71 } 72 { 73 int indexOfChange1 = 3; 74 aReport.changeThatDidNotCauseTestsToFail(indexOfChange1, "valueChangedFrom1", "valueChangedTo1"); 75 } 76 { 77 int indexOfChange3 = 6; 78 aReport.changeThatDidNotCauseTestsToFail(indexOfChange3, "valueChangedFrom3", "valueChangedTo3"); 79 } 80 { 81 int indexOfChange2 = 5; 82 aReport.changeThatDidNotCauseTestsToFail(indexOfChange2, "valueChangedFrom2", "valueChangedTo2"); 83 } 84 aReport.finishFile("sourceFileName1"); 85 String reportString = sw.toString(); 86 int indexOfC1 = reportString.indexOf("valueChangedFrom1"); 87 int indexOfC2 = reportString.indexOf("valueChangedFrom2"); 88 int indexOfC3 = reportString.indexOf("valueChangedFrom3"); 89 int indexOfC4 = reportString.indexOf("valueChangedFrom4"); 90 assertTrue("change 1 was recorded", indexOfC1 != -1); 91 assertTrue("change 2 was recorded", indexOfC2 != -1); 92 assertTrue("change 3 was recorded", indexOfC3 != -1); 93 assertTrue("change 4 was recorded", indexOfC4 != -1); 94 assertTrue("changes to file 1 are sorted", indexOfC1 < indexOfC2); 95 assertTrue("changes to file 1 are sorted", indexOfC2 < indexOfC3); 96 assertTrue("changes to file 1 are sorted", indexOfC3 < indexOfC4); 97 } 98 99 public void testFileScoreSeparateFromTotalScore() throws SourceChangeException { 100 Report aReport = newRealReport(); 101 startFile(aReport, "sourceFileName", "originalContents"); 102 { 103 int indexOfChange = 5; 104 aReport.changeThatCausedTestsToFail(indexOfChange, "valueChangedFrom", "valueChangedTo"); 105 } 106 { 107 int indexOfChange = 7; 108 aReport.changeThatDidNotCauseTestsToFail(indexOfChange, "valueChangedFrom", "valueChangedTo"); 109 } 110 aReport.finishFile("sourceFileName"); 111 startFile(aReport, "otherFile", "originalContents"); 112 assertEquals(50, aReport.totalScore()); 113 assertEquals(Report.INITIAL_SCORE, aReport.fileScore()); 114 } 115 116 public void testInitialScore() throws SourceChangeException { 117 Report aReport = newRealReport(); 118 assertEquals(Report.INITIAL_SCORE, aReport.totalScore()); 119 assertEquals(Report.INITIAL_SCORE, aReport.fileScore()); 120 121 aReport = newRealReport(); 122 startFile(aReport, "sourceFileName", "originalContents"); 123 assertEquals(Report.INITIAL_SCORE, aReport.totalScore()); 124 assertEquals(Report.INITIAL_SCORE, aReport.fileScore()); 125 } 126 127 public void testMediumScore() throws SourceChangeException { 128 Report aReport = newRealReport(); 129 startFile(aReport, "sourceFileName", "originalContents"); 130 { 131 int indexOfChange = 5; 132 aReport.changeThatCausedTestsToFail(indexOfChange, "valueChangedFrom", "valueChangedTo"); 133 } 134 { 135 int indexOfChange = 7; 136 aReport.changeThatDidNotCauseTestsToFail(indexOfChange, "valueChangedFrom", "valueChangedTo"); 137 } 138 assertEquals(50, aReport.totalScore()); 139 assertEquals(50, aReport.fileScore()); 140 } 141 142 public void testThatChangeThatCausedTestsToFailIsNotIncluded() throws SourceChangeException { 143 StringWriter sw = new StringWriter (); 144 Report aReport = newRealReport(new PrintWriter (sw)); 145 startFile(aReport, "sourceFileName", "originalContents"); 146 147 int indexOfChange = 5; 148 aReport.changeThatCausedTestsToFail(indexOfChange, "valueChangedFrom", "valueChangedTo"); 149 aReport.finishFile("sourceFileName"); 150 String reportString = sw.toString(); 151 assertTrue("report should include interesting stuff1", reportString.indexOf("sourceFileName") != -1); 152 assertTrue("report should not include uninteresting stuff2", reportString.indexOf("valueChangedFrom") == -1); 153 assertTrue("report should not include uninteresting stuff3", reportString.indexOf("valueChangedTo") == -1); 154 assertTrue("report should not include uninteresting stuff4", reportString.indexOf(Integer.toString(indexOfChange)) == -1); 155 } 156 157 public void testThatChangeThatDidNotCauseTestsToFailIsIncluded() throws SourceChangeException { 158 StringWriter sw = new StringWriter (); 159 Report aReport = newRealReport(new PrintWriter (sw)); 160 startFile(aReport, "sourceFileName", "theOriginalContentsBeforeChanging"); 161 162 int indexOfChange = 5; 163 aReport.changeThatDidNotCauseTestsToFail(indexOfChange, "valueChangedFrom", "valueChangedTo"); 164 aReport.finishFile("sourceFileName"); 165 String reportString = sw.toString(); 166 assertTrue("report should include interesting stuff1", reportString.indexOf("sourceFileName") != -1); 167 assertTrue("report should include interesting stuff2", reportString.indexOf("valueChangedFrom") != -1); 168 assertTrue("report should include interesting stuff3", reportString.indexOf("valueChangedTo") != -1); 169 assertTrue("report should include interesting stuff4", reportString.indexOf(Integer.toString(indexOfChange)) != -1); 170 } 171 172 public void testTopScore() throws SourceChangeException { 173 Report aReport = newRealReport(); 174 startFile(aReport, "sourceFileName", "originalContents"); 175 int indexOfChange = 5; 176 aReport.changeThatCausedTestsToFail(indexOfChange, "valueChangedFrom", "valueChangedTo"); 177 assertEquals(100, aReport.totalScore()); 178 assertEquals(100, aReport.fileScore()); 179 } 180 181 public void testTotalScoreForManyFiles() throws SourceChangeException { 182 Report aReport = newRealReport(); 183 startFile(aReport, "sourceFileName1", "theOriginalContentsBeforeChanging"); 185 { 186 int indexOfChange = 5; 187 aReport.changeThatCausedTestsToFail(indexOfChange, "valueChangedFrom", "valueChangedTo"); 188 } 189 { 190 int indexOfChange = 7; 191 aReport.changeThatDidNotCauseTestsToFail(indexOfChange, "valueChangedFrom", "valueChangedTo"); 192 } 193 assertEquals(50, aReport.fileScore()); 194 aReport.finishFile("sourceFileName1"); 195 startFile(aReport, "sourceFileName2", "theOriginalContentsBeforeChanging"); 197 { 198 int indexOfChange = 5; 199 aReport.changeThatDidNotCauseTestsToFail(indexOfChange, "valueChangedFrom", "valueChangedTo"); 200 } 201 { 202 int indexOfChange = 7; 203 aReport.changeThatCausedTestsToFail(indexOfChange, "valueChangedFrom", "valueChangedTo"); 204 } 205 { 206 int indexOfChange = 9; 207 aReport.changeThatDidNotCauseTestsToFail(indexOfChange, "valueChangedFrom", "valueChangedTo"); 208 } 209 assertEquals(34, aReport.fileScore()); 210 aReport.finishFile("sourceFileName2"); 211 assertEquals(40, aReport.totalScore()); 213 } 214 215 public void testFileMustBeStarted() { 216 Report aReport = newRealReport(); 217 { 218 try { 219 int indexOfChange = 5; 220 aReport.changeThatCausedTestsToFail(indexOfChange, "valueChangedFrom", "valueChangedTo"); 221 fail("can't report on file haven't started (changeThatCausedTestsToFail) - should have thrown exception"); 222 } catch (SourceChangeException ex) { 223 } 224 } 225 { 226 try { 227 int indexOfChange = 7; 228 aReport.changeThatDidNotCauseTestsToFail(indexOfChange, "valueChangedFrom", "valueChangedTo"); 229 fail("can't report on file haven't started (changeThatDidNotCauseTestsToFail) - should have thrown exception"); 230 } catch (SourceChangeException ex) { 231 } 232 } 233 } 234 } | Popular Tags |