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 * @author Richard Cyganiak
32 * @version $Id: DirectoryTest.java,v 1.19 2008/04/02 11:22:15 benoitx Exp $
33 */
34 public class DirectoryTest extends TestCase {
35
36 private Directory root;
37 private Directory rootSrc;
38 private Directory rootSrcNet;
39 private Directory rootSrcNetSf;
40 private Directory rootSrcNetSfStatcvs;
41 private Date date1;
42 private Date date2;
43 private Date date3;
44 private Date date4;
45 private Author author;
46
47 /**
48 * Constructor
49 * @param arg0 input
50 */
51 public DirectoryTest(final String arg0) {
52 super(arg0);
53 }
54
55 /**
56 * @see TestCase#setUp()
57 */
58 protected void setUp() throws Exception {
59 super.setUp();
60 root = Directory.createRoot();
61 rootSrc = root.createSubdirectory("src");
62 rootSrcNet = rootSrc.createSubdirectory("net");
63 rootSrcNetSf = rootSrcNet.createSubdirectory("sf");
64 rootSrcNetSfStatcvs = rootSrcNetSf.createSubdirectory("statcvs");
65 date1 = new Date(100000000);
66 date2 = new Date(200000000);
67 date3 = new Date(300000000);
68 date4 = new Date(400000000);
69 author = new Author("chevette");
70 }
71
72 /**
73 * test the {@link DirectoryRoot} object
74 */
75 public void testRoot() {
76 assertNotNull(root);
77 assertTrue(root.isRoot());
78 assertNull(root.getParent());
79 assertEquals("", root.getName());
80 assertEquals("", root.getPath());
81 }
82
83 /**
84 * test the {@link DirectoryImpl} object
85 */
86 public void testNonRootDirectory() {
87 assertNotNull(rootSrcNetSfStatcvs);
88 assertTrue(!rootSrcNetSfStatcvs.isRoot());
89 assertNotNull(rootSrcNetSfStatcvs.getParent());
90 assertEquals("statcvs", rootSrcNetSfStatcvs.getName());
91 }
92
93 /**
94 * test the correct linking of parents, and {@link Directory.getPath()}
95 */
96 public void testPath() {
97 assertEquals(rootSrcNetSf, rootSrcNetSfStatcvs.getParent());
98 assertEquals(rootSrcNet, rootSrcNetSf.getParent());
99 assertEquals(rootSrc, rootSrcNet.getParent());
100 assertEquals(root, rootSrc.getParent());
101 assertEquals("src/net/sf/statcvs/", rootSrcNetSfStatcvs.getPath());
102 }
103
104 /**
105 * tests {@link Directory.getRevisions()}
106 */
107 public void testRevisions() {
108 final VersionedFile file1 = new VersionedFile("src/net/sf/statcvs/Main.java", rootSrcNetSfStatcvs);
109 final Revision rev11 = file1.addInitialRevision("1.1", author, date1, null, 0, null);
110 final Revision rev12 = file1.addChangeRevision("1.2", author, date3, null, 0, 0, 0, null);
111 final VersionedFile file2 = new VersionedFile("src/net/sf/statcvs/README", rootSrcNetSfStatcvs);
112 final Revision rev21 = file2.addInitialRevision("2.1", author, date2, null, 0, null);
113 final VersionedFile file3 = new VersionedFile("fileInRoot", root);
114 file3.addInitialRevision("3.1", author, date4, null, 0, null);
115 final Iterator revIt = rootSrcNetSfStatcvs.getRevisions().iterator();
116 assertTrue(revIt.hasNext());
117 assertEquals(rev11, revIt.next());
118 assertTrue(revIt.hasNext());
119 assertEquals(rev21, revIt.next());
120 assertTrue(revIt.hasNext());
121 assertEquals(rev12, revIt.next());
122 assertTrue(!revIt.hasNext());
123 }
124
125 /**
126 * tests {@link Directory.compareTo(Object)
127 */
128 public void testCompareSame() {
129 assertEquals(0, rootSrcNetSf.compareTo(rootSrcNetSf));
130 }
131
132 /**
133 * tests {@link Directory.compareTo(Object)
134 */
135 public void testCompareDifferent() {
136 final Directory dir1 = root.createSubdirectory("abc");
137 final Directory dir2 = root.createSubdirectory("abc");
138 final Directory dir3 = root.createSubdirectory("xyz");
139 assertEquals(0, dir1.compareTo(dir2));
140 assertTrue(dir1.compareTo(dir3) < 0);
141 assertTrue(dir3.compareTo(dir2) > 0);
142 }
143
144 /**
145 * tests {@link Directory.getDepth()}
146 */
147 public void testGetDepth() {
148 assertEquals(0, root.getDepth());
149 assertEquals(1, rootSrc.getDepth());
150 assertEquals(2, rootSrcNet.getDepth());
151 assertEquals(3, rootSrcNetSf.getDepth());
152 assertEquals(4, rootSrcNetSfStatcvs.getDepth());
153 }
154
155 /**
156 * Tests automatic creation of backlinks to subdirectories
157 */
158 public void testSubdirectories() {
159 assertEquals(1, root.getSubdirectories().size());
160 assertTrue(root.getSubdirectories().contains(rootSrc));
161 assertEquals(1, rootSrc.getSubdirectories().size());
162 assertTrue(rootSrc.getSubdirectories().contains(rootSrcNet));
163 assertEquals(1, rootSrcNet.getSubdirectories().size());
164 assertTrue(rootSrcNet.getSubdirectories().contains(rootSrcNetSf));
165 assertEquals(1, rootSrcNetSf.getSubdirectories().size());
166 assertTrue(rootSrcNetSf.getSubdirectories().contains(rootSrcNetSfStatcvs));
167 assertTrue(rootSrcNetSfStatcvs.getSubdirectories().isEmpty());
168 }
169
170 public void testEmptyRepository() {
171 assertTrue(root.isEmpty());
172 }
173
174 public void testNonEmptyRepository() {
175 final VersionedFile file1 = new VersionedFile("src/README", rootSrc);
176 file1.addInitialRevision("1.1", author, date1, null, 100, null);
177 assertTrue(!root.isEmpty());
178 assertTrue(!rootSrc.isEmpty());
179 assertTrue(rootSrcNet.isEmpty());
180 assertEquals(0, root.getCurrentFileCount());
181 assertEquals(1, rootSrc.getCurrentFileCount());
182 assertEquals(0, rootSrcNet.getCurrentFileCount());
183 assertEquals(0, root.getCurrentLOC());
184 assertEquals(100, rootSrc.getCurrentLOC());
185 assertEquals(0, rootSrcNet.getCurrentLOC());
186 }
187
188 public void testEmptyRepositoryWithDeletedFile() {
189 final VersionedFile file1 = new VersionedFile("src/README", rootSrc);
190 file1.addInitialRevision("1.1", author, date1, null, 100, null);
191 file1.addDeletionRevision("1.2", author, date2, null, 100, null);
192 assertTrue(root.isEmpty());
193 assertTrue(rootSrc.isEmpty());
194 assertTrue(rootSrcNet.isEmpty());
195 assertEquals(0, rootSrc.getCurrentFileCount());
196 assertEquals(0, rootSrc.getCurrentLOC());
197 }
198
199 public void testNonEmptyRepositoryWithDeletedFile() {
200 final VersionedFile file1 = new VersionedFile("src/README", rootSrc);
201 file1.addInitialRevision("1.1", author, date1, null, 100, null);
202 final VersionedFile file2 = new VersionedFile("src/README2", rootSrc);
203 file2.addInitialRevision("1.1", author, date1, null, 100, null);
204 final VersionedFile file3 = new VersionedFile("fileInRoot", root);
205 file3.addInitialRevision("1.1", author, date1, null, 100, null);
206 final VersionedFile file4 = new VersionedFile("src/deleted", rootSrc);
207 file4.addInitialRevision("1.1", author, date1, null, 100, null);
208 file4.addDeletionRevision("1.2", author, date2, null, 100, null);
209 assertTrue(!root.isEmpty());
210 assertTrue(!rootSrc.isEmpty());
211 assertTrue(rootSrcNet.isEmpty());
212 assertEquals(1, root.getCurrentFileCount());
213 assertEquals(2, rootSrc.getCurrentFileCount());
214 assertEquals(0, rootSrcNet.getCurrentFileCount());
215 assertEquals(100, root.getCurrentLOC());
216 assertEquals(200, rootSrc.getCurrentLOC());
217 assertEquals(0, rootSrcNet.getCurrentLOC());
218 }
219
220 public void testGetSubdirectoriesRecursive() {
221 final Directory rootDir = Directory.createRoot();
222 final Directory dir2 = rootDir.createSubdirectory("dir2");
223 final Directory dir2sub = dir2.createSubdirectory("sub");
224 final Directory dir1 = rootDir.createSubdirectory("dir1");
225 final Directory dir1sub2 = dir1.createSubdirectory("sub2");
226 final Directory dir1sub1 = dir1.createSubdirectory("sub1");
227 final Iterator dirIt = rootDir.getSubdirectoriesRecursive().iterator();
228 assertEquals(rootDir, dirIt.next());
229 assertEquals(dir1, dirIt.next());
230 assertEquals(dir1sub1, dirIt.next());
231 assertEquals(dir1sub2, dirIt.next());
232 assertEquals(dir2, dirIt.next());
233 assertEquals(dir2sub, dirIt.next());
234 assertTrue(!dirIt.hasNext());
235 }
236 }