1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 package net.sf.statcvs.model;
24
25 import java.util.Date;
26 import java.util.Iterator;
27
28 import junit.framework.TestCase;
29
30 /**
31 * Test cases for {@link VersionedFile}
32 *
33 * @author Richard Cyganiak
34 * @version $Id: VersionedFileTest.java,v 1.8 2002/12/07 04:50:20 lukasz Exp $
35 */
36 public class CvsFileTest extends TestCase {
37 private Directory dirRoot;
38 private Directory dirTest;
39 private final Date date1 = new Date(1100000000);
40 private final Date date2 = new Date(1200000000);
41 private final Date date3 = new Date(1300000000);
42 private Author author;
43
44 /**
45 * Constructor for VersionedFileTest.
46 * @param arg0 input
47 */
48 public CvsFileTest(final String arg0) {
49 super(arg0);
50 }
51
52 /**
53 * @see TestCase#setUp()
54 */
55 protected void setUp() throws Exception {
56 super.setUp();
57 dirRoot = Directory.createRoot();
58 dirTest = dirRoot.createSubdirectory("test");
59 author = new Author("author");
60 }
61
62 /**
63 * Method testCreation.
64 */
65 public void testCreation() {
66 final VersionedFile file = new VersionedFile("file", dirRoot);
67 final Revision rev1 = file.addInitialRevision("1.1", author, date1, "message", 0, null);
68 assertEquals("file", file.getFilenameWithPath());
69 assertEquals(1, file.getRevisions().size());
70 assertSame(rev1, file.getLatestRevision());
71 assertEquals(0, file.getCurrentLinesOfCode());
72 assertEquals(dirRoot, file.getDirectory());
73 assertTrue("file was not deleted", !file.isDead());
74 }
75
76 /**
77 * Method testMultipleRevisions.
78 */
79 public void testMultipleRevisions() {
80 final VersionedFile file = new VersionedFile("file", dirRoot);
81 final Revision rev1 = file.addInitialRevision("1.1", author, date1, "message1", 0, null);
82 final Revision rev2 = file.addChangeRevision("1.2", author, date2, "message2", 0, 0, 0, null);
83 final Revision rev3 = file.addChangeRevision("1.3", author, date3, "message3", 0, 0, 0, null);
84 final Iterator revIt = file.getRevisions().iterator();
85 assertEquals(rev1, revIt.next());
86 assertEquals(rev2, revIt.next());
87 assertEquals(rev3, revIt.next());
88 assertTrue(!revIt.hasNext());
89 assertEquals(rev3, file.getLatestRevision());
90 assertEquals(rev1, file.getInitialRevision());
91 assertEquals(0, file.getCurrentLinesOfCode());
92 assertEquals(0, rev1.getLines());
93 assertEquals(0, rev2.getLines());
94 assertEquals(0, rev3.getLines());
95 }
96
97 /**
98 * Test the assertion that revisions can be added to a file in any order.
99 */
100 public void testMultipleRevisionsAnyOrder() {
101 final VersionedFile file = new VersionedFile("file", dirRoot);
102 final Revision rev2 = file.addChangeRevision("1.2", author, date2, null, 0, 0, 0, null);
103 final Revision rev3 = file.addDeletionRevision("1.3", author, date3, null, 0, null);
104 final Revision rev1 = file.addInitialRevision("1.1", author, date1, null, 0, null);
105 final Iterator revIt = file.getRevisions().iterator();
106 assertEquals(rev1, revIt.next());
107 assertEquals(rev2, revIt.next());
108 assertEquals(rev3, revIt.next());
109 assertTrue(!revIt.hasNext());
110 }
111
112 /**
113 * Method testModuleName.
114 */
115 public void testDirectories() {
116 final VersionedFile file1 = new VersionedFile("rootfile.file", dirRoot);
117 file1.addInitialRevision("1.1", author, date1, null, 0, null);
118 final VersionedFile file2 = new VersionedFile("test/file.file", dirTest);
119 assertEquals(dirRoot, file1.getDirectory());
120 assertEquals(dirTest, file2.getDirectory());
121 }
122
123 /**
124 * Method testGetFilename
125 *
126 */
127 public void testGetFilename() {
128 VersionedFile file = new VersionedFile("TestFile.java", dirRoot);
129 assertEquals("TestFile.java", file.getFilename());
130 file = new VersionedFile("", dirRoot);
131 assertEquals("", file.getFilename());
132 file = new VersionedFile("/", dirRoot);
133 assertEquals("", file.getFilename());
134 }
135
136 /**
137 * test getPreviousRevision()
138 */
139 public void testGetPreviousRevision() {
140 final VersionedFile file = new VersionedFile("file", dirRoot);
141 final Revision rev1 = file.addInitialRevision("1.1", author, date1, "message1", 0, null);
142 final Revision rev2 = file.addChangeRevision("1.2", author, date2, "message2", 0, 0, 0, null);
143 final Revision rev3 = file.addChangeRevision("1.3", author, date3, "message3", 0, 0, 0, null);
144 assertNull(rev1.getPreviousRevision());
145 assertNull(file.getPreviousRevision(rev1));
146 assertEquals(rev1, rev2.getPreviousRevision());
147 assertEquals(rev1, file.getPreviousRevision(rev2));
148 assertEquals(rev2, rev3.getPreviousRevision());
149 assertEquals(rev2, file.getPreviousRevision(rev3));
150 try {
151 file.getPreviousRevision(new Revision(new VersionedFile("foo", dirRoot), "1.1", Revision.TYPE_CHANGE, null, date3, null, 0, 0, 0, null));
152 fail("should have thrown IllegalArgumentException");
153 } catch (final IllegalArgumentException expected) {
154
155 }
156 }
157
158 /**
159 * Test if files are added to their directory's file list
160 */
161 public void testLinkToDirectory() {
162 final VersionedFile file = new VersionedFile("test/file", dirTest);
163 file.addInitialRevision("1.1", author, date1, "message1", 0, null);
164 assertEquals(dirTest, file.getDirectory());
165 assertTrue(dirTest.getFiles().contains(file));
166 }
167
168 /**
169 * The null author used for "begin of log" revisions must not be included
170 * in the authors list
171 */
172 public void testIgnoreNullAuthor() {
173 final VersionedFile file = new VersionedFile("file", dirRoot);
174 new Revision(file, "1.5", Revision.TYPE_CHANGE, new Author("author"), new Date(200000000), null, 0, 0, 0, null);
175 new Revision(file, "0.0", Revision.TYPE_BEGIN_OF_LOG, null, new Date(100000000), null, 0, 0, 0, null);
176
177 assertTrue(!file.hasAuthor(null));
178 }
179
180 public void testCompareTo() {
181 assertTrue(new VersionedFile("file1", dirRoot).compareTo(new VersionedFile("file2", dirRoot)) < 0);
182 }
183 }