static protected void RunFile(string PspAutoTestsFolder, string FileNameExecutable, string FileNameExpected) { Console.Write("{0}...", FileNameExecutable); var ExpectedOutput = File.ReadAllText(FileNameExpected, Encoding.ASCII); var RealOutput = ""; // Execute. { RealOutput = RunExecutableAndGetOutput(PspAutoTestsFolder, FileNameExecutable); } var ExpectedOutputLines = ExpectedOutput.Trim().Replace("\r\n", "\n").Split('\n'); var RealOutputLines = RealOutput.Trim().Replace("\r\n", "\n").Split('\n'); var Result = Diff.DiffTextProcessed(ExpectedOutputLines, RealOutputLines); File.WriteAllText( Path.ChangeExtension(FileNameExpected, ".lastoutput"), RealOutput ); if (Result.Items.All(Item => Item.Action == Diff.ProcessedItem.ActionEnum.Keep)) { Console.WriteLine("Ok"); } else { Console.WriteLine("Error"); Result.Print(); } }
protected void RunFile(bool runTestsViewOut, string pspAutoTestsFolder, string fileNameExecutable, string fileNameExpected, string fileNameBase) { ConsoleUtils.SaveRestoreConsoleColor(ConsoleColor.DarkCyan, () => { Console.Write("{0}...", fileNameExecutable); }); var expectedOutput = File.ReadAllText(fileNameExpected, Encoding.ASCII); var realOutput = ""; var capturedOutput = ""; // Execute. { realOutput = RunExecutableAndGetOutput(runTestsViewOut, pspAutoTestsFolder, fileNameExecutable, out capturedOutput, fileNameBase); } var expectedOutputLines = expectedOutput.Trim().Replace("\r\n", "\n").Split('\n'); var realOutputLines = realOutput.Trim().Replace("\r\n", "\n").Split('\n'); var result = Diff.DiffTextProcessed(expectedOutputLines, realOutputLines); File.WriteAllText( Path.ChangeExtension(fileNameExpected, ".lastoutput"), realOutput ); File.WriteAllText( Path.ChangeExtension(fileNameExpected, ".lastdebug"), capturedOutput ); var hadAnError = false; for (var n = 0; n < 10; n++) { var imageReferenceFile = $"{fileNameBase}.reference.{n}.png"; var imageOutputFile = $"{fileNameBase}.lastoutput.{n}.png"; if (File.Exists(imageReferenceFile)) { if (File.Exists(imageOutputFile)) { var referenceBitmap = new Bitmap(imageReferenceFile); var outputBitmap = new Bitmap(imageOutputFile); if (referenceBitmap.Size == outputBitmap.Size) { var compareResult = BitmapUtils.CompareBitmaps(referenceBitmap, outputBitmap, 0.01); if (compareResult.Equal) { Console.Error.WriteLine( "Files '{0}:{1}' and '{2}:{3}' have different contents {4}/{5} different pixels {6}%", imageReferenceFile, referenceBitmap.Size, imageOutputFile, outputBitmap.Size, compareResult.DifferentPixelCount, compareResult.TotalPixelCount, compareResult.PixelTotalDifferencePercentage ); hadAnError = true; } } else { Console.Error.WriteLine( "Files '{0}:{1}' and '{2}:{3}' have different sizes", imageReferenceFile, referenceBitmap.Size, imageOutputFile, outputBitmap.Size ); hadAnError = true; } } else { Console.Error.WriteLine( "File '{0}' exists, but not exists '{1}'", imageReferenceFile, imageOutputFile ); hadAnError = true; } } } if (result.Items.Any(item => item.Action != Diff.ProcessedItem.ActionEnum.Keep)) { hadAnError = true; } if (!hadAnError) { ConsoleUtils.SaveRestoreConsoleColor(ConsoleColor.Green, () => { Console.WriteLine("Ok"); }); } else { ConsoleUtils.SaveRestoreConsoleColor(ConsoleColor.Red, () => { Console.WriteLine("Error"); }); result.Print(avoidKeep: true); } File.WriteAllText( Path.ChangeExtension(fileNameExpected, ".lastdiff"), result.ToString() ); }