(t *testing.T)
| 153 | } |
| 154 | |
| 155 | func TestResolveClassObjectFromOpaqueContracts(t *testing.T) { |
| 156 | rt := NewRuntime() |
| 157 | defer rt.Close() |
| 158 | ctx := rt.NewContext() |
| 159 | defer ctx.Close() |
| 160 | |
| 161 | _, _, ok := resolveClassObjectFromOpaque(nil, opaqueFromIDForTest(1)) |
| 162 | require.False(t, ok) |
| 163 | |
| 164 | orphanCtx := &Context{handleStore: ctx.handleStore} |
| 165 | _, _, ok = resolveClassObjectFromOpaque(orphanCtx, classObjectOpaque(-1)) |
| 166 | require.False(t, ok) |
| 167 | |
| 168 | _, _, ok = resolveClassObjectFromOpaque(ctx, nil) |
| 169 | require.False(t, ok) |
| 170 | |
| 171 | _, _, ok = resolveClassObjectFromOpaque(ctx, opaqueFromIDForTest(123)) |
| 172 | require.False(t, ok) |
| 173 | |
| 174 | idHandle := ctx.handleStore.Store("identity-handle") |
| 175 | defer ctx.handleStore.Delete(idHandle) |
| 176 | objectID := rt.registerClassObjectIdentity(ctx.contextID, idHandle) |
| 177 | require.NotZero(t, objectID) |
| 178 | |
| 179 | ownerCtx, handleID, ok := resolveClassObjectFromOpaque(ctx, classObjectOpaque(objectID)) |
| 180 | require.True(t, ok) |
| 181 | require.Equal(t, ctx, ownerCtx) |
| 182 | require.Equal(t, idHandle, handleID) |
| 183 | |
| 184 | rt.contextsByID.Delete(ctx.contextID) |
| 185 | _, _, ok = resolveClassObjectFromOpaque(ctx, classObjectOpaque(objectID)) |
| 186 | require.False(t, ok) |
| 187 | rt.contextsByID.Store(ctx.contextID, ctx) |
| 188 | |
| 189 | rt.classObjectRegistry.Delete(objectID) |
| 190 | _, _, ok = resolveClassObjectFromOpaque(ctx, classObjectOpaque(objectID)) |
| 191 | require.False(t, ok) |
| 192 | |
| 193 | ctxNoStore := &Context{runtime: rt} |
| 194 | _, _, ok = resolveClassObjectFromOpaque(ctxNoStore, classObjectOpaque(-777)) |
| 195 | require.False(t, ok) |
| 196 | |
| 197 | _, _, ok = resolveClassObjectFromOpaque(ctx, classObjectOpaque(-1234567)) |
| 198 | require.False(t, ok) |
| 199 | } |
| 200 | |
| 201 | func TestClassOpaqueWrapperGuards(t *testing.T) { |
| 202 | require.Nil(t, classObjectOpaque(0)) |
nothing calls this directly
no test coverage detected