• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2017 The Guava Authors
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.google.common.io;
18 
19 import static com.google.common.truth.Truth.assertThat;
20 
21 import com.google.common.collect.Iterables;
22 import com.google.errorprone.annotations.CanIgnoreReturnValue;
23 import java.io.File;
24 import java.io.IOException;
25 
26 /**
27  * Tests for {@link Files#fileTraverser()}.
28  *
29  * @author Jens Nyman
30  */
31 
32 public class FilesFileTraverserTest extends IoTestCase {
33 
34   private File rootDir;
35 
36   @Override
setUp()37   public void setUp() throws IOException {
38     rootDir = createTempDir();
39   }
40 
testFileTraverser_emptyDirectory()41   public void testFileTraverser_emptyDirectory() throws Exception {
42     assertThat(Files.fileTraverser().breadthFirst(rootDir)).containsExactly(rootDir);
43   }
44 
testFileTraverser_nonExistingFile()45   public void testFileTraverser_nonExistingFile() throws Exception {
46     File file = new File(rootDir, "file-that-doesnt-exist");
47 
48     assertThat(Files.fileTraverser().breadthFirst(file)).containsExactly(file);
49   }
50 
testFileTraverser_file()51   public void testFileTraverser_file() throws Exception {
52     File file = newFile("some-file");
53 
54     assertThat(Files.fileTraverser().breadthFirst(file)).containsExactly(file);
55   }
56 
testFileTraverser_singleFile()57   public void testFileTraverser_singleFile() throws Exception {
58     File file = newFile("some-file");
59 
60     assertThat(Files.fileTraverser().breadthFirst(rootDir)).containsExactly(rootDir, file);
61   }
62 
testFileTraverser_singleDirectory()63   public void testFileTraverser_singleDirectory() throws Exception {
64     File file = newDir("some-dir");
65 
66     assertThat(Files.fileTraverser().breadthFirst(rootDir)).containsExactly(rootDir, file);
67   }
68 
testFileTraverser_multipleFilesAndDirectories()69   public void testFileTraverser_multipleFilesAndDirectories() throws Exception {
70     File fileA = newFile("file-a");
71     File fileB = newFile("file-b");
72     File dir1 = newDir("dir-1");
73     File dir2 = newDir("dir-2");
74 
75     assertThat(Files.fileTraverser().breadthFirst(rootDir))
76         .containsExactly(rootDir, fileA, fileB, dir1, dir2);
77   }
78 
testFileTraverser_multipleDirectoryLayers_breadthFirstStartsWithTopLayer()79   public void testFileTraverser_multipleDirectoryLayers_breadthFirstStartsWithTopLayer()
80       throws Exception {
81     File fileA = newFile("file-a");
82     File dir1 = newDir("dir-1");
83     newFile("dir-1/file-b");
84     newFile("dir-1/dir-2");
85 
86     assertThat(Iterables.limit(Files.fileTraverser().breadthFirst(rootDir), 3))
87         .containsExactly(rootDir, fileA, dir1);
88   }
89 
testFileTraverser_multipleDirectoryLayers_traversalReturnsAll()90   public void testFileTraverser_multipleDirectoryLayers_traversalReturnsAll() throws Exception {
91     File fileA = newFile("file-a");
92     File dir1 = newDir("dir-1");
93     File fileB = newFile("dir-1/file-b");
94     File dir2 = newFile("dir-1/dir-2");
95 
96     assertThat(Files.fileTraverser().breadthFirst(rootDir))
97         .containsExactly(rootDir, fileA, fileB, dir1, dir2);
98   }
99 
100   @CanIgnoreReturnValue
newDir(String name)101   private File newDir(String name) {
102     File file = new File(rootDir, name);
103     file.mkdir();
104     return file;
105   }
106 
107   @CanIgnoreReturnValue
newFile(String name)108   private File newFile(String name) throws IOException {
109     File file = new File(rootDir, name);
110     file.createNewFile();
111     return file;
112   }
113 }
114