FocusRangeResolverTests.cs 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. using Xunit;
  2. using IvfTl.AutoFocus.Layout;
  3. namespace IvfTl.AutoFocus.Tests
  4. {
  5. public class FocusRangeResolverTests
  6. {
  7. private static FocusRangeRawConfig Raw(
  8. int? wellH = null, int? wellV = null,
  9. int? devH = null, int? devV = null,
  10. int expMin = 10, int expMax = 800,
  11. int hCenter = 71000, int vCenter = 88000) =>
  12. new FocusRangeRawConfig
  13. {
  14. WellHRange = wellH, WellVRange = wellV,
  15. DeviceHRange = devH, DeviceVRange = devV,
  16. ExposureMin = expMin, ExposureMax = expMax,
  17. HorizontalCenter = hCenter, VerticalCenter = vCenter,
  18. };
  19. [Fact]
  20. public void 半幅_well级覆盖设备级()
  21. {
  22. var r = FocusRangeResolver.Resolve(Raw(wellH: 1500, wellV: 4000, devH: 2000, devV: 6000));
  23. Assert.Equal(1500, r.HHalf);
  24. Assert.Equal(4000, r.VHalf);
  25. }
  26. [Fact]
  27. public void 半幅_well空则继承设备级()
  28. {
  29. var r = FocusRangeResolver.Resolve(Raw(wellH: null, wellV: null, devH: 2000, devV: 6000));
  30. Assert.Equal(2000, r.HHalf);
  31. Assert.Equal(6000, r.VHalf);
  32. }
  33. [Fact]
  34. public void 半幅_两级皆空则回退引擎默认()
  35. {
  36. var r = FocusRangeResolver.Resolve(Raw(wellH: null, wellV: null, devH: null, devV: null));
  37. Assert.Equal(FocusRangeResolver.DefaultHHalf, r.HHalf);
  38. Assert.Equal(FocusRangeResolver.DefaultVHalf, r.VHalf);
  39. }
  40. [Fact]
  41. public void 曝光范围_透传设备级()
  42. {
  43. var r = FocusRangeResolver.Resolve(Raw(expMin: 15, expMax: 600));
  44. Assert.Equal(15, r.ExpLo);
  45. Assert.Equal(600, r.ExpHi);
  46. }
  47. [Fact]
  48. public void 中心_原样透传()
  49. {
  50. var r = FocusRangeResolver.Resolve(Raw(hCenter: 71000, vCenter: 88000));
  51. Assert.Equal(71000, r.HCenter);
  52. Assert.Equal(88000, r.VCenter);
  53. }
  54. }
  55. }