tor-browser

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

observable-event-target.any.js (2306B)


      1 test(() => {
      2  const target = new EventTarget();
      3  assert_implements(target.when, "The EventTarget interface has an `when` method");
      4  assert_equals(typeof target.when, "function",
      5      "EventTarget should have the when method");
      6 
      7  const testEvents = target.when("test");
      8  assert_true(testEvents instanceof Observable,
      9      "EventTarget.when() returns an Observable");
     10 
     11  const results = [];
     12  testEvents.subscribe({
     13    next: value => results.push(value),
     14    error: () => results.push("error"),
     15    complete: () => results.push("complete"),
     16  });
     17 
     18  assert_array_equals(results, [],
     19      "Observable does not emit events until event is fired");
     20 
     21  const event = new Event("test");
     22  target.dispatchEvent(event);
     23  assert_array_equals(results, [event]);
     24 
     25  target.dispatchEvent(event);
     26  assert_array_equals(results, [event, event]);
     27 }, "EventTarget.when() returns an Observable");
     28 
     29 test(() => {
     30  const target = new EventTarget();
     31  const testEvents = target.when("test");
     32  const ac = new AbortController();
     33  const results = [];
     34  testEvents.subscribe({
     35    next: (value) => results.push(value),
     36    error: () => results.push('error'),
     37    complete: () => results.complete('complete'),
     38  }, { signal: ac.signal });
     39 
     40  assert_array_equals(results, [],
     41      "Observable does not emit events until event is fired");
     42 
     43  const event1 = new Event("test");
     44  const event2 = new Event("test");
     45  const event3 = new Event("test");
     46  target.dispatchEvent(event1);
     47  target.dispatchEvent(event2);
     48 
     49  assert_array_equals(results, [event1, event2]);
     50 
     51  ac.abort();
     52  target.dispatchEvent(event3);
     53 
     54  assert_array_equals(results, [event1, event2],
     55      "Aborting the subscription removes the event listener and stops the " +
     56      "emission of events");
     57 }, "Aborting the subscription should stop the emission of events");
     58 
     59 test(() => {
     60  const target = new EventTarget();
     61  const testEvents = target.when("test");
     62  const results = [];
     63  testEvents.subscribe(e => results.push(e));
     64  testEvents.subscribe(e => results.push(e));
     65 
     66  const event1 = new Event("test");
     67  const event2 = new Event("test");
     68  target.dispatchEvent(event1);
     69  target.dispatchEvent(event2);
     70  assert_array_equals(results, [event1, event1, event2, event2]);
     71 }, "EventTarget Observables can multicast subscriptions for event handling");