| Index: libadblockplus-android-tests/src/org/adblockplus/libadblockplus/tests/AndroidFileSystemTest.java |
| diff --git a/libadblockplus-android-tests/src/org/adblockplus/libadblockplus/tests/AndroidFileSystemTest.java b/libadblockplus-android-tests/src/org/adblockplus/libadblockplus/tests/AndroidFileSystemTest.java |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..a6d9536cb887c2050ea1168af647a29a443457b3 |
| --- /dev/null |
| +++ b/libadblockplus-android-tests/src/org/adblockplus/libadblockplus/tests/AndroidFileSystemTest.java |
| @@ -0,0 +1,295 @@ |
| +/* |
| + * This file is part of Adblock Plus <https://adblockplus.org/>, |
| + * Copyright (C) 2006-2016 Eyeo GmbH |
| + * |
| + * Adblock Plus is free software: you can redistribute it and/or modify |
| + * it under the terms of the GNU General Public License version 3 as |
| + * published by the Free Software Foundation. |
| + * |
| + * Adblock Plus is distributed in the hope that it will be useful, |
| + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| + * GNU General Public License for more details. |
| + * |
| + * You should have received a copy of the GNU General Public License |
| + * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. |
| + */ |
| + |
| +package org.adblockplus.libadblockplus.tests; |
| + |
| +import android.test.AndroidTestCase; |
| + |
| +import org.adblockplus.android.AndroidFileSystem; |
| +import org.adblockplus.libadblockplus.AdblockPlusException; |
| +import org.adblockplus.libadblockplus.FileSystem; |
| +import org.adblockplus.libadblockplus.FileSystemHelper; |
| +import org.junit.Test; |
| + |
| +import java.io.File; |
| +import java.io.FileNotFoundException; |
| +import java.io.IOException; |
| + |
| +public class AndroidFileSystemTest extends AndroidTestCase |
| +{ |
| + protected final FileSystemHelper fileSystemHelper = new FileSystemHelper(); |
| + protected final static String DATA = "12345qwerty"; |
| + protected AndroidFileSystem fileSystem; |
| + |
| + @Override |
| + protected void setUp() throws Exception |
| + { |
| + fileSystem = new AndroidFileSystem(getContext().getCacheDir()); |
| + } |
| + |
| + protected String generateUniqueFilename() |
| + { |
| + return fileSystemHelper.generateUniqueFileName("file", ".tmp"); |
| + } |
| + |
| + protected File getFullPath(String path) |
| + { |
| + return new File(fileSystem.getBasePath(), path); |
| + } |
| + |
| + @Test |
| + public void testWriteNullFile() throws FileNotFoundException |
| + { |
| + String path = generateUniqueFilename(); |
| + File file = getFullPath(path); |
| + assertFalse(file.exists()); |
| + |
| + fileSystem.write(path, null); |
| + |
| + assertTrue(file.exists()); |
| + assertEquals("", fileSystemHelper.readFile(file)); |
| + } |
| + |
| + @Test |
| + public void testWriteEmptyFile() throws FileNotFoundException |
| + { |
| + String path = generateUniqueFilename(); |
| + File file = getFullPath(path); |
| + assertFalse(file.exists()); |
| + |
| + fileSystem.write(path, ""); |
| + |
| + assertTrue(file.exists()); |
| + assertEquals("", fileSystemHelper.readFile(file)); |
| + } |
| + |
| + @Test |
| + public void testWriteInvalidPath() |
| + { |
| + String path = "notExistingDirectory/" + generateUniqueFilename(); |
| + File file = getFullPath(path); |
| + assertFalse(file.exists()); |
| + File notExistingDirectoryFile = file.getParentFile(); |
| + assertFalse(notExistingDirectoryFile.exists()); |
| + |
| + try |
| + { |
| + fileSystem.write(path, DATA); |
| + fail("Exception should be thrown"); |
| + } |
| + catch (AdblockPlusException e) |
| + { |
| + // ignored |
| + } |
| + } |
| + |
| + @Test |
| + public void testWriteSingleLineData() throws FileNotFoundException |
| + { |
| + String path = generateUniqueFilename(); |
| + File file = getFullPath(path); |
| + assertFalse(file.exists()); |
| + |
| + final String SINGLE_LINE_DATA = DATA.replace("\n", ""); |
| + fileSystem.write(path, SINGLE_LINE_DATA); |
| + |
| + assertTrue(file.exists()); |
| + assertEquals(SINGLE_LINE_DATA, fileSystemHelper.readFile(file)); |
| + } |
| + |
| + @Test |
| + public void testWriteMultiLineData() throws FileNotFoundException |
| + { |
| + String path = generateUniqueFilename(); |
| + File file = getFullPath(path); |
| + assertFalse(file.exists()); |
| + |
| + final String MULTI_LINE_DATA = DATA + "\n" + DATA; |
| + fileSystem.write(path, MULTI_LINE_DATA); |
| + |
| + assertTrue(file.exists()); |
| + assertEquals(MULTI_LINE_DATA, fileSystemHelper.readFile(file)); |
| + } |
| + |
| + @Test |
| + public void testReadEmptyFile() throws IOException |
| + { |
| + String path = generateUniqueFilename(); |
| + File file = getFullPath(path); |
| + assertFalse(file.exists()); |
| + |
| + fileSystemHelper.writeFile(file, ""); |
| + assertTrue(file.exists()); |
| + |
| + assertEquals("", fileSystem.read(path)); |
| + } |
| + |
| + @Test |
| + public void testReadSingleLineData() throws IOException |
| + { |
| + String path = generateUniqueFilename(); |
| + File file = getFullPath(path); |
| + assertFalse(file.exists()); |
| + |
| + final String SINGLE_LINE_DATA = DATA.replace("\n", ""); |
| + fileSystemHelper.writeFile(file, SINGLE_LINE_DATA); |
| + assertTrue(file.exists()); |
| + |
| + assertEquals(SINGLE_LINE_DATA, fileSystem.read(path)); |
| + } |
| + |
| + @Test |
| + public void testReadMultiLineData() throws IOException |
| + { |
| + String path = generateUniqueFilename(); |
| + File file = getFullPath(path); |
| + assertFalse(file.exists()); |
| + |
| + final String MULTI_LINE_DATA = DATA + "\n" + DATA; |
| + fileSystemHelper.writeFile(file, MULTI_LINE_DATA); |
| + assertTrue(file.exists()); |
| + |
| + assertEquals(MULTI_LINE_DATA, fileSystem.read(path)); |
| + } |
| + |
| + @Test |
| + public void testMoveExistingFile() throws IOException |
| + { |
| + String fromPath = generateUniqueFilename(); |
| + File fromFile = getFullPath(fromPath); |
| + String toPath = generateUniqueFilename(); |
| + File toFile = getFullPath(toPath); |
| + fileSystemHelper.writeFile(fromFile, DATA); |
| + |
| + assertTrue(fromFile.exists()); |
| + assertFalse(toFile.exists()); |
| + |
| + fileSystem.move(fromPath, toPath); |
| + |
| + assertFalse(fromFile.exists()); |
| + assertTrue(toFile.exists()); |
| + assertEquals(DATA, fileSystemHelper.readFile(toFile)); |
| + } |
| + |
| + @Test |
| + public void testMoveNotExistingFile() |
| + { |
| + String fromPath = generateUniqueFilename(); |
| + File fromFile = getFullPath(fromPath); |
| + String toPath = generateUniqueFilename(); |
| + assertFalse(fromFile.exists()); |
| + |
| + try |
| + { |
| + fileSystem.move(fromPath, toPath); |
| + fail("Exception should be thrown"); |
| + } |
| + catch (AdblockPlusException e) |
| + { |
| + // ignored |
| + } |
| + } |
| + |
| + @Test |
| + public void testRemoveExistingFile() throws IOException |
| + { |
| + String path = generateUniqueFilename(); |
| + File file = getFullPath(path); |
| + fileSystemHelper.writeFile(file, DATA); |
| + |
| + assertTrue(file.exists()); |
| + fileSystem.remove(path); |
| + assertFalse(file.exists()); |
| + } |
| + |
| + @Test |
| + public void testRemoveNotExistingFile() |
| + { |
| + String path = generateUniqueFilename(); |
| + File file = getFullPath(path); |
| + assertFalse(file.exists()); |
| + |
| + fileSystem.remove(path); |
| + assertFalse(file.exists()); |
| + } |
| + |
| + @Test |
| + public void testStatExistingFile() throws IOException |
| + { |
| + String path = generateUniqueFilename(); |
| + File file = getFullPath(path); |
| + fileSystemHelper.writeFile(file, DATA); |
| + assertTrue(file.exists()); |
| + |
| + FileSystem.StatResult stat = fileSystem.stat(path); |
| + assertNotNull(stat); |
| + assertTrue(stat.exists()); |
| + assertFalse(stat.isDirectory()); |
| + assertTrue(stat.isFile()); |
| + assertTrue(stat.getLastModified() > 0); |
| + } |
| + |
| + @Test |
| + public void testStatExistingDirectory() |
| + { |
| + String path = generateUniqueFilename(); |
| + File file = getFullPath(path); |
| + file.mkdir(); |
| + |
| + FileSystem.StatResult stat = fileSystem.stat(path); |
| + assertNotNull(stat); |
| + assertTrue(stat.exists()); |
| + assertFalse(stat.isFile()); |
| + assertTrue(stat.isDirectory()); |
| + assertTrue(stat.getLastModified() > 0); |
| + } |
| + |
| + @Test |
| + public void testStatNotExistingFile() |
| + { |
| + String path = generateUniqueFilename(); |
| + File file = getFullPath(path); |
| + assertFalse(file.exists()); |
| + |
| + fileSystem.remove(path); |
| + assertFalse(file.exists()); |
| + FileSystem.StatResult notExistingStat = fileSystem.stat(path); |
| + assertFalse(notExistingStat.exists()); |
| + assertEquals(0l, notExistingStat.getLastModified()); |
| + } |
| + |
| + @Test |
| + public void testResolveAbsolute() |
| + { |
| + String path = generateUniqueFilename(); |
| + String absolutePath = fileSystem.resolve(path); |
| + String fullPath = getFullPath(path).getAbsolutePath(); |
| + String fullPathFromBasePath = fullPath |
| + .substring(fileSystem.getBasePath() |
| + .getAbsolutePath().length()); |
| + assertEquals(fullPathFromBasePath, absolutePath); |
| + } |
| + |
| + @Test |
| + public void testResolveRelative() |
| + { |
| + String relativePath = "./file"; |
| + String absolutePath = fileSystem.resolve(relativePath); |
| + assertNotNull(absolutePath); |
| + assertTrue(absolutePath.startsWith("/")); |
| + } |
| +} |