save progress
This commit is contained in:
@@ -0,0 +1,94 @@
|
||||
// Copyright (c) StellaOps. All rights reserved.
|
||||
// Licensed under AGPL-3.0-or-later. See LICENSE in the project root.
|
||||
|
||||
using FluentAssertions;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Microsoft.Extensions.Logging.Abstractions;
|
||||
using StellaOps.BinaryIndex.Disassembly.B2R2;
|
||||
using StellaOps.BinaryIndex.Disassembly.Iced;
|
||||
using Xunit;
|
||||
|
||||
namespace StellaOps.BinaryIndex.Disassembly.Tests;
|
||||
|
||||
/// <summary>
|
||||
/// Tests for the disassembly plugin capabilities reporting.
|
||||
/// </summary>
|
||||
[Trait("Category", "Unit")]
|
||||
public sealed class PluginCapabilitiesTests
|
||||
{
|
||||
[Fact]
|
||||
public void IcedPlugin_ReportsCorrectCapabilities()
|
||||
{
|
||||
// Arrange
|
||||
var logger = NullLogger<IcedDisassemblyPlugin>.Instance;
|
||||
var plugin = new IcedDisassemblyPlugin(logger);
|
||||
|
||||
// Act
|
||||
var capabilities = plugin.Capabilities;
|
||||
|
||||
// Assert
|
||||
capabilities.PluginId.Should().Be("stellaops.disasm.iced");
|
||||
capabilities.Name.Should().Contain("Iced");
|
||||
capabilities.SupportedArchitectures.Should().Contain(CpuArchitecture.X86);
|
||||
capabilities.SupportedArchitectures.Should().Contain(CpuArchitecture.X86_64);
|
||||
capabilities.SupportedArchitectures.Should().NotContain(CpuArchitecture.ARM64);
|
||||
capabilities.SupportedFormats.Should().Contain(BinaryFormat.ELF);
|
||||
capabilities.SupportedFormats.Should().Contain(BinaryFormat.PE);
|
||||
capabilities.SupportedFormats.Should().Contain(BinaryFormat.Raw);
|
||||
capabilities.SupportsLifting.Should().BeFalse();
|
||||
capabilities.Priority.Should().BeGreaterThan(0);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void B2R2Plugin_ReportsCorrectCapabilities()
|
||||
{
|
||||
// Arrange
|
||||
var logger = NullLogger<B2R2DisassemblyPlugin>.Instance;
|
||||
var plugin = new B2R2DisassemblyPlugin(logger);
|
||||
|
||||
// Act
|
||||
var capabilities = plugin.Capabilities;
|
||||
|
||||
// Assert
|
||||
capabilities.PluginId.Should().Be("stellaops.disasm.b2r2");
|
||||
capabilities.Name.Should().Contain("B2R2");
|
||||
capabilities.SupportedArchitectures.Should().Contain(CpuArchitecture.X86);
|
||||
capabilities.SupportedArchitectures.Should().Contain(CpuArchitecture.X86_64);
|
||||
capabilities.SupportedArchitectures.Should().Contain(CpuArchitecture.ARM32);
|
||||
capabilities.SupportedArchitectures.Should().Contain(CpuArchitecture.ARM64);
|
||||
capabilities.SupportedArchitectures.Should().Contain(CpuArchitecture.MIPS32);
|
||||
capabilities.SupportedArchitectures.Should().Contain(CpuArchitecture.RISCV64);
|
||||
capabilities.SupportedFormats.Should().Contain(BinaryFormat.ELF);
|
||||
capabilities.SupportedFormats.Should().Contain(BinaryFormat.PE);
|
||||
capabilities.SupportedFormats.Should().Contain(BinaryFormat.MachO);
|
||||
capabilities.SupportsLifting.Should().BeTrue();
|
||||
capabilities.SupportsCfgRecovery.Should().BeTrue();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void IcedPlugin_CanHandle_ReturnsTrueForX86Elf()
|
||||
{
|
||||
// Arrange
|
||||
var logger = NullLogger<IcedDisassemblyPlugin>.Instance;
|
||||
var plugin = new IcedDisassemblyPlugin(logger);
|
||||
|
||||
// Act & Assert
|
||||
plugin.Capabilities.CanHandle(CpuArchitecture.X86, BinaryFormat.ELF).Should().BeTrue();
|
||||
plugin.Capabilities.CanHandle(CpuArchitecture.X86_64, BinaryFormat.PE).Should().BeTrue();
|
||||
plugin.Capabilities.CanHandle(CpuArchitecture.ARM64, BinaryFormat.ELF).Should().BeFalse();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void B2R2Plugin_CanHandle_ReturnsTrueForArm64Elf()
|
||||
{
|
||||
// Arrange
|
||||
var logger = NullLogger<B2R2DisassemblyPlugin>.Instance;
|
||||
var plugin = new B2R2DisassemblyPlugin(logger);
|
||||
|
||||
// Act & Assert
|
||||
plugin.Capabilities.CanHandle(CpuArchitecture.ARM64, BinaryFormat.ELF).Should().BeTrue();
|
||||
plugin.Capabilities.CanHandle(CpuArchitecture.ARM32, BinaryFormat.MachO).Should().BeTrue();
|
||||
plugin.Capabilities.CanHandle(CpuArchitecture.RISCV64, BinaryFormat.ELF).Should().BeTrue();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user