From 5d70799363ad0260eb510df4e2d0ac013d69aeb1 Mon Sep 17 00:00:00 2001 From: wtfsck Date: Tue, 17 May 2022 20:45:55 +0200 Subject: [PATCH] Add Lua `BlockEncoder` tests --- .../iced-x86-lua/tests/block_encoder_spec.lua | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 src/rust/iced-x86-lua/tests/block_encoder_spec.lua diff --git a/src/rust/iced-x86-lua/tests/block_encoder_spec.lua b/src/rust/iced-x86-lua/tests/block_encoder_spec.lua new file mode 100644 index 000000000..75c045f71 --- /dev/null +++ b/src/rust/iced-x86-lua/tests/block_encoder_spec.lua @@ -0,0 +1,52 @@ +-- SPDX-License-Identifier: MIT +-- Copyright (C) 2018-present iced project and contributors + +local from_hex = require("iced_test_utils").from_hex + +describe("BlockEncoder", function() + local BlockEncoder = require("iced_x86.BlockEncoder") + local BlockEncoderOptions = require("iced_x86.BlockEncoderOptions") + local Decoder = require("iced_x86.Decoder") + + it("encode: empty", function() + local result = BlockEncoder.encode(64, {}, 0x12345678) + assert.equals("", result.code_buffer) + end) + + it("encode: invalid bitness", function() + assert.has_error(function() + local _ = BlockEncoder.encode(1, {}, 0x12345678) + end) + end) + + it("encode: with options", function() + local decoder = Decoder:new(64, from_hex("72 00"), nil, 0x12345678) + local instr = decoder:decode() + local result = BlockEncoder.encode(64, { instr }, 0x12345578, BlockEncoderOptions.None) + assert.equals(from_hex("0F82 FC000000"), result.code_buffer) + assert.has_error(function() + local _ = BlockEncoder.encode(64, { instr }, 0x12345578, BlockEncoderOptions.DontFixBranches) + end) + end) + + it("encode: 16", function() + local decoder = Decoder:new(16, from_hex("72 00"), nil, 0x5678) + local instr = decoder:decode() + local result = BlockEncoder.encode(16, { instr }, 0x5578) + assert.equals(from_hex("0F82 FE00"), result.code_buffer) + end) + + it("encode: 32", function() + local decoder = Decoder:new(32, from_hex("72 00"), nil, 0x12345678) + local instr = decoder:decode() + local result = BlockEncoder.encode(32, { instr }, 0x12345578) + assert.equals(from_hex("0F82 FC000000"), result.code_buffer) + end) + + it("encode: 64", function() + local decoder = Decoder:new(64, from_hex("72 00"), nil, 0x12345678) + local instr = decoder:decode() + local result = BlockEncoder.encode(64, { instr }, 0x12345578) + assert.equals(from_hex("0F82 FC000000"), result.code_buffer) + end) +end)