- 将流程改为 OMRON FINS + TCP 双扫码 + SFTP 文件校验 - 新增文件校验与扫码结果汇总实现,补充对应单测 - 同步更新流程设计文档、配置和系统设置页面文案
65 lines
1.9 KiB
C#
65 lines
1.9 KiB
C#
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);
|
||
}
|
||
}
|