services/sync/tests/unit/test_utils_deferGetSet.js

Wed, 31 Dec 2014 07:22:50 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 07:22:50 +0100
branch
TOR_BUG_3246
changeset 4
fc2d59ddac77
permissions
-rw-r--r--

Correct previous dual key logic pending first delivery installment.

michael@0 1 _("Make sure various combinations of deferGetSet arguments correctly defer getting/setting properties to another object");
michael@0 2 Cu.import("resource://services-sync/util.js");
michael@0 3
michael@0 4 function run_test() {
michael@0 5 let base = function() {};
michael@0 6 base.prototype = {
michael@0 7 dst: {},
michael@0 8
michael@0 9 get a() "a",
michael@0 10 set b(val) this.dst.b = val + "!!!"
michael@0 11 };
michael@0 12 let src = new base();
michael@0 13
michael@0 14 _("get/set a single property");
michael@0 15 Utils.deferGetSet(base, "dst", "foo");
michael@0 16 src.foo = "bar";
michael@0 17 do_check_eq(src.dst.foo, "bar");
michael@0 18 do_check_eq(src.foo, "bar");
michael@0 19
michael@0 20 _("editing the target also updates the source");
michael@0 21 src.dst.foo = "baz";
michael@0 22 do_check_eq(src.dst.foo, "baz");
michael@0 23 do_check_eq(src.foo, "baz");
michael@0 24
michael@0 25 _("handle multiple properties");
michael@0 26 Utils.deferGetSet(base, "dst", ["p1", "p2"]);
michael@0 27 src.p1 = "v1";
michael@0 28 src.p2 = "v2";
michael@0 29 do_check_eq(src.p1, "v1");
michael@0 30 do_check_eq(src.dst.p1, "v1");
michael@0 31 do_check_eq(src.p2, "v2");
michael@0 32 do_check_eq(src.dst.p2, "v2");
michael@0 33
michael@0 34 _("make sure existing getter keeps its functionality");
michael@0 35 Utils.deferGetSet(base, "dst", "a");
michael@0 36 src.a = "not a";
michael@0 37 do_check_eq(src.dst.a, "not a");
michael@0 38 do_check_eq(src.a, "a");
michael@0 39
michael@0 40 _("make sure existing setter keeps its functionality");
michael@0 41 Utils.deferGetSet(base, "dst", "b");
michael@0 42 src.b = "b";
michael@0 43 do_check_eq(src.dst.b, "b!!!");
michael@0 44 do_check_eq(src.b, "b!!!");
michael@0 45 }

mercurial