(t *testing.T)
| 502 | } |
| 503 | |
| 504 | func 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 | |
| 544 | func TestRuntimeNextClassObjectIDOverflowReturnsZero(t *testing.T) { |
| 545 | const maxInt32 = int32(^uint32(0) >> 1) |
nothing calls this directly
no test coverage detected