tor-browser

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

observable-some.any.js (3233B)


      1 promise_test(async () => {
      2  let inactiveAfterFirstGood = true;
      3 
      4  const source = new Observable(subscriber => {
      5    subscriber.next("good");
      6    inactiveAfterFirstGood = !subscriber.active;
      7    subscriber.next("good");
      8    subscriber.next("good");
      9    subscriber.complete();
     10  });
     11 
     12  const result = await source.some((value) => value === "good");
     13 
     14  assert_true(result, "Promise resolves with true if any value passes the predicate");
     15 
     16  assert_true(inactiveAfterFirstGood,
     17      "subscriber is inactive after the first value that passes the " +
     18      "predicate, because the source was unsubscribed from");
     19 }, "some(): subscriber is inactive after the first value that passes the predicate, because the source was unsubscribed from");
     20 
     21 promise_test(async () => {
     22  const source = new Observable(subscriber => {
     23    subscriber.next("bad");
     24    subscriber.next("bad");
     25    subscriber.next("bad");
     26    subscriber.complete();
     27  });
     28 
     29  const result = await source.some((value) => value === "good");
     30 
     31  assert_false(result, "some(): Promise resolves with false if no value passes the predicate");
     32 });
     33 
     34 promise_test(async () => {
     35  const source = new Observable(subscriber => {
     36    subscriber.next("bad");
     37    subscriber.next("bad");
     38    subscriber.next("good");
     39    subscriber.complete();
     40  });
     41 
     42  const result = await source.some((value) => value === "good");
     43 
     44  assert_true(result, "some(): Promise resolves with true if any value passes the predicate");
     45 });
     46 
     47 promise_test(async t => {
     48  const source = new Observable(subscriber => {
     49    subscriber.next("not used");
     50  });
     51 
     52  const error = new Error("thrown from predicate");
     53  promise_rejects_exactly(t, error, source.some(() => {throw error}),
     54      "The returned promise rejects with an error if the predicate errors");
     55 }, "some(): The returned promise rejects with an error if the predicate errors");
     56 
     57 promise_test(async t => {
     58  const error = new Error("error from source");
     59  const source = new Observable(subscriber => {
     60    subscriber.error(error);
     61  });
     62 
     63  promise_rejects_exactly(t, error, source.some(() => true),
     64      "The returned promise rejects with an error if the source observable errors");
     65 }, "some(): The returned promise rejects with an error if the source observable errors");
     66 
     67 promise_test(async () => {
     68  const source = new Observable(subscriber => {
     69    subscriber.complete();
     70  });
     71 
     72  const result = await source.some(() => true);
     73 
     74  assert_false(result,
     75      "The returned promise resolves as false if the source observable " +
     76      "completes without emitting a value");
     77 }, "some(): The returned promise resolves as false if the source observable " +
     78   "completes without emitting a value");
     79 
     80 promise_test(async t => {
     81  let teardownCalled = false;
     82  const source = new Observable(subscriber => {
     83    subscriber.addTeardown(() => {
     84      teardownCalled = true;
     85    });
     86  });
     87 
     88  const controller = new AbortController();
     89  const promise = source.some(() => true, { signal: controller.signal });
     90 
     91  controller.abort();
     92 
     93  promise_rejects_dom(t, 'AbortError', promise);
     94  assert_true(teardownCalled,
     95      "The teardown function is called when the signal is aborted");
     96 }, "some(): The return promise rejects with a DOMException if the signal is aborted");