1   /*
2       StatCvs - CVS statistics generation 
3       Copyright (C) 2002  Lukasz Pekacki <lukasz@pekacki.de>
4       http://statcvs.sf.net/
5       
6       This library is free software; you can redistribute it and/or
7       modify it under the terms of the GNU Lesser General Public
8       License as published by the Free Software Foundation; either
9       version 2.1 of the License, or (at your option) any later version.
10  
11      This library is distributed in the hope that it will be useful,
12      but WITHOUT ANY WARRANTY; without even the implied warranty of
13      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14      Lesser General Public License for more details.
15  
16      You should have received a copy of the GNU Lesser General Public
17      License along with this library; if not, write to the Free Software
18      Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19      
20  	$Name:  $ 
21  	Created on $Date: 2002/08/23 02:04:12 $ 
22  */
23  package net.sf.statcvs.renderer;
24  
25  import java.util.ArrayList;
26  import java.util.List;
27  import java.util.NoSuchElementException;
28  
29  import junit.framework.TestCase;
30  
31  /**
32   * @author Anja Jentzsch
33   * @author Richard Cyganiak
34   * @version $Id: FileCollectionFormatterTest.java,v 1.4 2002/08/23 02:04:12 cyganiak Exp $
35   */
36  public class FileCollectionFormatterTest extends TestCase {
37  
38      private FileCollectionFormatter fcf;
39      private final List files = new ArrayList();
40  
41      /**
42       * Constructor for FileCollectionFormatterTest.
43       * @param arg0 filename
44       */
45      public FileCollectionFormatterTest(final String arg0) {
46          super(arg0);
47      }
48  
49      /**
50       * @see TestCase#setUp()
51       */
52      protected void setUp() throws Exception {
53          super.setUp();
54      }
55  
56      /**
57       * Method testHelperMethods.
58       */
59      public void testHelperMethods() {
60          assertEquals(0, FileCollectionFormatter.getDepth(""));
61          assertEquals(1, FileCollectionFormatter.getDepth("test/"));
62          assertEquals(2, FileCollectionFormatter.getDepth("test/foo/"));
63          assertEquals("", FileCollectionFormatter.getParent(""));
64          assertEquals("", FileCollectionFormatter.getParent("test/"));
65          assertEquals("dir/", FileCollectionFormatter.getParent("dir/test/"));
66          assertEquals("", FileCollectionFormatter.getDirectory("test.file"));
67          assertEquals("dir/", FileCollectionFormatter.getDirectory("dir/test.file"));
68          assertEquals("dir/subdir/", FileCollectionFormatter.getDirectory("dir/subdir/test.file"));
69          assertEquals("file.name", FileCollectionFormatter.getRelativeFilename("file.name", ""));
70          assertEquals("subdir/file.name", FileCollectionFormatter.getRelativeFilename("subdir/file.name", ""));
71          assertEquals("subdir/", FileCollectionFormatter.getRelativeFilename("subdir/", ""));
72          assertEquals("", FileCollectionFormatter.getRelativeFilename("", ""));
73          assertEquals("file.name", FileCollectionFormatter.getRelativeFilename("subdir/file.name", "subdir/"));
74          assertEquals("", FileCollectionFormatter.getRelativeFilename("subdir/", "subdir/"));
75          assertEquals("dir/", FileCollectionFormatter.getRelativeFilename("subdir/dir/", "subdir/"));
76      }
77  
78      /**
79       * Method testCreation.
80       */
81      public void testCreation() {
82          new FileCollectionFormatter(new ArrayList());
83      }
84  
85      /**
86       * Method testEmpty.
87       */
88      public void testEmpty() {
89          fcf = new FileCollectionFormatter(files);
90          final List dirs = fcf.getDirectories();
91          assertNotNull(dirs);
92          assertTrue(dirs.isEmpty());
93      }
94  
95      /**
96       * Method testOneFile.
97       */
98      public void testOneFile() {
99          files.add("directory/file.txt");
100         fcf = new FileCollectionFormatter(files);
101         final List dirs = fcf.getDirectories();
102         assertEquals(1, dirs.size());
103         assertEquals("directory/", dirs.get(0));
104         final List names = fcf.getFiles("directory/");
105         assertEquals(1, names.size());
106         assertEquals("file.txt", names.get(0));
107     }
108 
109     /**
110      * Method testOneFileDeep.
111      */
112     public void testOneFileDeep() {
113         files.add("sub1/sub2/sub3/file.txt");
114         fcf = new FileCollectionFormatter(files);
115         final List dirs = fcf.getDirectories();
116         assertEquals(1, dirs.size());
117         assertEquals("sub1/sub2/sub3/", dirs.get(0));
118         final List names = fcf.getFiles("sub1/sub2/sub3/");
119         assertEquals(1, names.size());
120         assertEquals("file.txt", names.get(0));
121     }
122 
123     /**
124      * Method testTwoFilesDifferentDir.
125      */
126     public void testTwoFilesDifferentDir() {
127         files.add("directory/file.txt");
128         files.add("inRoot.txt");
129         fcf = new FileCollectionFormatter(files);
130         final List dirs = fcf.getDirectories();
131         assertEquals(2, dirs.size());
132         assertEquals("", dirs.get(0));
133         assertEquals("directory/", dirs.get(1));
134         List names = fcf.getFiles("");
135         assertEquals(1, names.size());
136         assertEquals("inRoot.txt", names.get(0));
137         names = fcf.getFiles("directory/");
138         assertEquals(1, names.size());
139         assertEquals("file.txt", names.get(0));
140     }
141 
142     /**
143      * Method testTwoFilesSameDir.
144      */
145     public void testTwoFilesSameDir() {
146         files.add("directory/file2.txt");
147         files.add("directory/file1.txt");
148         fcf = new FileCollectionFormatter(files);
149         final List dirs = fcf.getDirectories();
150         assertEquals(1, dirs.size());
151         assertEquals("directory/", dirs.get(0));
152         final List names = fcf.getFiles("directory/");
153         assertEquals(2, names.size());
154         assertEquals("file1.txt", names.get(0));
155         assertEquals("file2.txt", names.get(1));
156     }
157 
158     /**
159      * Method testUnknownDirectory.
160      */
161     public void testUnknownDirectory() {
162         files.add("directory/foo.txt");
163         fcf = new FileCollectionFormatter(files);
164         try {
165             fcf.getFiles("nonexistingDirectory/");
166             fail("should have thrown exception");
167         } catch (final NoSuchElementException e) {
168             // do nothing
169         }
170     }
171 
172     /**
173      * Method testExcludeSubdir.
174      */
175     public void testExcludeSubdir() {
176         files.add("directory/file2.txt");
177         files.add("directory/file1.txt");
178         files.add("fileInRoot");
179         fcf = new FileCollectionFormatter(files);
180         final List dirs = fcf.getDirectories();
181         assertEquals(2, dirs.size());
182         assertEquals("", dirs.get(0));
183         assertEquals("directory/", dirs.get(1));
184         List names = fcf.getFiles("directory/");
185         assertEquals(2, names.size());
186         assertEquals("file1.txt", names.get(0));
187         assertEquals("file2.txt", names.get(1));
188         names = fcf.getFiles("");
189         assertEquals(1, names.size());
190         assertEquals("fileInRoot", names.get(0));
191     }
192 }