1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/services/sync/tests/unit/test_enginemanager.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,97 @@ 1.4 +/* Any copyright is dedicated to the Public Domain. 1.5 + http://creativecommons.org/publicdomain/zero/1.0/ */ 1.6 + 1.7 +Cu.import("resource://services-sync/engines.js"); 1.8 +Cu.import("resource://services-sync/service.js"); 1.9 + 1.10 +function run_test() { 1.11 + run_next_test(); 1.12 +} 1.13 + 1.14 +function PetrolEngine() {} 1.15 +PetrolEngine.prototype.name = "petrol"; 1.16 + 1.17 +function DieselEngine() {} 1.18 +DieselEngine.prototype.name = "diesel"; 1.19 + 1.20 +function DummyEngine() {} 1.21 +DummyEngine.prototype.name = "dummy"; 1.22 + 1.23 +function ActualEngine() {} 1.24 +ActualEngine.prototype = {__proto__: Engine.prototype, 1.25 + name: 'actual'}; 1.26 + 1.27 +add_test(function test_basics() { 1.28 + _("We start out with a clean slate"); 1.29 + 1.30 + let manager = new EngineManager(Service); 1.31 + 1.32 + let engines = manager.getAll(); 1.33 + do_check_eq(engines.length, 0); 1.34 + do_check_eq(manager.get('dummy'), undefined); 1.35 + 1.36 + _("Register an engine"); 1.37 + manager.register(DummyEngine); 1.38 + let dummy = manager.get('dummy'); 1.39 + do_check_true(dummy instanceof DummyEngine); 1.40 + 1.41 + engines = manager.getAll(); 1.42 + do_check_eq(engines.length, 1); 1.43 + do_check_eq(engines[0], dummy); 1.44 + 1.45 + _("Register an already registered engine is ignored"); 1.46 + manager.register(DummyEngine); 1.47 + do_check_eq(manager.get('dummy'), dummy); 1.48 + 1.49 + _("Register multiple engines in one go"); 1.50 + manager.register([PetrolEngine, DieselEngine]); 1.51 + let petrol = manager.get('petrol'); 1.52 + let diesel = manager.get('diesel'); 1.53 + do_check_true(petrol instanceof PetrolEngine); 1.54 + do_check_true(diesel instanceof DieselEngine); 1.55 + 1.56 + engines = manager.getAll(); 1.57 + do_check_eq(engines.length, 3); 1.58 + do_check_neq(engines.indexOf(petrol), -1); 1.59 + do_check_neq(engines.indexOf(diesel), -1); 1.60 + 1.61 + _("Retrieve multiple engines in one go"); 1.62 + engines = manager.get(["dummy", "diesel"]); 1.63 + do_check_eq(engines.length, 2); 1.64 + do_check_neq(engines.indexOf(dummy), -1); 1.65 + do_check_neq(engines.indexOf(diesel), -1); 1.66 + 1.67 + _("getEnabled() only returns enabled engines"); 1.68 + engines = manager.getEnabled(); 1.69 + do_check_eq(engines.length, 0); 1.70 + 1.71 + petrol.enabled = true; 1.72 + engines = manager.getEnabled(); 1.73 + do_check_eq(engines.length, 1); 1.74 + do_check_eq(engines[0], petrol); 1.75 + 1.76 + dummy.enabled = true; 1.77 + diesel.enabled = true; 1.78 + engines = manager.getEnabled(); 1.79 + do_check_eq(engines.length, 3); 1.80 + 1.81 + _("Unregister an engine by name"); 1.82 + manager.unregister('dummy'); 1.83 + do_check_eq(manager.get('dummy'), undefined); 1.84 + engines = manager.getAll(); 1.85 + do_check_eq(engines.length, 2); 1.86 + do_check_eq(engines.indexOf(dummy), -1); 1.87 + 1.88 + _("Unregister an engine by value"); 1.89 + // manager.unregister() checks for instanceof Engine, so let's make one: 1.90 + manager.register(ActualEngine); 1.91 + let actual = manager.get('actual'); 1.92 + do_check_true(actual instanceof ActualEngine); 1.93 + do_check_true(actual instanceof Engine); 1.94 + 1.95 + manager.unregister(actual); 1.96 + do_check_eq(manager.get('actual'), undefined); 1.97 + 1.98 + run_next_test(); 1.99 +}); 1.100 +