// Test the simple backend returning nil after stop. func TestSimpleStop(t *testing.T) { assert := asserts.NewTestingAssertion(t, true) done := false l := loop.Go(generateSimpleBackend(&done)) assert.Nil(l.Stop(), "no error after simple stop") assert.True(done, "backend has done") status, _ := l.Error() assert.Equal(loop.Stopped, status, "loop is stopped") }
// Test an internal error. func TestError(t *testing.T) { assert := asserts.NewTestingAssertion(t, true) done := false l := loop.Go(generateErrorBackend(&done)) time.Sleep(longDelay) assert.ErrorMatch(l.Stop(), "timed out", "error has to be 'time out'") assert.True(done, "backend has done") status, _ := l.Error() assert.Equal(loop.Stopped, status, "loop is stopped") }
// Test the simple backend returning an error after kill. func TestSimpleKill(t *testing.T) { assert := asserts.NewTestingAssertion(t, true) done := false l := loop.Go(generateSimpleBackend(&done)) l.Kill(errors.New("ouch")) assert.ErrorMatch(l.Stop(), "ouch", "error has to be 'ouch'") assert.True(done, "backend has done") status, _ := l.Error() assert.Equal(loop.Stopped, status, "loop is stopped") }
func ExampleLoopFunc() { printChan := make(chan string) loopFunc := func(l loop.Loop) error { for { select { case <-l.ShallStop(): return nil case str := <-printChan: println(str) } } } loop.Go(loopFunc) }