|
|
@@ -0,0 +1,61 @@
|
|
|
+using Xunit;
|
|
|
+using IvfTl.AutoFocus.Layout;
|
|
|
+
|
|
|
+namespace IvfTl.AutoFocus.Tests
|
|
|
+{
|
|
|
+ public class FocusRangeResolverTests
|
|
|
+ {
|
|
|
+ private static FocusRangeRawConfig Raw(
|
|
|
+ int? wellH = null, int? wellV = null,
|
|
|
+ int? devH = null, int? devV = null,
|
|
|
+ int expMin = 10, int expMax = 800,
|
|
|
+ int hCenter = 71000, int vCenter = 88000) =>
|
|
|
+ new FocusRangeRawConfig
|
|
|
+ {
|
|
|
+ WellHRange = wellH, WellVRange = wellV,
|
|
|
+ DeviceHRange = devH, DeviceVRange = devV,
|
|
|
+ ExposureMin = expMin, ExposureMax = expMax,
|
|
|
+ HorizontalCenter = hCenter, VerticalCenter = vCenter,
|
|
|
+ };
|
|
|
+
|
|
|
+ [Fact]
|
|
|
+ public void 半幅_well级覆盖设备级()
|
|
|
+ {
|
|
|
+ var r = FocusRangeResolver.Resolve(Raw(wellH: 1500, wellV: 4000, devH: 2000, devV: 6000));
|
|
|
+ Assert.Equal(1500, r.HHalf);
|
|
|
+ Assert.Equal(4000, r.VHalf);
|
|
|
+ }
|
|
|
+
|
|
|
+ [Fact]
|
|
|
+ public void 半幅_well空则继承设备级()
|
|
|
+ {
|
|
|
+ var r = FocusRangeResolver.Resolve(Raw(wellH: null, wellV: null, devH: 2000, devV: 6000));
|
|
|
+ Assert.Equal(2000, r.HHalf);
|
|
|
+ Assert.Equal(6000, r.VHalf);
|
|
|
+ }
|
|
|
+
|
|
|
+ [Fact]
|
|
|
+ public void 半幅_两级皆空则回退引擎默认()
|
|
|
+ {
|
|
|
+ var r = FocusRangeResolver.Resolve(Raw(wellH: null, wellV: null, devH: null, devV: null));
|
|
|
+ Assert.Equal(FocusRangeResolver.DefaultHHalf, r.HHalf);
|
|
|
+ Assert.Equal(FocusRangeResolver.DefaultVHalf, r.VHalf);
|
|
|
+ }
|
|
|
+
|
|
|
+ [Fact]
|
|
|
+ public void 曝光范围_透传设备级()
|
|
|
+ {
|
|
|
+ var r = FocusRangeResolver.Resolve(Raw(expMin: 15, expMax: 600));
|
|
|
+ Assert.Equal(15, r.ExpLo);
|
|
|
+ Assert.Equal(600, r.ExpHi);
|
|
|
+ }
|
|
|
+
|
|
|
+ [Fact]
|
|
|
+ public void 中心_原样透传()
|
|
|
+ {
|
|
|
+ var r = FocusRangeResolver.Resolve(Raw(hCenter: 71000, vCenter: 88000));
|
|
|
+ Assert.Equal(71000, r.HCenter);
|
|
|
+ Assert.Equal(88000, r.VCenter);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|