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

Function TestRuntimeContextIDAndClassObjectIdentityRegistry

runtime_test.go:504–542  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

502}
503
504func TestRuntimeContextIDAndClassObjectIdentityRegistry(t *testing.T) {
505 rt := NewRuntime()
506 defer rt.Close()
507
508 ctx1 := rt.NewContext()
509 defer ctx1.Close()
510 ctx2 := rt.NewContext()
511 defer ctx2.Close()
512
513 require.NotZero(t, ctx1.contextID)
514 require.NotZero(t, ctx2.contextID)
515 require.NotEqual(t, ctx1.contextID, ctx2.contextID)
516 require.Equal(t, ctx1, rt.getOwnedContextByID(ctx1.contextID))
517 require.Equal(t, ctx2, rt.getOwnedContextByID(ctx2.contextID))
518
519 objID := rt.registerClassObjectIdentity(ctx1.contextID, 11)
520 require.NotZero(t, objID)
521
522 identity, ok := rt.getClassObjectIdentity(objID)
523 require.True(t, ok)
524 require.Equal(t, ctx1.contextID, identity.contextID)
525 require.Equal(t, int32(11), identity.handleID)
526
527 taken, ok := rt.takeClassObjectIdentity(objID)
528 require.True(t, ok)
529 require.Equal(t, identity, taken)
530 _, ok = rt.getClassObjectIdentity(objID)
531 require.False(t, ok)
532
533 ctx2Obj1 := rt.registerClassObjectIdentity(ctx2.contextID, 21)
534 ctx2Obj2 := rt.registerClassObjectIdentity(ctx2.contextID, 22)
535 require.NotZero(t, ctx2Obj1)
536 require.NotZero(t, ctx2Obj2)
537 rt.cleanupClassObjectIdentitiesByContext(ctx2.contextID)
538 _, ok = rt.getClassObjectIdentity(ctx2Obj1)
539 require.False(t, ok)
540 _, ok = rt.getClassObjectIdentity(ctx2Obj2)
541 require.False(t, ok)
542}
543
544func TestRuntimeNextClassObjectIDOverflowReturnsZero(t *testing.T) {
545 const maxInt32 = int32(^uint32(0) >> 1)

Callers

nothing calls this directly

Calls 10

CloseMethod · 0.95
NewContextMethod · 0.95
CloseMethod · 0.95
getOwnedContextByIDMethod · 0.95
NewRuntimeFunction · 0.85
EqualMethod · 0.80

Tested by

no test coverage detected