/* * Copyright 2014 Yaroslav Mytkalyk * 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 com.docd.purefm.test; import android.content.Context; import android.os.Environment; import android.test.AndroidTestCase; import com.docd.purefm.file.GenericFile; import com.docd.purefm.file.JavaFile; import com.docd.purefm.utils.PFMTextUtils; import org.apache.commons.io.FileUtils; import java.io.File; import java.io.IOException; import java.util.Arrays; /** * Tests {@link JavaFile} * * @author Doctoror */ public final class JavaFileTest extends AndroidTestCase { private static final File testDir = new File(Environment.getExternalStorageDirectory(), "_test_JavaFile"); private static final File test1 = new File(testDir, "test1.jpg"); @Override protected void setUp() throws Exception { super.setUp(); try { FileUtils.forceDelete(testDir); } catch (IOException e) { //ignored } final String state = Environment.getExternalStorageState(); if (!state.equals(Environment.MEDIA_MOUNTED)) { throw new RuntimeException("Make sure the external storage is mounted read-write before running this test"); } try { FileUtils.forceDelete(testDir); } catch (IOException e) { //ignored } assertTrue(testDir.mkdirs()); // prepare a test file try { FileUtils.write(test1, "test"); } catch (IOException e) { throw new RuntimeException("Failed to create test file: " + e); } } @Override protected void runTest() throws Throwable { super.runTest(); // init what application inits final Context context = this.getContext(); PFMTextUtils.init(context); test(); test1.delete(); test(); try { test1.createNewFile(); } catch (IOException e) { e.printStackTrace(); } test(); test1.delete(); test1.mkdir(); test(); } private void test() throws Throwable { final JavaFile file1 = new JavaFile(test1); testAgainstJavaIoFile(file1, test1); } private static void testAgainstJavaIoFile(final JavaFile genericFile, final File javaFile) throws Throwable{ assertEquals(javaFile, genericFile.toFile()); assertEquals(javaFile.getName(), genericFile.getName()); assertEquals(javaFile.getAbsolutePath(), genericFile.getAbsolutePath()); assertEquals(javaFile.canRead(), genericFile.canRead()); assertEquals(javaFile.canWrite(), genericFile.canWrite()); assertEquals(javaFile.canExecute(), genericFile.canExecute()); assertEquals(javaFile.exists(), genericFile.exists()); assertEquals(javaFile.getPath(), genericFile.getPath()); assertEquals(javaFile.getParent(), genericFile.getParent()); assertEquals(javaFile.length(), genericFile.length()); final File parentFile; final GenericFile genericParentFile = genericFile.getParentFile(); if (genericParentFile == null) { parentFile = null; } else { parentFile = genericParentFile.toFile(); } assertEquals(javaFile.getParentFile(), parentFile); assertEquals(javaFile.length(), genericFile.length()); try { assertEquals(FileUtils.isSymlink(javaFile), genericFile.isSymlink()); } catch (IOException e) { e.printStackTrace(); } try { assertEquals(javaFile.getCanonicalPath(), genericFile.getCanonicalPath()); } catch (IOException e) { e.printStackTrace(); } assertEquals(javaFile.length(), genericFile.length()); assertEquals(javaFile.lastModified(), genericFile.lastModified()); assertEquals(javaFile.isDirectory(), genericFile.isDirectory()); assertTrue(Arrays.equals(javaFile.list(), genericFile.list())); assertTrue(Arrays.equals(javaFile.listFiles(), genericFile.listFiles())); } @Override protected void tearDown() throws Exception { super.tearDown(); FileUtils.forceDelete(testDir); } }