mobile/android/tests/background/junit3/src/common/TestUtils.java

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 /* Any copyright is dedicated to the Public Domain.
     2    http://creativecommons.org/publicdomain/zero/1.0/ */
     4 package org.mozilla.gecko.background.common;
     6 import java.io.File;
     7 import java.io.IOException;
     8 import java.util.ArrayList;
     9 import java.util.Collection;
    10 import java.util.Collections;
    11 import java.util.HashSet;
    12 import java.util.List;
    13 import java.util.Set;
    15 import org.mozilla.gecko.background.helpers.AndroidSyncTestCase;
    16 import org.mozilla.gecko.sync.Utils;
    18 import android.os.Bundle;
    20 public class TestUtils extends AndroidSyncTestCase {
    21   protected static void assertStages(String[] all, String[] sync, String[] skip, String[] expected) {
    22     final Set<String> sAll = new HashSet<String>();
    23     for (String s : all) {
    24       sAll.add(s);
    25     }
    26     List<String> sSync = null;
    27     if (sync != null) {
    28       sSync = new ArrayList<String>();
    29       for (String s : sync) {
    30         sSync.add(s);
    31       }
    32     }
    33     List<String> sSkip = null;
    34     if (skip != null) {
    35       sSkip = new ArrayList<String>();
    36       for (String s : skip) {
    37         sSkip.add(s);
    38       }
    39     }
    40     List<String> stages = new ArrayList<String>(Utils.getStagesToSync(sAll, sSync, sSkip));
    41     Collections.sort(stages);
    42     List<String> exp = new ArrayList<String>();
    43     for (String e : expected) {
    44       exp.add(e);
    45     }
    46     assertEquals(exp, stages);
    47   }
    49   public void testGetStagesToSync() {
    50     final String[] all = new String[] { "other1", "other2", "skip1", "skip2", "sync1", "sync2" };
    51     assertStages(all, null, null, all);
    52     assertStages(all, new String[] { "sync1" }, null, new String[] { "sync1" });
    53     assertStages(all, null, new String[] { "skip1", "skip2" }, new String[] { "other1", "other2", "sync1", "sync2" });
    54     assertStages(all, new String[] { "sync1", "sync2" }, new String[] { "skip1", "skip2" }, new String[] { "sync1", "sync2" });
    55   }
    57   protected static void assertStagesFromBundle(String[] all, String[] sync, String[] skip, String[] expected) {
    58     final Set<String> sAll = new HashSet<String>();
    59     for (String s : all) {
    60       sAll.add(s);
    61     }
    62     final Bundle bundle = new Bundle();
    63     Utils.putStageNamesToSync(bundle, sync, skip);
    65     Collection<String> ss = Utils.getStagesToSyncFromBundle(sAll, bundle);
    66     List<String> stages = new ArrayList<String>(ss);
    67     Collections.sort(stages);
    68     List<String> exp = new ArrayList<String>();
    69     for (String e : expected) {
    70       exp.add(e);
    71     }
    72     assertEquals(exp, stages);
    73   }
    75   public void testGetStagesToSyncFromBundle() {
    76     final String[] all = new String[] { "other1", "other2", "skip1", "skip2", "sync1", "sync2" };
    77     assertStagesFromBundle(all, null, null, all);
    78     assertStagesFromBundle(all, new String[] { "sync1" }, null, new String[] { "sync1" });
    79     assertStagesFromBundle(all, null, new String[] { "skip1", "skip2" }, new String[] { "other1", "other2", "sync1", "sync2" });
    80     assertStagesFromBundle(all, new String[] { "sync1", "sync2" }, new String[] { "skip1", "skip2" }, new String[] { "sync1", "sync2" });
    81   }
    83   public static void deleteDirectoryRecursively(final File dir) throws IOException {
    84     if (!dir.isDirectory()) {
    85       throw new IllegalStateException("Given directory, " + dir + ", is not a directory!");
    86     }
    88     for (File f : dir.listFiles()) {
    89       if (f.isDirectory()) {
    90         deleteDirectoryRecursively(f);
    91       } else if (!f.delete()) {
    92         // Since this method is for testing, we assume we should be able to do this.
    93         throw new IOException("Could not delete file, " + f.getAbsolutePath() + ". Permissions?");
    94       }
    95     }
    97     if (!dir.delete()) {
    98       throw new IOException("Could not delete dir, " + dir.getAbsolutePath() + ".");
    99     }
   100   }
   102   public void testDeleteDirectoryRecursively() throws Exception {
   103     final String TEST_DIR = getApplicationContext().getCacheDir().getAbsolutePath() +
   104         "-testDeleteDirectory-" + System.currentTimeMillis();
   106     // Non-existent directory.
   107     final File nonexistent = new File("nonexistentDirectory"); // Hopefully. ;)
   108     assertFalse(nonexistent.exists());
   109     try {
   110       deleteDirectoryRecursively(nonexistent);
   111       fail("deleteDirectoryRecursively on a nonexistent directory should throw Exception");
   112     } catch (IllegalStateException e) { }
   114     // Empty dir.
   115     File dir = mkdir(TEST_DIR);
   116     deleteDirectoryRecursively(dir);
   117     assertFalse(dir.exists());
   119     // Filled dir.
   120     dir = mkdir(TEST_DIR);
   121     populateDir(dir);
   122     deleteDirectoryRecursively(dir);
   123     assertFalse(dir.exists());
   125     // Filled dir with empty dir.
   126     dir = mkdir(TEST_DIR);
   127     populateDir(dir);
   128     File subDir = new File(TEST_DIR + File.separator + "subDir");
   129     assertTrue(subDir.mkdir());
   130     deleteDirectoryRecursively(dir);
   131     assertFalse(subDir.exists()); // For short-circuiting errors.
   132     assertFalse(dir.exists());
   134     // Filled dir with filled dir.
   135     dir = mkdir(TEST_DIR);
   136     populateDir(dir);
   137     subDir = new File(TEST_DIR + File.separator + "subDir");
   138     assertTrue(subDir.mkdir());
   139     populateDir(subDir);
   140     deleteDirectoryRecursively(dir);
   141     assertFalse(subDir.exists()); // For short-circuiting errors.
   142     assertFalse(dir.exists());
   143   }
   145   private File mkdir(final String name) {
   146     final File dir = new File(name);
   147     assertTrue(dir.mkdir());
   148     return dir;
   149   }
   151   private void populateDir(final File dir) throws IOException {
   152     assertTrue(dir.isDirectory());
   153     final String dirPath = dir.getAbsolutePath();
   154     for (int i = 0; i < 3; i++) {
   155       final File f = new File(dirPath + File.separator + i);
   156       assertTrue(f.createNewFile()); // Throws IOException if file could not be created.
   157     }
   158   }
   159 }

mercurial