From 6fd3f0fa4898e9f9dc47e50fbb4080a41e6f3a89 Mon Sep 17 00:00:00 2001 From: Evgenii Stratonikov Date: Wed, 5 Feb 2020 10:21:31 +0300 Subject: [PATCH] emit: add tests for Bytes --- pkg/vm/emit/emit_test.go | 56 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/pkg/vm/emit/emit_test.go b/pkg/vm/emit/emit_test.go index f25dade21..bbb83fc72 100644 --- a/pkg/vm/emit/emit_test.go +++ b/pkg/vm/emit/emit_test.go @@ -35,6 +35,62 @@ func TestEmitInt(t *testing.T) { }) } +func getSlice(n int) []byte { + data := make([]byte, n) + for i := range data { + data[i] = byte(i) + } + + return data +} + +func TestBytes(t *testing.T) { + t.Run("small slice", func(t *testing.T) { + buf := io.NewBufBinWriter() + Bytes(buf.BinWriter, []byte{0, 1, 2, 3}) + + result := buf.Bytes() + assert.EqualValues(t, opcode.PUSHBYTES4, result[0]) + assert.EqualValues(t, []byte{0, 1, 2, 3}, result[1:]) + }) + + t.Run("slice with len <= 255", func(t *testing.T) { + const size = 200 + + buf := io.NewBufBinWriter() + Bytes(buf.BinWriter, getSlice(size)) + + result := buf.Bytes() + assert.EqualValues(t, opcode.PUSHDATA1, result[0]) + assert.EqualValues(t, size, result[1]) + assert.Equal(t, getSlice(size), result[2:]) + }) + + t.Run("slice with len <= 65535", func(t *testing.T) { + const size = 60000 + + buf := io.NewBufBinWriter() + Bytes(buf.BinWriter, getSlice(size)) + + result := buf.Bytes() + assert.EqualValues(t, opcode.PUSHDATA2, result[0]) + assert.EqualValues(t, size, binary.LittleEndian.Uint16(result[1:3])) + assert.Equal(t, getSlice(size), result[3:]) + }) + + t.Run("slice with len > 65535", func(t *testing.T) { + const size = 100000 + + buf := io.NewBufBinWriter() + Bytes(buf.BinWriter, getSlice(size)) + + result := buf.Bytes() + assert.EqualValues(t, opcode.PUSHDATA4, result[0]) + assert.EqualValues(t, size, binary.LittleEndian.Uint32(result[1:5])) + assert.Equal(t, getSlice(size), result[5:]) + }) +} + func TestEmitBool(t *testing.T) { buf := io.NewBufBinWriter() Bool(buf.BinWriter, true)