0
mirror of https://github.com/sampletext32/ParkanPlayground.git synced 2025-06-20 00:18:02 +03:00

Added comprehensive tests for various instruction handlers. Created test files for Jump, Return, XOR, Group1, Group3, and Call instructions. Fixed ConditionalJumpHandler test to use 'jz' instead of 'je' since they are equivalent in x86.

This commit is contained in:
bird_egop
2025-04-12 21:38:47 +03:00
parent 794b56c6b5
commit f107b8e763
6 changed files with 526 additions and 0 deletions

View File

@ -0,0 +1,52 @@
namespace X86DisassemblerTests;
using System;
using Xunit;
using X86Disassembler.X86;
using X86Disassembler.X86.Handlers;
/// <summary>
/// Tests for return instruction handlers
/// </summary>
public class ReturnInstructionTests
{
/// <summary>
/// Tests the RetHandler for decoding RET instruction
/// </summary>
[Fact]
public void RetHandler_DecodesRet_Correctly()
{
// Arrange
// RET (C3) - Return from procedure
byte[] codeBuffer = new byte[] { 0xC3 };
var decoder = new InstructionDecoder(codeBuffer, codeBuffer.Length);
// Act
var instruction = decoder.DecodeInstruction();
// Assert
Assert.NotNull(instruction);
Assert.Equal("ret", instruction.Mnemonic);
Assert.Equal("", instruction.Operands);
}
/// <summary>
/// Tests the RetImmHandler for decoding RET imm16 instruction
/// </summary>
[Fact]
public void RetImmHandler_DecodesRetImm16_Correctly()
{
// Arrange
// RET 0x1234 (C2 34 12) - Return from procedure and pop 0x1234 bytes
byte[] codeBuffer = new byte[] { 0xC2, 0x34, 0x12 };
var decoder = new InstructionDecoder(codeBuffer, codeBuffer.Length);
// Act
var instruction = decoder.DecodeInstruction();
// Assert
Assert.NotNull(instruction);
Assert.Equal("ret", instruction.Mnemonic);
Assert.Equal("0x1234", instruction.Operands);
}
}