services/sync/tests/unit/test_enginemanager.js

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

     1 /* Any copyright is dedicated to the Public Domain.
     2    http://creativecommons.org/publicdomain/zero/1.0/ */
     4 Cu.import("resource://services-sync/engines.js");
     5 Cu.import("resource://services-sync/service.js");
     7 function run_test() {
     8   run_next_test();
     9 }
    11 function PetrolEngine() {}
    12 PetrolEngine.prototype.name = "petrol";
    14 function DieselEngine() {}
    15 DieselEngine.prototype.name = "diesel";
    17 function DummyEngine() {}
    18 DummyEngine.prototype.name = "dummy";
    20 function ActualEngine() {}
    21 ActualEngine.prototype = {__proto__: Engine.prototype,
    22                           name: 'actual'};
    24 add_test(function test_basics() {
    25   _("We start out with a clean slate");
    27   let manager = new EngineManager(Service);
    29   let engines = manager.getAll();
    30   do_check_eq(engines.length, 0);
    31   do_check_eq(manager.get('dummy'), undefined);
    33   _("Register an engine");
    34   manager.register(DummyEngine);
    35   let dummy = manager.get('dummy');
    36   do_check_true(dummy instanceof DummyEngine);
    38   engines = manager.getAll();
    39   do_check_eq(engines.length, 1);
    40   do_check_eq(engines[0], dummy);
    42   _("Register an already registered engine is ignored");
    43   manager.register(DummyEngine);
    44   do_check_eq(manager.get('dummy'), dummy);
    46   _("Register multiple engines in one go");
    47   manager.register([PetrolEngine, DieselEngine]);
    48   let petrol = manager.get('petrol');
    49   let diesel = manager.get('diesel');
    50   do_check_true(petrol instanceof PetrolEngine);
    51   do_check_true(diesel instanceof DieselEngine);
    53   engines = manager.getAll();
    54   do_check_eq(engines.length, 3);
    55   do_check_neq(engines.indexOf(petrol), -1);
    56   do_check_neq(engines.indexOf(diesel), -1);
    58   _("Retrieve multiple engines in one go");
    59   engines = manager.get(["dummy", "diesel"]);
    60   do_check_eq(engines.length, 2);
    61   do_check_neq(engines.indexOf(dummy), -1);
    62   do_check_neq(engines.indexOf(diesel), -1);
    64   _("getEnabled() only returns enabled engines");
    65   engines = manager.getEnabled();
    66   do_check_eq(engines.length, 0);
    68   petrol.enabled = true;
    69   engines = manager.getEnabled();
    70   do_check_eq(engines.length, 1);
    71   do_check_eq(engines[0], petrol);
    73   dummy.enabled = true;
    74   diesel.enabled = true;
    75   engines = manager.getEnabled();
    76   do_check_eq(engines.length, 3);
    78   _("Unregister an engine by name");
    79   manager.unregister('dummy');
    80   do_check_eq(manager.get('dummy'), undefined);
    81   engines = manager.getAll();
    82   do_check_eq(engines.length, 2);
    83   do_check_eq(engines.indexOf(dummy), -1);
    85   _("Unregister an engine by value");
    86   // manager.unregister() checks for instanceof Engine, so let's make one:
    87   manager.register(ActualEngine);
    88   let actual = manager.get('actual');
    89   do_check_true(actual instanceof ActualEngine);
    90   do_check_true(actual instanceof Engine);
    92   manager.unregister(actual);
    93   do_check_eq(manager.get('actual'), undefined);
    95   run_next_test();
    96 });

mercurial