MCPcopy Create free account
hub / github.com/buke/quickjs-go / TestContextInternalsCoverage

Function TestContextInternalsCoverage

context_test.go:1316–1661  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

1314}
1315
1316func 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()

Callers

nothing calls this directly

Calls 15

ScheduleMethod · 0.95
initSchedulerMethod · 0.95
ProcessJobsMethod · 0.95
drainJobsMethod · 0.95
CloseMethod · 0.95
NewContextMethod · 0.95
CloseMethod · 0.95
NewStringMethod · 0.95
duplicateValueMethod · 0.95
wrapPromiseCallbackMethod · 0.95
EvalMethod · 0.95
AwaitMethod · 0.95

Tested by

no test coverage detected