1
0
mirror of https://github.com/duke-git/lancet.git synced 2026-02-23 13:52:26 +08:00

feat: add FanIn for channel

This commit is contained in:
dudaodong
2022-04-19 15:34:26 +08:00
parent 763aa8e10d
commit 980ff2c363
2 changed files with 57 additions and 6 deletions

View File

@@ -66,7 +66,7 @@ func TestRepeatFn(t *testing.T) {
}
func TestTake(t *testing.T) {
assert := internal.NewAssert(t, "TestRepeat")
assert := internal.NewAssert(t, "TestTake")
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
@@ -82,11 +82,29 @@ func TestTake(t *testing.T) {
c := NewChannel()
intStream := c.Take(ctx, numbers, 3)
// for v := range intStream {
// t.Log(v) //1, 2, 3
// }
assert.Equal(1, <-intStream)
assert.Equal(2, <-intStream)
assert.Equal(3, <-intStream)
}
func TestFanIn(t *testing.T) {
assert := internal.NewAssert(t, "TestFanIn")
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
c := NewChannel()
channels := make([]<-chan any, 3)
for i := 0; i < 3; i++ {
channels[i] = c.Take(ctx, c.Repeat(ctx, i), 3)
}
mergedChannel := c.FanIn(ctx, channels...)
for val := range mergedChannel {
t.Logf("\t%d\n", val)
}
assert.Equal(1, 1)
}