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

Function TestValuePropertyDescriptorAndAtomInt64APIs

value_test.go:221–398  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

219}
220
221func TestValuePropertyDescriptorAndAtomInt64APIs(t *testing.T) {
222 useStableOwnerHooksForLegacySubtests(t)
223
224 rt := NewRuntime()
225 defer rt.Close()
226 ctx := rt.NewContext()
227 defer ctx.Close()
228
229 obj := ctx.NewObject()
230 defer obj.Free()
231
232 v := ctx.NewInt32(7)
233 defer v.Free()
234 require.True(t, obj.DefinePropertyValue("x", v, 0))
235 x := obj.Get("x")
236 defer x.Free()
237 require.Equal(t, int32(7), x.ToInt32())
238
239 atomX := ctx.NewAtom("x2")
240 defer atomX.Free()
241 v2Local := ctx.NewInt32(8)
242 defer v2Local.Free()
243 require.True(t, obj.DefinePropertyAtom(atomX, PropertyDescriptor{
244 Flags: PropHasValue | PropHasWritable | PropHasConfigurable | PropWritable | PropConfigurable,
245 Value: v2Local,
246 }))
247 x2 := obj.Get("x2")
248 defer x2.Free()
249 require.Equal(t, int32(8), x2.ToInt32())
250
251 v3Local := ctx.NewInt32(11)
252 defer v3Local.Free()
253 require.True(t, obj.DefineProperty("x3", PropertyDescriptor{
254 Flags: PropHasValue | PropHasWritable | PropHasConfigurable | PropWritable | PropConfigurable,
255 Value: v3Local,
256 }))
257 x3 := obj.Get("x3")
258 defer x3.Free()
259 require.Equal(t, int32(11), x3.ToInt32())
260
261 getter := ctx.Eval(`(function(){ return 42; })`)
262 defer getter.Free()
263 setter := ctx.Eval(`(function(v){ this._s = v; })`)
264 defer setter.Free()
265 require.True(t, obj.DefinePropertyGetSet("gs", getter, setter, 0))
266
267 atomGS := ctx.NewAtom("gs2")
268 defer atomGS.Free()
269 require.True(t, obj.DefinePropertyAtom(atomGS, PropertyDescriptor{
270 Getter: getter,
271 Setter: setter,
272 }))
273
274 setVal := ctx.NewInt32(9)
275 defer setVal.Free()
276 obj.Set("gs", setVal)
277 s := obj.Get("_s")
278 defer s.Free()

Callers

nothing calls this directly

Calls 15

CloseMethod · 0.95
NewContextMethod · 0.95
CloseMethod · 0.95
NewObjectMethod · 0.95
FreeMethod · 0.95
NewInt32Method · 0.95
NewAtomMethod · 0.95
EvalMethod · 0.95
NewStringMethod · 0.95
ExceptionMethod · 0.95
NewRuntimeFunction · 0.85

Tested by

no test coverage detected