tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

test_observers.js (1875B)


      1 /* Any copyright is dedicated to the Public Domain.
      2 * http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 const { Observers } = ChromeUtils.importESModule(
      5  "resource://services-common/observers.sys.mjs"
      6 );
      7 
      8 var gSubject = {};
      9 
     10 add_test(function test_function_observer() {
     11  let foo = false;
     12 
     13  let onFoo = function (subject, data) {
     14    foo = !foo;
     15    Assert.equal(subject, gSubject);
     16    Assert.equal(data, "some data");
     17  };
     18 
     19  Observers.add("foo", onFoo);
     20  Observers.notify("foo", gSubject, "some data");
     21 
     22  // The observer was notified after being added.
     23  Assert.ok(foo);
     24 
     25  Observers.remove("foo", onFoo);
     26  Observers.notify("foo");
     27 
     28  // The observer was not notified after being removed.
     29  Assert.ok(foo);
     30 
     31  run_next_test();
     32 });
     33 
     34 add_test(function test_method_observer() {
     35  let obj = {
     36    foo: false,
     37    onFoo(subject, data) {
     38      this.foo = !this.foo;
     39      Assert.equal(subject, gSubject);
     40      Assert.equal(data, "some data");
     41    },
     42  };
     43 
     44  // The observer is notified after being added.
     45  Observers.add("foo", obj.onFoo, obj);
     46  Observers.notify("foo", gSubject, "some data");
     47  Assert.ok(obj.foo);
     48 
     49  // The observer is not notified after being removed.
     50  Observers.remove("foo", obj.onFoo, obj);
     51  Observers.notify("foo");
     52  Assert.ok(obj.foo);
     53 
     54  run_next_test();
     55 });
     56 
     57 add_test(function test_object_observer() {
     58  let obj = {
     59    foo: false,
     60    observe(subject, topic, data) {
     61      this.foo = !this.foo;
     62 
     63      Assert.equal(subject, gSubject);
     64      Assert.equal(topic, "foo");
     65      Assert.equal(data, "some data");
     66    },
     67  };
     68 
     69  Observers.add("foo", obj);
     70  Observers.notify("foo", gSubject, "some data");
     71 
     72  // The observer is notified after being added.
     73  Assert.ok(obj.foo);
     74 
     75  Observers.remove("foo", obj);
     76  Observers.notify("foo");
     77 
     78  // The observer is not notified after being removed.
     79  Assert.ok(obj.foo);
     80 
     81  run_next_test();
     82 });