001    package org.hackystat.sensor.ant.svn;
002    
003    import java.util.Date;
004    
005    import junit.framework.TestCase;
006    
007    /**
008     * Test suite for everything in this package.
009     * 
010     * @author (Cedric) Qin ZHANG
011     * @version $Id$
012     */
013    public class TestAll extends TestCase {
014    
015      //private String svnRepositoryUrl = "svn://localhost:9999/test";
016      private SVNCommitProcessor p = null;
017      private boolean runTest = false;
018      
019      /**
020       * Test case set up.
021       * 
022       * @throws Exception If we cannot set up this test case.
023       */
024      @Override
025      protected void setUp() throws Exception {
026        //we only run test in a environment we can access a testing svn server.
027        //To bad, JavaSVN does not support file protocol in verions 1.0 release.
028        //Otherwise, we can always run the test through file protocol.
029        String url = System.getProperty("hackySensor_Svn.TestingRepositoryUrl");
030        if (url == null) {
031          System.out.println("WARNING: Test cases in org.hackystat.sensor.svn.core.TestAll not run "
032                      + "because environment variable hackySensor_Svn.TestingRepositoryUrl not set "
033                      + "(i.e. Testing SVN server not available).");
034          this.runTest = false;
035        }
036        else {
037          this.p = new SVNCommitProcessor(url, null, null);
038          this.runTest = true;
039        }
040      }
041    
042       /**
043         * Tests get svn revision number.
044         * 
045         * @throws Exception If test fails.
046         */
047      public void testGetRevisionNumberWithOutliers() throws Exception {
048        if (!runTest) {
049          return;
050        }
051        assertEquals("The revision number is not 0.", 0, p.getRevisionNumber(new Date(0)));
052        assertEquals("The revision number is not 0.", 0, p.getRevisionNumber(new Date(
053            Long.MIN_VALUE)));
054        assertEquals("The revision number is not 0", 9, p.getRevisionNumber(new Date(
055            Long.MAX_VALUE)));
056      }
057      //  
058      // /**
059      // * Tests everything in this package.
060      // *
061      // * @throws Exception If test fails.
062      // */
063      // public void testAll() throws Exception {
064      // if (!runTest) {
065      // return;
066      // }
067      //    
068      // SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
069      // assertEquals(0, this.p.getRevisionNumber(dateFormat.parse("2000-01-01")));
070      // assertEquals(9, this.p.getRevisionNumber(dateFormat.parse("2005-12-12")));
071      //    
072      // //revision 0, non-existent. JavaSVN should throw exception here, but it did
073      // not.
074      // CommitRecord commitRecord = this.p.getCommitRecord(0);
075      // if (commitRecord != null) {
076      // assertEquals(0, commitRecord.getCommitRecordEntries().size());
077      // }
078      //    
079      // //revision 1 - 9
080      // for (int i = 1; i <= 9; i++) {
081      // assertNotNull(this.p.getCommitRecord(i));
082      // }
083      //    
084      // //revision 10, non-existent
085      // try {
086      // this.p.getCommitRecord(10);
087      // fail("Revision 10 does not exist.");
088      // }
089      // catch (Exception ex) {
090      // //ignore
091      // }
092      //    
093      // //revision 1
094      // commitRecord = this.p.getCommitRecord(1);
095      // assertEquals(1L, commitRecord.getRevision());
096      // assertEquals(null, commitRecord.getAuthor());
097      // assertEquals("", commitRecord.getMessage());
098      // assertEquals(1131014866409L, commitRecord.getCommitTime().getTime());
099      // Collection<CommitRecordEntry> entries =
100      // commitRecord.getCommitRecordEntries();
101      // assertEquals(1, entries.size());
102      // //adding new file
103      // CommitRecordEntry entry = entries.iterator().next();
104      // assertEquals(null, entry.getFromPath());
105      // assertEquals(-1, entry.getFromRevision());
106      // assertEquals("/test.txt", entry.getToPath());
107      // assertEquals(1, entry.getToRevision());
108      // assertEquals(true, entry.isFile());
109      // assertEquals(true, entry.isTextFile());
110      // assertEquals(1, entry.getTotalLines());
111      // assertEquals(1, entry.getLinesAdded());
112      // assertEquals(0, entry.getLinesDeleted());
113      //    
114      // //revision 2
115      // commitRecord = this.p.getCommitRecord(2);
116      // assertEquals(2L, commitRecord.getRevision());
117      // assertEquals(null, commitRecord.getAuthor());
118      // assertEquals("", commitRecord.getMessage());
119      // assertEquals(1131014902982L, commitRecord.getCommitTime().getTime());
120      // entries = commitRecord.getCommitRecordEntries();
121      // assertEquals(1, entries.size());
122      // //file rename
123      // entry = entries.iterator().next();
124      // assertEquals("/test.txt", entry.getFromPath());
125      // assertEquals(1, entry.getFromRevision());
126      // assertEquals("/test1.txt", entry.getToPath());
127      // assertEquals(2, entry.getToRevision());
128      // assertEquals(true, entry.isFile());
129      // assertEquals(true, entry.isTextFile());
130      // assertEquals(1, entry.getTotalLines());
131      // assertEquals(0, entry.getLinesAdded());
132      // assertEquals(0, entry.getLinesDeleted());
133      //
134      // //revision 4
135      // commitRecord = this.p.getCommitRecord(4);
136      // assertEquals(4L, commitRecord.getRevision());
137      // assertEquals(null, commitRecord.getAuthor());
138      // assertEquals("", commitRecord.getMessage());
139      // assertEquals(1131015460273L, commitRecord.getCommitTime().getTime());
140      // entries = commitRecord.getCommitRecordEntries();
141      // assertEquals(2, entries.size());
142      // //add a directory, and rename a file.
143      // boolean directoryChecked = false;
144      // boolean fileChecked = false;
145      // for (Iterator i = entries.iterator(); i.hasNext(); ) {
146      // entry = (CommitRecordEntry) i.next();
147      // if (entry.getToPath().equals("/d")) {
148      // assertEquals(null, entry.getFromPath());
149      // assertEquals(-1, entry.getFromRevision());
150      // assertEquals("/d", entry.getToPath());
151      // assertEquals(4, entry.getToRevision());
152      // assertEquals(false, entry.isFile());
153      // assertEquals(false, entry.isTextFile());
154      // directoryChecked = true;
155      // }
156      // else if (entry.getToPath().equals("/d/test1.txt")) {
157      // assertEquals("/test1.txt", entry.getFromPath());
158      // assertEquals(2, entry.getFromRevision());
159      // assertEquals("/d/test1.txt", entry.getToPath());
160      // assertEquals(4, entry.getToRevision());
161      // assertEquals(true, entry.isFile());
162      // assertEquals(true, entry.isTextFile());
163      // fileChecked = true;
164      // }
165      // else {
166      // fail("Unexpected entry.");
167      // }
168      // }
169      // if (!directoryChecked || !fileChecked) {
170      // fail("Error in rev 4");
171      // }
172      //    
173      // //revision 5
174      // commitRecord = this.p.getCommitRecord(5);
175      // assertEquals(5L, commitRecord.getRevision());
176      // assertEquals(null, commitRecord.getAuthor());
177      // assertEquals("", commitRecord.getMessage());
178      // assertEquals(1131015935056L, commitRecord.getCommitTime().getTime());
179      // entries = commitRecord.getCommitRecordEntries();
180      // assertEquals(1, entries.size());
181      // //file modification
182      // entry = entries.iterator().next();
183      // assertEquals("/d/test1.txt", entry.getFromPath());
184      // assertEquals(4, entry.getFromRevision());
185      // assertEquals("/d/test1.txt", entry.getToPath());
186      // assertEquals(5, entry.getToRevision());
187      // assertEquals(true, entry.isFile());
188      // assertEquals(true, entry.isTextFile());
189      // assertEquals(2, entry.getTotalLines());
190      // assertEquals(1, entry.getLinesAdded());
191      // assertEquals(0, entry.getLinesDeleted());
192      //
193      // //revision 6
194      // commitRecord = this.p.getCommitRecord(6);
195      // assertEquals(6L, commitRecord.getRevision());
196      // assertEquals(null, commitRecord.getAuthor());
197      // assertEquals("", commitRecord.getMessage());
198      // assertEquals(1131016379795L, commitRecord.getCommitTime().getTime());
199      // entries = commitRecord.getCommitRecordEntries();
200      // assertEquals(1, entries.size());
201      // //file deletion
202      // entry = entries.iterator().next();
203      // assertEquals("/t.txt", entry.getFromPath());
204      // assertEquals(5, entry.getFromRevision()); //added in rev 3, not touched in
205      // rev 4 and 5
206      // assertEquals(null, entry.getToPath());
207      // assertEquals(6, entry.getToRevision());
208      // assertEquals(true, entry.isFile());
209      // assertEquals(true, entry.isTextFile());
210      // assertEquals(0, entry.getTotalLines());
211      // assertEquals(0, entry.getLinesAdded());
212      // assertEquals(3, entry.getLinesDeleted());
213      //   
214      // //revision 9
215      // commitRecord = this.p.getCommitRecord(9);
216      // assertEquals(9L, commitRecord.getRevision());
217      // assertEquals(null, commitRecord.getAuthor());
218      // assertEquals("", commitRecord.getMessage());
219      // assertEquals(1131204918532L, commitRecord.getCommitTime().getTime());
220      // entries = commitRecord.getCommitRecordEntries();
221      // assertEquals(1, entries.size());
222      // //binary file addition
223      //    entry = entries.iterator().next();
224      //    assertEquals(null, entry.getFromPath());
225      //    assertEquals(-1, entry.getFromRevision());
226      //    assertEquals("/d/text2binary.dat", entry.getToPath());
227      //    assertEquals(9, entry.getToRevision());
228      //    assertEquals(true, entry.isFile());
229      //    assertEquals(false, entry.isTextFile());  
230      //  }
231    }