public void TestPixelDeserialization(AdvSourceDataFormat dataFormat, byte dynaBits, CompressionType compression) { var fileGen = new AdvGenerator(); var cfg = new AdvGenerationConfig() { DynaBits = dynaBits, SourceFormat = dataFormat, NumberOfFrames = 1, Compression = compression, NormalPixelValue = null }; string fileName = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString("N")); if (File.Exists(fileName)) { File.Delete(fileName); } AdvFile2 file = null; try { // Generate fileGen.GenerateaAdv_V2(cfg, fileName); var hasher = new Hasher(); string h1 = hasher.CalcMd5(fileName); Console.WriteLine("File hash for {0} at {1} bits: {2}", dataFormat, dynaBits, h1); // Verify using (file = new AdvFile2(fileName)) { uint[] pixels = file.GetMainFramePixels(0); var imageGenerator = new ImageGenerator(); var verified = imageGenerator.VerifyImagePattern1UInt32(pixels, cfg.DynaBits); Assert.IsTrue(verified); } } finally { try { if (file != null) { file.Close(); } if (File.Exists(fileName)) { File.Delete(fileName); } } catch (Exception ex) { Console.WriteLine(ex); Trace.WriteLine(ex); } } }
/* Lagarith16 produces different hashes at different times so the hash level check has been removed * Lagarith16 is still tested at pixel level to ensure decompression produces exactly the originally compressed pixels * [TestCase(AdvSourceDataFormat.Format16BitLittleEndianByte, 16, CompressionType.Lagarith16, "2B137AE29578EF9803FD941DDA5BCF90")] * [TestCase(AdvSourceDataFormat.Format16BitUShort, 16, CompressionType.Lagarith16, "2B137AE29578EF9803FD941DDA5BCF90")] * [TestCase(AdvSourceDataFormat.Format16BitUShort, 12, CompressionType.Lagarith16, "1D4D1A051EAC7C3544CD9230A208EC37")] * [TestCase(AdvSourceDataFormat.Format16BitUShort, 8, CompressionType.Lagarith16, "B45D0AFF61E71129CB9B2D5BB63B6FCA")] * [TestCase(AdvSourceDataFormat.Format8BitByte, 8, CompressionType.Lagarith16, "5DBDE91E67E87D64DA46885C028CCC1D")] */ public void TestFileHashesOfZeroTimestampFiles(AdvSourceDataFormat dataFormat, byte dynaBits, CompressionType compression, string expectedHash) { var fileGen = new AdvGenerator(); var cfg = BuildZeroTimestampConfig(dataFormat, dynaBits, compression); string fileName = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString("N")); if (File.Exists(fileName)) { File.Delete(fileName); } try { // Generate cfg.SaveCustomStatusSectionTags = true; fileGen.GenerateaAdv_V2(cfg, fileName); var hasher = new Hasher(); string h1 = hasher.CalcMd5(fileName); // Verify Assert.AreEqual(expectedHash, h1); } finally { try { if (File.Exists(fileName)) { File.Delete(fileName); } } catch (Exception ex) { Console.WriteLine(ex); Trace.WriteLine(ex); } } }
private AdvGenerationConfig BuildZeroTimestampConfig(AdvSourceDataFormat dataFormat, byte dynaBits, CompressionType compression) { return(new AdvGenerationConfig() { DynaBits = dynaBits, SourceFormat = dataFormat, NumberOfFrames = 1, Compression = compression, NormalPixelValue = null, MainStreamCustomClock = new CustomClockConfig() { ClockFrequency = 1, ClockTicksCallback = () => 0, TicksTimingAccuracy = 1 }, CalibrationStreamCustomClock = new CustomClockConfig() { ClockFrequency = 1, ClockTicksCallback = () => 0, TicksTimingAccuracy = 1 }, TimeStampCallback = new GetCurrentImageTimeStampCallback((frameId) => DateTime.MinValue) }); }