13c7febdbd86070337810d1ff741d35430707726aDaniel Nishi/* 23c7febdbd86070337810d1ff741d35430707726aDaniel Nishi * Copyright (C) 2016 The Android Open Source Project 33c7febdbd86070337810d1ff741d35430707726aDaniel Nishi * 43c7febdbd86070337810d1ff741d35430707726aDaniel Nishi * Licensed under the Apache License, Version 2.0 (the "License"); 53c7febdbd86070337810d1ff741d35430707726aDaniel Nishi * you may not use this file except in compliance with the License. 63c7febdbd86070337810d1ff741d35430707726aDaniel Nishi * You may obtain a copy of the License at 73c7febdbd86070337810d1ff741d35430707726aDaniel Nishi * 83c7febdbd86070337810d1ff741d35430707726aDaniel Nishi * http://www.apache.org/licenses/LICENSE-2.0 93c7febdbd86070337810d1ff741d35430707726aDaniel Nishi * 103c7febdbd86070337810d1ff741d35430707726aDaniel Nishi * Unless required by applicable law or agreed to in writing, software 113c7febdbd86070337810d1ff741d35430707726aDaniel Nishi * distributed under the License is distributed on an "AS IS" BASIS, 123c7febdbd86070337810d1ff741d35430707726aDaniel Nishi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 133c7febdbd86070337810d1ff741d35430707726aDaniel Nishi * See the License for the specific language governing permissions and 143c7febdbd86070337810d1ff741d35430707726aDaniel Nishi * limitations under the License. 153c7febdbd86070337810d1ff741d35430707726aDaniel Nishi */ 163c7febdbd86070337810d1ff741d35430707726aDaniel Nishi 173c7febdbd86070337810d1ff741d35430707726aDaniel Nishipackage com.android.server.storage; 183c7febdbd86070337810d1ff741d35430707726aDaniel Nishi 193c7febdbd86070337810d1ff741d35430707726aDaniel Nishiimport android.test.AndroidTestCase; 203c7febdbd86070337810d1ff741d35430707726aDaniel Nishiimport com.android.server.storage.FileCollector.MeasurementResult; 213c7febdbd86070337810d1ff741d35430707726aDaniel Nishiimport org.junit.Before; 223c7febdbd86070337810d1ff741d35430707726aDaniel Nishiimport org.junit.Rule; 233c7febdbd86070337810d1ff741d35430707726aDaniel Nishiimport org.junit.Test; 243c7febdbd86070337810d1ff741d35430707726aDaniel Nishiimport org.junit.rules.TemporaryFolder; 253c7febdbd86070337810d1ff741d35430707726aDaniel Nishiimport org.junit.runner.RunWith; 263c7febdbd86070337810d1ff741d35430707726aDaniel Nishiimport org.junit.runners.JUnit4; 273c7febdbd86070337810d1ff741d35430707726aDaniel Nishi 283c7febdbd86070337810d1ff741d35430707726aDaniel Nishiimport java.io.File; 293c7febdbd86070337810d1ff741d35430707726aDaniel Nishiimport java.io.PrintStream; 303c7febdbd86070337810d1ff741d35430707726aDaniel Nishi 313c7febdbd86070337810d1ff741d35430707726aDaniel Nishiimport static com.google.common.truth.Truth.assertThat; 323c7febdbd86070337810d1ff741d35430707726aDaniel Nishi 333c7febdbd86070337810d1ff741d35430707726aDaniel Nishi@RunWith(JUnit4.class) 343c7febdbd86070337810d1ff741d35430707726aDaniel Nishipublic class FileCollectorTest extends AndroidTestCase { 353c7febdbd86070337810d1ff741d35430707726aDaniel Nishi @Rule 363c7febdbd86070337810d1ff741d35430707726aDaniel Nishi public TemporaryFolder temporaryFolder; 373c7febdbd86070337810d1ff741d35430707726aDaniel Nishi 383c7febdbd86070337810d1ff741d35430707726aDaniel Nishi @Before 393c7febdbd86070337810d1ff741d35430707726aDaniel Nishi public void setUp() throws Exception { 403c7febdbd86070337810d1ff741d35430707726aDaniel Nishi temporaryFolder = new TemporaryFolder(); 413c7febdbd86070337810d1ff741d35430707726aDaniel Nishi temporaryFolder.create(); 423c7febdbd86070337810d1ff741d35430707726aDaniel Nishi } 433c7febdbd86070337810d1ff741d35430707726aDaniel Nishi 443c7febdbd86070337810d1ff741d35430707726aDaniel Nishi @Test 453c7febdbd86070337810d1ff741d35430707726aDaniel Nishi public void testEmpty() throws Exception { 463c7febdbd86070337810d1ff741d35430707726aDaniel Nishi MeasurementResult result = FileCollector.getMeasurementResult(temporaryFolder.getRoot()); 473c7febdbd86070337810d1ff741d35430707726aDaniel Nishi assertThat(result.totalAccountedSize()).isEqualTo(0L); 483c7febdbd86070337810d1ff741d35430707726aDaniel Nishi } 493c7febdbd86070337810d1ff741d35430707726aDaniel Nishi 503c7febdbd86070337810d1ff741d35430707726aDaniel Nishi @Test 513c7febdbd86070337810d1ff741d35430707726aDaniel Nishi public void testImageFile() throws Exception { 523c7febdbd86070337810d1ff741d35430707726aDaniel Nishi writeDataToFile(temporaryFolder.newFile("test.jpg"), "1234"); 533c7febdbd86070337810d1ff741d35430707726aDaniel Nishi 543c7febdbd86070337810d1ff741d35430707726aDaniel Nishi MeasurementResult result = FileCollector.getMeasurementResult(temporaryFolder.getRoot()); 553c7febdbd86070337810d1ff741d35430707726aDaniel Nishi 563c7febdbd86070337810d1ff741d35430707726aDaniel Nishi assertThat(result.imagesSize).isEqualTo(4); 573c7febdbd86070337810d1ff741d35430707726aDaniel Nishi } 583c7febdbd86070337810d1ff741d35430707726aDaniel Nishi 593c7febdbd86070337810d1ff741d35430707726aDaniel Nishi @Test 603c7febdbd86070337810d1ff741d35430707726aDaniel Nishi public void testVideoFile() throws Exception { 613c7febdbd86070337810d1ff741d35430707726aDaniel Nishi writeDataToFile(temporaryFolder.newFile("test.mp4"), "1234"); 623c7febdbd86070337810d1ff741d35430707726aDaniel Nishi 633c7febdbd86070337810d1ff741d35430707726aDaniel Nishi MeasurementResult result = FileCollector.getMeasurementResult(temporaryFolder.getRoot()); 643c7febdbd86070337810d1ff741d35430707726aDaniel Nishi 653c7febdbd86070337810d1ff741d35430707726aDaniel Nishi assertThat(result.videosSize).isEqualTo(4); 663c7febdbd86070337810d1ff741d35430707726aDaniel Nishi } 673c7febdbd86070337810d1ff741d35430707726aDaniel Nishi 683c7febdbd86070337810d1ff741d35430707726aDaniel Nishi @Test 693c7febdbd86070337810d1ff741d35430707726aDaniel Nishi public void testAudioFile() throws Exception { 703c7febdbd86070337810d1ff741d35430707726aDaniel Nishi writeDataToFile(temporaryFolder.newFile("test.mp3"), "1234"); 713c7febdbd86070337810d1ff741d35430707726aDaniel Nishi 723c7febdbd86070337810d1ff741d35430707726aDaniel Nishi MeasurementResult result = FileCollector.getMeasurementResult(temporaryFolder.getRoot()); 733c7febdbd86070337810d1ff741d35430707726aDaniel Nishi 743c7febdbd86070337810d1ff741d35430707726aDaniel Nishi assertThat(result.audioSize).isEqualTo(4); 753c7febdbd86070337810d1ff741d35430707726aDaniel Nishi } 763c7febdbd86070337810d1ff741d35430707726aDaniel Nishi 773c7febdbd86070337810d1ff741d35430707726aDaniel Nishi @Test 783c7febdbd86070337810d1ff741d35430707726aDaniel Nishi public void testMiscFile() throws Exception { 793c7febdbd86070337810d1ff741d35430707726aDaniel Nishi writeDataToFile(temporaryFolder.newFile("test"), "1234"); 803c7febdbd86070337810d1ff741d35430707726aDaniel Nishi 813c7febdbd86070337810d1ff741d35430707726aDaniel Nishi MeasurementResult result = FileCollector.getMeasurementResult(temporaryFolder.getRoot()); 823c7febdbd86070337810d1ff741d35430707726aDaniel Nishi 833c7febdbd86070337810d1ff741d35430707726aDaniel Nishi assertThat(result.miscSize).isEqualTo(4); 843c7febdbd86070337810d1ff741d35430707726aDaniel Nishi } 853c7febdbd86070337810d1ff741d35430707726aDaniel Nishi 863c7febdbd86070337810d1ff741d35430707726aDaniel Nishi @Test 873c7febdbd86070337810d1ff741d35430707726aDaniel Nishi public void testNestedFile() throws Exception { 883c7febdbd86070337810d1ff741d35430707726aDaniel Nishi File directory = temporaryFolder.newFolder(); 893c7febdbd86070337810d1ff741d35430707726aDaniel Nishi writeDataToFile(new File(directory, "test"), "1234"); 903c7febdbd86070337810d1ff741d35430707726aDaniel Nishi 913c7febdbd86070337810d1ff741d35430707726aDaniel Nishi MeasurementResult result = FileCollector.getMeasurementResult(temporaryFolder.getRoot()); 923c7febdbd86070337810d1ff741d35430707726aDaniel Nishi 933c7febdbd86070337810d1ff741d35430707726aDaniel Nishi assertThat(result.miscSize).isEqualTo(4); 943c7febdbd86070337810d1ff741d35430707726aDaniel Nishi } 953c7febdbd86070337810d1ff741d35430707726aDaniel Nishi 963c7febdbd86070337810d1ff741d35430707726aDaniel Nishi @Test 973c7febdbd86070337810d1ff741d35430707726aDaniel Nishi public void testMultipleFiles() throws Exception { 983c7febdbd86070337810d1ff741d35430707726aDaniel Nishi writeDataToFile(temporaryFolder.newFile("test"), "1234"); 993c7febdbd86070337810d1ff741d35430707726aDaniel Nishi writeDataToFile(temporaryFolder.newFile("test2"), "12345"); 1003c7febdbd86070337810d1ff741d35430707726aDaniel Nishi 1013c7febdbd86070337810d1ff741d35430707726aDaniel Nishi MeasurementResult result = FileCollector.getMeasurementResult(temporaryFolder.getRoot()); 1023c7febdbd86070337810d1ff741d35430707726aDaniel Nishi 1033c7febdbd86070337810d1ff741d35430707726aDaniel Nishi assertThat(result.miscSize).isEqualTo(9); 1043c7febdbd86070337810d1ff741d35430707726aDaniel Nishi } 1053c7febdbd86070337810d1ff741d35430707726aDaniel Nishi 1063c7febdbd86070337810d1ff741d35430707726aDaniel Nishi @Test 1073c7febdbd86070337810d1ff741d35430707726aDaniel Nishi public void testTotalSize() throws Exception { 1083c7febdbd86070337810d1ff741d35430707726aDaniel Nishi writeDataToFile(temporaryFolder.newFile("test.jpg"), "1"); 1093c7febdbd86070337810d1ff741d35430707726aDaniel Nishi writeDataToFile(temporaryFolder.newFile("test.mp3"), "1"); 1103c7febdbd86070337810d1ff741d35430707726aDaniel Nishi writeDataToFile(temporaryFolder.newFile("test.mp4"), "1"); 1113c7febdbd86070337810d1ff741d35430707726aDaniel Nishi writeDataToFile(temporaryFolder.newFile("test"), "1"); 1123c7febdbd86070337810d1ff741d35430707726aDaniel Nishi 1133c7febdbd86070337810d1ff741d35430707726aDaniel Nishi MeasurementResult result = FileCollector.getMeasurementResult(temporaryFolder.getRoot()); 1143c7febdbd86070337810d1ff741d35430707726aDaniel Nishi 1153c7febdbd86070337810d1ff741d35430707726aDaniel Nishi assertThat(result.totalAccountedSize()).isEqualTo(4); 1163c7febdbd86070337810d1ff741d35430707726aDaniel Nishi } 1173c7febdbd86070337810d1ff741d35430707726aDaniel Nishi 1183c7febdbd86070337810d1ff741d35430707726aDaniel Nishi @Test 1193c7febdbd86070337810d1ff741d35430707726aDaniel Nishi public void testFileEndsWithPeriod() throws Exception { 1203c7febdbd86070337810d1ff741d35430707726aDaniel Nishi writeDataToFile(temporaryFolder.newFile("test."), "1"); 1213c7febdbd86070337810d1ff741d35430707726aDaniel Nishi 1223c7febdbd86070337810d1ff741d35430707726aDaniel Nishi MeasurementResult result = FileCollector.getMeasurementResult(temporaryFolder.getRoot()); 1233c7febdbd86070337810d1ff741d35430707726aDaniel Nishi 1243c7febdbd86070337810d1ff741d35430707726aDaniel Nishi assertThat(result.miscSize).isEqualTo(1); 1253c7febdbd86070337810d1ff741d35430707726aDaniel Nishi assertThat(result.totalAccountedSize()).isEqualTo(1); 1263c7febdbd86070337810d1ff741d35430707726aDaniel Nishi } 1273c7febdbd86070337810d1ff741d35430707726aDaniel Nishi 1283c7febdbd86070337810d1ff741d35430707726aDaniel Nishi public void testIgnoreFileExtensionCase() throws Exception { 1293c7febdbd86070337810d1ff741d35430707726aDaniel Nishi writeDataToFile(temporaryFolder.newFile("test.JpG"), "1234"); 1303c7febdbd86070337810d1ff741d35430707726aDaniel Nishi 1313c7febdbd86070337810d1ff741d35430707726aDaniel Nishi MeasurementResult result = FileCollector.getMeasurementResult(temporaryFolder.getRoot()); 1323c7febdbd86070337810d1ff741d35430707726aDaniel Nishi 1333c7febdbd86070337810d1ff741d35430707726aDaniel Nishi assertThat(result.imagesSize).isEqualTo(4); 1343c7febdbd86070337810d1ff741d35430707726aDaniel Nishi } 1353c7febdbd86070337810d1ff741d35430707726aDaniel Nishi 1363c7febdbd86070337810d1ff741d35430707726aDaniel Nishi private void writeDataToFile(File f, String data) throws Exception{ 1373c7febdbd86070337810d1ff741d35430707726aDaniel Nishi PrintStream out = new PrintStream(f); 1383c7febdbd86070337810d1ff741d35430707726aDaniel Nishi out.print(data); 1393c7febdbd86070337810d1ff741d35430707726aDaniel Nishi out.close(); 1403c7febdbd86070337810d1ff741d35430707726aDaniel Nishi } 1413c7febdbd86070337810d1ff741d35430707726aDaniel Nishi} 142