MCPcopy Create free account
hub / github.com/DNAProject/DNA / TestStructValue

Function TestStructValue

vm/neovm/stack_opcode_test.go:322–377  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

320
321}
322func TestStructValue(t *testing.T) {
323 s := types.NewStructValue()
324 k, err := types.VmValueFromBytes([]byte("key"))
325 assert.Equal(t, err, nil)
326 v, err := types.VmValueFromBytes([]byte("value"))
327 assert.Equal(t, err, nil)
328 err = s.Append(k)
329 assert.Nil(t, err)
330 err = s.Append(v)
331 assert.Nil(t, err)
332 s4 := types.NewStructValue()
333 v2, err := types.VmValueFromBytes([]byte("value2"))
334 assert.Equal(t, err, nil)
335 err = s4.Append(k)
336 assert.Nil(t, err)
337 err = s4.Append(v2)
338 assert.Nil(t, err)
339 s3 := types.NewStructValue()
340 err = s3.Append(k)
341 assert.Nil(t, err)
342 s5 := types.NewStructValue()
343 err = s5.Append(k)
344 assert.Nil(t, err)
345 err = s5.Append(types.VmValueFromStructVal(s3))
346 assert.Nil(t, err)
347
348 //checkMultiStackOpCode(t, []OpCode{PICKITEM}, []Value{s, int64(1)}, []Value{"value"})
349 checkAltStackOpCodeNew(t, []byte{byte(PICKITEM)}, [2][]Value{[]Value{s, int64(1)}, {}}, [2][]Value{[]Value{[]byte("value")}, {}})
350 checkAltStackOpCodeNew(t, []byte{byte(TOALTSTACK), byte(PUSH1), byte(DUPFROMALTSTACK), byte(PUSH2), byte(XSWAP), byte(SETITEM), byte(FROMALTSTACK)},
351 [2][]Value{[]Value{[]byte("value2"), s}},
352 [2][]Value{[]Value{s4}})
353
354 checkAltStackOpCodeNew(t, []byte{byte(TOALTSTACK), byte(PUSH1), byte(DUPFROMALTSTACK), byte(PUSH2), byte(XSWAP), byte(SETITEM), byte(FROMALTSTACK)},
355 [2][]Value{[]Value{s3, s}},
356 [2][]Value{[]Value{s5}})
357
358 s2 := types.NewStructValue()
359 err = s2.Append(types.VmValueFromBool(false))
360 assert.Nil(t, err)
361 checkAltStackOpCodeNew(t, []byte{byte(NEWSTRUCT)},
362 [2][]Value{[]Value{int64(1)}}, [2][]Value{[]Value{s2}})
363
364 s7 := types.NewStructValue()
365 err = s7.Append(types.VmValueFromBool(false))
366 assert.Nil(t, err)
367 err = s7.Append(types.VmValueFromStructVal(s3))
368 assert.Nil(t, err)
369
370 s6 := types.NewStructValue()
371 err = s6.Append(types.VmValueFromBool(false))
372 assert.Nil(t, err)
373 checkAltStackOpCodeNew(t, []byte{byte(TOALTSTACK), byte(DUPFROMALTSTACK), byte(PUSH1), byte(XSWAP), byte(APPEND), byte(FROMALTSTACK)},
374 [2][]Value{[]Value{s3, s6}}, [2][]Value{[]Value{s7}})
375
376 checkAltStackOpCodeNew(t, []byte{byte(PUSH1), byte(PICKITEM)}, [2][]Value{[]Value{s7}}, [2][]Value{[]Value{s3}})
377}
378
379func TestStringOpcode(t *testing.T) {

Callers

nothing calls this directly

Calls 6

AppendMethod · 0.95
NewStructValueFunction · 0.92
VmValueFromBytesFunction · 0.92
VmValueFromStructValFunction · 0.92
VmValueFromBoolFunction · 0.92
checkAltStackOpCodeNewFunction · 0.85

Tested by

no test coverage detected