Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
1 /* Any copyright is dedicated to the Public Domain.
2 * http://creativecommons.org/publicdomain/zero/1.0/ */
4 Components.utils.import("resource://services-common/observers.js");
6 let gSubject = {};
8 function run_test() {
9 run_next_test();
10 }
12 add_test(function test_function_observer() {
13 let foo = false;
15 let onFoo = function(subject, data) {
16 foo = !foo;
17 do_check_eq(subject, gSubject);
18 do_check_eq(data, "some data");
19 };
21 Observers.add("foo", onFoo);
22 Observers.notify("foo", gSubject, "some data");
24 // The observer was notified after being added.
25 do_check_true(foo);
27 Observers.remove("foo", onFoo);
28 Observers.notify("foo");
30 // The observer was not notified after being removed.
31 do_check_true(foo);
33 run_next_test();
34 });
36 add_test(function test_method_observer() {
37 let obj = {
38 foo: false,
39 onFoo: function(subject, data) {
40 this.foo = !this.foo;
41 do_check_eq(subject, gSubject);
42 do_check_eq(data, "some data");
43 }
44 };
46 // The observer is notified after being added.
47 Observers.add("foo", obj.onFoo, obj);
48 Observers.notify("foo", gSubject, "some data");
49 do_check_true(obj.foo);
51 // The observer is not notified after being removed.
52 Observers.remove("foo", obj.onFoo, obj);
53 Observers.notify("foo");
54 do_check_true(obj.foo);
56 run_next_test();
57 });
59 add_test(function test_object_observer() {
60 let obj = {
61 foo: false,
62 observe: function(subject, topic, data) {
63 this.foo = !this.foo;
65 do_check_eq(subject, gSubject);
66 do_check_eq(topic, "foo");
67 do_check_eq(data, "some data");
68 }
69 };
71 Observers.add("foo", obj);
72 Observers.notify("foo", gSubject, "some data");
74 // The observer is notified after being added.
75 do_check_true(obj.foo);
77 Observers.remove("foo", obj);
78 Observers.notify("foo");
80 // The observer is not notified after being removed.
81 do_check_true(obj.foo);
83 run_next_test();
84 });