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

Function TestResolveClassObjectFromOpaqueContracts

bridge_test.go:155–199  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

153}
154
155func 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
201func TestClassOpaqueWrapperGuards(t *testing.T) {
202 require.Nil(t, classObjectOpaque(0))

Callers

nothing calls this directly

Calls 11

CloseMethod · 0.95
NewContextMethod · 0.95
CloseMethod · 0.95
NewRuntimeFunction · 0.85
opaqueFromIDForTestFunction · 0.85
classObjectOpaqueFunction · 0.85
StoreMethod · 0.80
EqualMethod · 0.80
DeleteMethod · 0.45

Tested by

no test coverage detected