From 2dfa224ed624075752defff77ef96961ec766bff Mon Sep 17 00:00:00 2001 From: Roy Ben-Shabat Date: Wed, 14 Feb 2018 14:36:47 +0200 Subject: Refactored ColorLab PMR Structs ! --- .../Tango.UnitTesting/ColorLib_TST.cs | 101 ++++++++++++++++----- 1 file changed, 76 insertions(+), 25 deletions(-) (limited to 'Software/Visual_Studio/Tango.UnitTesting') diff --git a/Software/Visual_Studio/Tango.UnitTesting/ColorLib_TST.cs b/Software/Visual_Studio/Tango.UnitTesting/ColorLib_TST.cs index e5ef944e5..f4940cdac 100644 --- a/Software/Visual_Studio/Tango.UnitTesting/ColorLib_TST.cs +++ b/Software/Visual_Studio/Tango.UnitTesting/ColorLib_TST.cs @@ -7,6 +7,7 @@ using Tango.Integration.Observables; using System.Linq; using Google.Protobuf; using Tango.PMR; +using System.Collections.Generic; namespace Tango.UnitTesting { @@ -14,24 +15,22 @@ namespace Tango.UnitTesting [TestCategory("Color Lab")] public class ColorLib_TST { - [DllImport("Tango.ColorLib.dll", CallingConvention = CallingConvention.Cdecl, EntryPoint = "ForwardConvert")] - public static extern int ForwardConvert(IntPtr data, int size, ref IntPtr output); - - [DllImport("Tango.ColorLib.dll", CallingConvention = CallingConvention.Cdecl, EntryPoint = "InverseConvert")] - public static extern int InverseConvert(IntPtr data, int size, ref IntPtr output); + [DllImport("Tango.ColorLib.dll", CallingConvention = CallingConvention.Cdecl, EntryPoint = "Convert")] + public static extern int Convert(IntPtr data, int size, ref IntPtr output); [TestMethod] public void Convert_Color_To_Volumes() { ConversionInput conversionInput = new ConversionInput(); - conversionInput.Input = new InputColor(); + conversionInput.ColorSpace = PMR.ColorLab.ColorSpace.Rgb; + conversionInput.InputCoordinates = new InputCoordinates(); conversionInput.SegmentLength = 100; - conversionInput.Input.Red = 255; - conversionInput.Input.Green = 0; - conversionInput.Input.Blue = 0; + conversionInput.InputCoordinates.Red = 50; + conversionInput.InputCoordinates.Green = 100; + conversionInput.InputCoordinates.Blue = 200; conversionInput.ThreadL = 100; conversionInput.ThreadA = 0.00526049995830391; @@ -46,18 +45,36 @@ namespace Tango.UnitTesting conversionInput.ForwardData = ByteString.CopyFrom(cct.ForwardData); conversionInput.InverseData = ByteString.CopyFrom(cct.InverseData); - var cat = db.Cats.FirstOrDefault(); + var machine = db.Machines.FirstOrDefault(); + Assert.IsNotNull(machine); + + var configuration = machine.Configuration; + var rml = db.Rmls.FirstOrDefault(); + + Assert.IsNotNull(rml); + + List factors = configuration.IdsPacks.OrderBy(x => x.PackIndex).Select(x => x.LiquidType).SelectMany(x => x.LiquidTypesRmls).Where(x => x.Rml.Guid == RML.Guid).ToList(); + + foreach (var idsPack in configuration.IdsPacks.OrderBy(x => x.PackIndex)) + { + InputLiquid inputLiquid = new InputLiquid(); + inputLiquid.LiquidType = idsPack.LiquidType.ToColorLibLiquidType(); + + Assert.IsFalse(configuration.IdsPacks.IndexOf(idsPack) > factors.Count - 1); - Assert.IsNotNull(cat); + inputLiquid.MaxNanoliterPerCentimeter = factors[configuration.IdsPacks.IndexOf(idsPack)].MaxNlPerCm; - conversionInput.CalibrationData = cat.CreateDemoCalibrationData(); + inputLiquid.CalibrationData = GenerateCalibrationData(inputLiquid.LiquidType); + + conversionInput.InputCoordinates.InputLiquids.Add(inputLiquid); + } } - NativePMR nativePMR = new NativePMR(ForwardConvert); + NativePMR nativePMR = new NativePMR(Convert); ConversionOutput output = nativePMR.Invoke(conversionInput); - Assert.IsTrue(output.Suggestions.Count > 0); + Assert.IsTrue(output.SingleCoordinates.OutputLiquids.Count == conversionInput.InputCoordinates.InputLiquids.Count); } [TestMethod] @@ -65,14 +82,11 @@ namespace Tango.UnitTesting { ConversionInput conversionInput = new ConversionInput(); - conversionInput.Input = new InputColor(); + conversionInput.ColorSpace = PMR.ColorLab.ColorSpace.Volume; - conversionInput.SegmentLength = 100; + conversionInput.InputCoordinates = new InputCoordinates(); - conversionInput.Input.CV = 10; - conversionInput.Input.MV = 20; - conversionInput.Input.YV = 30; - conversionInput.Input.KV = 0; + conversionInput.SegmentLength = 100; conversionInput.ThreadL = 100; conversionInput.ThreadA = 0.00526049995830391; @@ -87,18 +101,55 @@ namespace Tango.UnitTesting conversionInput.ForwardData = ByteString.CopyFrom(cct.ForwardData); conversionInput.InverseData = ByteString.CopyFrom(cct.InverseData); - var cat = db.Cats.FirstOrDefault(); + var machine = db.Machines.FirstOrDefault(); + Assert.IsNotNull(machine); + + var configuration = machine.Configuration; + var rml = db.Rmls.FirstOrDefault(); + + Assert.IsNotNull(rml); + + List factors = configuration.IdsPacks.OrderBy(x => x.PackIndex).Select(x => x.LiquidType).SelectMany(x => x.LiquidTypesRmls).Where(x => x.Rml.Guid == RML.Guid).ToList(); - Assert.IsNotNull(cat); + foreach (var idsPack in configuration.IdsPacks.OrderBy(x => x.PackIndex)) + { + InputLiquid inputLiquid = new InputLiquid(); + inputLiquid.LiquidType = idsPack.LiquidType.ToColorLibLiquidType(); - conversionInput.CalibrationData = cat.CreateDemoCalibrationData(); + Assert.IsFalse(configuration.IdsPacks.IndexOf(idsPack) > factors.Count - 1); + + inputLiquid.MaxNanoliterPerCentimeter = factors[configuration.IdsPacks.IndexOf(idsPack)].MaxNlPerCm; + + inputLiquid.CalibrationData = GenerateCalibrationData(inputLiquid.LiquidType); + + inputLiquid.Volume = new Random().Next(0, 100); + + conversionInput.InputCoordinates.InputLiquids.Add(inputLiquid); + } } - NativePMR nativePMR = new NativePMR(InverseConvert); + NativePMR nativePMR = new NativePMR(Convert); ConversionOutput output = nativePMR.Invoke(conversionInput); - Assert.IsTrue(output.Suggestions.Count > 0); + Assert.IsTrue(output.SingleCoordinates.OutputLiquids.Count == conversionInput.InputCoordinates.InputLiquids.Count); + } + + private static CalibrationData GenerateCalibrationData(PMR.ColorLab.LiquidType liquidType) + { + CalibrationData data = new CalibrationData(); + data.LiquidType = liquidType; + + for (int i = 0; i < 100; i++) + { + data.CalibrationPoints.Add(new CalibrationPoint() + { + X = i, + Y = i, + }); + } + + return data; } } } -- cgit v1.3.1