Mirror: 🎩 A tiny but capable push & pull stream library for TypeScript and Flow
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Add test for share operator

+43
+43
__tests__/callbag_test.re
··· 221 221 expect(signals) == [| Push(1), Push(4), Push(5), Push(6), Push(2), Push(3), End |]; 222 222 }); 223 223 }); 224 + 225 + describe("share", () => { 226 + open Expect; 227 + 228 + it("shares an underlying source with all sinks", () => { 229 + let talkback = ref((_: Callbag_types.talkbackT) => ()); 230 + let num = ref(1); 231 + let nums = [||]; 232 + 233 + let source = Callbag.share(sink => { 234 + sink(Start(signal => { 235 + switch (signal) { 236 + | Pull => { 237 + let i = num^; 238 + num := num^ + 1; 239 + sink(Push(i)); 240 + } 241 + | _ => () 242 + } 243 + })); 244 + }); 245 + 246 + source(signal => { 247 + switch (signal) { 248 + | Start(x) => talkback := x 249 + | Push(x) => ignore(Js.Array.push(x, nums)) 250 + | _ => () 251 + } 252 + }); 253 + 254 + source(signal => { 255 + switch (signal) { 256 + | Push(x) => ignore(Js.Array.push(x, nums)) 257 + | _ => () 258 + } 259 + }); 260 + 261 + talkback^(Pull); 262 + let numsA = Array.copy(nums); 263 + talkback^(Pull); 264 + expect((numsA, nums)) |> toEqual(([| 1, 1 |], [| 1, 1, 2, 2 |])); 265 + }); 266 + }); 224 267 }); 225 268 226 269 describe("sink factories", () => {