Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: libadblockplus-android-tests/src/org/adblockplus/libadblockplus/tests/AndroidFileSystemTest.java

Issue 29347315: Issue 4231 - Fix unstable FilterEngineTest.testSetRemoveFilterChangeCallback (Closed)
Patch Set: Introduced file system abstraction to java and using LazyFileSystem for filter tests Created July 10, 2016, 10:47 a.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
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("/"));
+ }
+}

Powered by Google App Engine
This is Rietveld