/* * Copyright (C) 2008 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.os; import android.content.Context; import android.test.AndroidTestCase; import android.test.suitebuilder.annotation.MediumTest; import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileOutputStream; import java.io.FileWriter; public class FileUtilsTest extends AndroidTestCase { private static final String TEST_DATA = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; private File mTestFile; private File mCopyFile; @Override protected void setUp() throws Exception { super.setUp(); File testDir = getContext().getDir("testing", Context.MODE_PRIVATE); mTestFile = new File(testDir, "test.file"); mCopyFile = new File(testDir, "copy.file"); FileWriter writer = new FileWriter(mTestFile); try { writer.write(TEST_DATA, 0, TEST_DATA.length()); } finally { writer.close(); } } @Override protected void tearDown() throws Exception { if (mTestFile.exists()) mTestFile.delete(); if (mCopyFile.exists()) mCopyFile.delete(); } // TODO: test setPermissions(), getPermissions() @MediumTest public void testCopyFile() throws Exception { assertFalse(mCopyFile.exists()); FileUtils.copyFile(mTestFile, mCopyFile); assertTrue(mCopyFile.exists()); assertEquals(TEST_DATA, FileUtils.readTextFile(mCopyFile, 0, null)); } @MediumTest public void testCopyToFile() throws Exception { final String s = "Foo Bar"; assertFalse(mCopyFile.exists()); FileUtils.copyToFile(new ByteArrayInputStream(s.getBytes()), mCopyFile); assertTrue(mCopyFile.exists()); assertEquals(s, FileUtils.readTextFile(mCopyFile, 0, null)); } @MediumTest public void testIsFilenameSafe() throws Exception { assertTrue(FileUtils.isFilenameSafe(new File("foobar"))); assertTrue(FileUtils.isFilenameSafe(new File("a_b-c=d.e/0,1+23"))); assertFalse(FileUtils.isFilenameSafe(new File("foo*bar"))); assertFalse(FileUtils.isFilenameSafe(new File("foo\nbar"))); } @MediumTest public void testReadTextFile() throws Exception { assertEquals(TEST_DATA, FileUtils.readTextFile(mTestFile, 0, null)); assertEquals("ABCDE", FileUtils.readTextFile(mTestFile, 5, null)); assertEquals("ABCDE<>", FileUtils.readTextFile(mTestFile, 5, "<>")); assertEquals(TEST_DATA.substring(0, 51) + "<>", FileUtils.readTextFile(mTestFile, 51, "<>")); assertEquals(TEST_DATA, FileUtils.readTextFile(mTestFile, 52, "<>")); assertEquals(TEST_DATA, FileUtils.readTextFile(mTestFile, 100, "<>")); assertEquals("vwxyz", FileUtils.readTextFile(mTestFile, -5, null)); assertEquals("<>vwxyz", FileUtils.readTextFile(mTestFile, -5, "<>")); assertEquals("<>" + TEST_DATA.substring(1, 52), FileUtils.readTextFile(mTestFile, -51, "<>")); assertEquals(TEST_DATA, FileUtils.readTextFile(mTestFile, -52, "<>")); assertEquals(TEST_DATA, FileUtils.readTextFile(mTestFile, -100, "<>")); } @MediumTest public void testReadTextFileWithZeroLengthFile() throws Exception { new FileOutputStream(mTestFile).close(); // Zero out the file assertEquals("", FileUtils.readTextFile(mTestFile, 0, null)); assertEquals("", FileUtils.readTextFile(mTestFile, 1, "<>")); assertEquals("", FileUtils.readTextFile(mTestFile, 10, "<>")); assertEquals("", FileUtils.readTextFile(mTestFile, -1, "<>")); assertEquals("", FileUtils.readTextFile(mTestFile, -10, "<>")); } }