gitee.com/h79/goutils@v1.22.10/common/bus/bus_test.go (about) 1 package bus 2 3 import ( 4 "testing" 5 "time" 6 ) 7 8 type D struct { 9 Name string 10 } 11 12 func TestBus(t *testing.T) { 13 bus := New() 14 15 ch := make(EventChan) 16 err := bus.Subscribe("TEST", ch) 17 if err != nil { 18 return 19 } 20 err = bus.Subscribe("TEST", func(arg Event) { 21 t.Logf("fn= %v", arg) 22 }) 23 if err != nil { 24 return 25 } 26 //bus.UnSubscribe("TEST", ch) 27 28 go func() { 29 for { 30 select { 31 case data := <-ch: 32 t.Logf("out= %v", data) 33 } 34 } 35 }() 36 37 bus.Publish("TEST", Event{Cmd: "1", Data: D{Name: "1"}}) 38 bus.Publish("TEST", Event{Cmd: "2", Data: D{Name: "2"}}) 39 bus.Publish("TEST", Event{Cmd: "3", Data: D{Name: "3"}}) 40 bus.Publish("TEST", Event{Cmd: "4", Data: D{Name: "4"}}) 41 bus.Publish("TEST", Event{Cmd: "5", Data: D{Name: "5"}}) 42 43 time.Sleep(time.Second * 5) 44 } 45 46 func TestFunc(t *testing.T) { 47 bus := New() 48 49 err := bus.Subscribe("TEST", func(arg Event) { 50 t.Logf("out= %v", arg) 51 }) 52 if err != nil { 53 return 54 } 55 56 bus.Publish("TEST", Event{Cmd: "1", Data: D{Name: "1"}}) 57 58 time.Sleep(time.Second * 5) 59 }