/services/sync/tests/unit/test_utils_deferGetSet.js

http://github.com/zpao/v8monkey · JavaScript · 45 lines · 38 code · 7 blank · 0 comment · 0 complexity · e51c4d4e4dd0b5994527fa4ff3212366 MD5 · raw file

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