services/common/tests/unit/test_observers.js

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

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 });

mercurial