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