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