(t *testing.T)
| 1314 | } |
| 1315 | |
| 1316 | func TestContextInternalsCoverage(t *testing.T) { |
| 1317 | t.Run("ScheduleEdgeCases", func(t *testing.T) { |
| 1318 | var nilCtx *Context |
| 1319 | require.False(t, nilCtx.Schedule(func(*Context) {})) |
| 1320 | |
| 1321 | ctx := &Context{} |
| 1322 | require.False(t, ctx.Schedule(func(*Context) {})) |
| 1323 | |
| 1324 | ctx.initScheduler() |
| 1325 | require.False(t, ctx.Schedule(nil)) |
| 1326 | |
| 1327 | close(ctx.jobClosed) |
| 1328 | require.False(t, ctx.Schedule(func(*Context) {})) |
| 1329 | |
| 1330 | blockingCtx := &Context{ |
| 1331 | jobQueue: make(chan func(*Context), 1), |
| 1332 | jobClosed: make(chan struct{}), |
| 1333 | } |
| 1334 | blockingCtx.jobQueue <- func(*Context) {} |
| 1335 | done := make(chan struct{}) |
| 1336 | go func() { |
| 1337 | time.Sleep(5 * time.Millisecond) |
| 1338 | close(blockingCtx.jobClosed) |
| 1339 | close(done) |
| 1340 | }() |
| 1341 | require.False(t, blockingCtx.Schedule(func(*Context) {})) |
| 1342 | <-done |
| 1343 | }) |
| 1344 | |
| 1345 | t.Run("ProcessJobsAndDrainJobs", func(t *testing.T) { |
| 1346 | var nilCtx *Context |
| 1347 | require.NotPanics(t, func() { nilCtx.ProcessJobs() }) |
| 1348 | require.NotPanics(t, func() { nilCtx.drainJobs() }) |
| 1349 | |
| 1350 | emptyCtx := &Context{} |
| 1351 | require.NotPanics(t, func() { emptyCtx.ProcessJobs() }) |
| 1352 | require.NotPanics(t, func() { emptyCtx.drainJobs() }) |
| 1353 | |
| 1354 | emptyCtx.initScheduler() |
| 1355 | var calls int |
| 1356 | require.True(t, emptyCtx.Schedule(func(inner *Context) { |
| 1357 | require.Same(t, emptyCtx, inner) |
| 1358 | calls++ |
| 1359 | })) |
| 1360 | emptyCtx.jobQueue <- nil |
| 1361 | emptyCtx.ProcessJobs() |
| 1362 | require.Equal(t, 1, calls) |
| 1363 | |
| 1364 | emptyCtx.jobQueue <- func(*Context) {} |
| 1365 | emptyCtx.jobQueue <- nil |
| 1366 | emptyCtx.drainJobs() |
| 1367 | require.Equal(t, 0, len(emptyCtx.jobQueue)) |
| 1368 | }) |
| 1369 | |
| 1370 | t.Run("DuplicateValue", func(t *testing.T) { |
| 1371 | rt := NewRuntime() |
| 1372 | defer rt.Close() |
| 1373 | ctx := rt.NewContext() |
nothing calls this directly
no test coverage detected