Files
Axi_Omron/tests/AxiOmron.PcbCheck.Tests/DualScannerResultMergerTests.cs
yunxiao.zhu ce356bffff ✨ feat(*): 重构PCB放行流程并接入双扫码校验
- 将流程改为 OMRON FINS + TCP 双扫码 + SFTP 文件校验
- 新增文件校验与扫码结果汇总实现,补充对应单测
- 同步更新流程设计文档、配置和系统设置页面文案
2026-05-17 14:08:05 +08:00

65 lines
1.9 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using AxiOmron.PcbCheck.Models;
using AxiOmron.PcbCheck.Services.Implementations;
using Xunit;
namespace AxiOmron.PcbCheck.Tests;
/// <summary>
/// 验证双扫码枪结果汇总规则。
/// </summary>
public sealed class DualScannerResultMergerTests
{
/// <summary>
/// 任一扫码枪成功时,应使用成功条码继续后续 SFTP 流程。
/// </summary>
[Fact]
public void Merge_ShouldUseSecondBarcode_WhenOnlySecondScannerSucceeds()
{
var first = new ScanOperationResult
{
IsSuccess = false,
DeviceConnected = true,
ErrorMessage = "扫码枪1超时"
};
var second = new ScanOperationResult
{
IsSuccess = true,
DeviceConnected = true,
Barcode = "PCB-SECOND"
};
ScanOperationResult result = DualScannerResultMerger.Merge(first, second);
Assert.True(result.IsSuccess);
Assert.Equal("PCB-SECOND", result.Barcode);
Assert.Contains("扫码枪2", result.RawMessage);
}
/// <summary>
/// 两把扫码枪都成功但内容不一致时,应优先使用扫码枪1条码并保留不一致说明。
/// </summary>
[Fact]
public void Merge_ShouldPreferFirstBarcode_WhenBothScannersReturnDifferentBarcodes()
{
var first = new ScanOperationResult
{
IsSuccess = true,
DeviceConnected = true,
Barcode = "PCB-FIRST"
};
var second = new ScanOperationResult
{
IsSuccess = true,
DeviceConnected = true,
Barcode = "PCB-SECOND"
};
ScanOperationResult result = DualScannerResultMerger.Merge(first, second);
Assert.True(result.IsSuccess);
Assert.Equal("PCB-FIRST", result.Barcode);
Assert.Contains("不一致", result.ErrorMessage);
Assert.Contains("PCB-SECOND", result.RawMessage);
}
}