(t *testing.T)
| 320 | |
| 321 | } |
| 322 | func 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 | |
| 379 | func TestStringOpcode(t *testing.T) { |
nothing calls this directly
no test coverage detected