Thu, 22 Jan 2015 13:21:57 +0100
Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6
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 | } |