FileCollectorTest.java revision 3c7febdbd86070337810d1ff741d35430707726a
1/*
2 * Copyright (C) 2016 The Android Open Source Project
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
17package com.android.server.storage;
18
19import android.test.AndroidTestCase;
20import com.android.server.storage.FileCollector.MeasurementResult;
21import org.junit.Before;
22import org.junit.Rule;
23import org.junit.Test;
24import org.junit.rules.TemporaryFolder;
25import org.junit.runner.RunWith;
26import org.junit.runners.JUnit4;
27
28import java.io.File;
29import java.io.PrintStream;
30
31import static com.google.common.truth.Truth.assertThat;
32
33@RunWith(JUnit4.class)
34public class FileCollectorTest extends AndroidTestCase {
35    @Rule
36    public TemporaryFolder temporaryFolder;
37
38    @Before
39    public void setUp() throws Exception {
40        temporaryFolder = new TemporaryFolder();
41        temporaryFolder.create();
42    }
43
44    @Test
45    public void testEmpty() throws Exception {
46        MeasurementResult result = FileCollector.getMeasurementResult(temporaryFolder.getRoot());
47        assertThat(result.totalAccountedSize()).isEqualTo(0L);
48    }
49
50    @Test
51    public void testImageFile() throws Exception {
52        writeDataToFile(temporaryFolder.newFile("test.jpg"), "1234");
53
54        MeasurementResult result = FileCollector.getMeasurementResult(temporaryFolder.getRoot());
55
56        assertThat(result.imagesSize).isEqualTo(4);
57    }
58
59    @Test
60    public void testVideoFile() throws Exception {
61        writeDataToFile(temporaryFolder.newFile("test.mp4"), "1234");
62
63        MeasurementResult result = FileCollector.getMeasurementResult(temporaryFolder.getRoot());
64
65        assertThat(result.videosSize).isEqualTo(4);
66    }
67
68    @Test
69    public void testAudioFile() throws Exception {
70        writeDataToFile(temporaryFolder.newFile("test.mp3"), "1234");
71
72        MeasurementResult result = FileCollector.getMeasurementResult(temporaryFolder.getRoot());
73
74        assertThat(result.audioSize).isEqualTo(4);
75    }
76
77    @Test
78    public void testMiscFile() throws Exception {
79        writeDataToFile(temporaryFolder.newFile("test"), "1234");
80
81        MeasurementResult result = FileCollector.getMeasurementResult(temporaryFolder.getRoot());
82
83        assertThat(result.miscSize).isEqualTo(4);
84    }
85
86    @Test
87    public void testNestedFile() throws Exception {
88        File directory = temporaryFolder.newFolder();
89        writeDataToFile(new File(directory, "test"), "1234");
90
91        MeasurementResult result = FileCollector.getMeasurementResult(temporaryFolder.getRoot());
92
93        assertThat(result.miscSize).isEqualTo(4);
94    }
95
96    @Test
97    public void testMultipleFiles() throws Exception {
98        writeDataToFile(temporaryFolder.newFile("test"), "1234");
99        writeDataToFile(temporaryFolder.newFile("test2"), "12345");
100
101        MeasurementResult result = FileCollector.getMeasurementResult(temporaryFolder.getRoot());
102
103        assertThat(result.miscSize).isEqualTo(9);
104    }
105
106    @Test
107    public void testTotalSize() throws Exception {
108        writeDataToFile(temporaryFolder.newFile("test.jpg"), "1");
109        writeDataToFile(temporaryFolder.newFile("test.mp3"), "1");
110        writeDataToFile(temporaryFolder.newFile("test.mp4"), "1");
111        writeDataToFile(temporaryFolder.newFile("test"), "1");
112
113        MeasurementResult result = FileCollector.getMeasurementResult(temporaryFolder.getRoot());
114
115        assertThat(result.totalAccountedSize()).isEqualTo(4);
116    }
117
118    @Test
119    public void testFileEndsWithPeriod() throws Exception {
120        writeDataToFile(temporaryFolder.newFile("test."), "1");
121
122        MeasurementResult result = FileCollector.getMeasurementResult(temporaryFolder.getRoot());
123
124        assertThat(result.miscSize).isEqualTo(1);
125        assertThat(result.totalAccountedSize()).isEqualTo(1);
126    }
127
128    public void testIgnoreFileExtensionCase() throws Exception {
129        writeDataToFile(temporaryFolder.newFile("test.JpG"), "1234");
130
131        MeasurementResult result = FileCollector.getMeasurementResult(temporaryFolder.getRoot());
132
133        assertThat(result.imagesSize).isEqualTo(4);
134    }
135
136    private void writeDataToFile(File f, String data) throws Exception{
137        PrintStream out = new PrintStream(f);
138        out.print(data);
139        out.close();
140    }
141}
142