/// <summary> /// Tests the files. /// </summary> /// <param name="inputDir">The input dir.</param> /// <param name="logger">The logger.</param> private static void TestFiles(string inputDir, ILogger logger) { if (!Directory.Exists(inputDir)) { logger.LogMessage(LogLevel.Error, "Test directory {0} does not exist", inputDir); Environment.Exit(Fail); } string arrangedDir = Path.Combine(inputDir, "Arranged"); if (Directory.Exists(arrangedDir)) { Directory.Delete(arrangedDir, true); } Directory.CreateDirectory(arrangedDir); FileInfo[] allSourceFiles = GetSourceFileNames(inputDir); logger.LogMessage(LogLevel.Info, "Testing with {0} source files...", allSourceFiles.Length); int preprocessorCount = 0; int uncompiledCount = 0; int successCount = 0; int failedCount = 0; TestLogger testLogger = new TestLogger(); FileArranger fileArranger = new FileArranger(null, testLogger); foreach (FileInfo sourceFile in allSourceFiles) { string initialSource = File.ReadAllText(sourceFile.FullName, Encoding.Default); CompilerResults initialResults = CompileSourceFile(sourceFile, initialSource); CompilerError error = TestUtilities.GetCompilerError(initialResults); if (error == null) { logger.LogMessage(LogLevel.Trace, "Succesfully compiled {0}", sourceFile.FullName); // // Arrange the source code file // testLogger.Clear(); string outputFile = Path.Combine(arrangedDir, sourceFile.Name); bool success = false; try { success = fileArranger.Arrange(sourceFile.FullName, outputFile); } catch (Exception ex) { logger.LogMessage( LogLevel.Error, "Unable to arrange {0}. {1}", sourceFile.Name, ex.Message); failedCount++; } if (success) { logger.LogMessage(LogLevel.Info, "Arrange successful."); } else if (testLogger.HasPartialMessage(LogLevel.Warning, "preprocessor")) { logger.LogMessage(LogLevel.Trace, "File is unhandled."); preprocessorCount++; } else { foreach (TestLogger.TestLogEvent logEvent in testLogger.Events) { logger.LogMessage(logEvent.Level, logEvent.Message); } logger.LogMessage(LogLevel.Error, "Unable to arrange {0}.", sourceFile.Name); failedCount++; } if (success) { string arrangedSource = File.ReadAllText(outputFile, Encoding.Default); CompilerResults arrangedResults = CompileSourceFile( new FileInfo(outputFile), arrangedSource); CompilerError arrangedError = TestUtilities.GetCompilerError(arrangedResults); if (arrangedError == null) { logger.LogMessage(LogLevel.Trace, "Succesfully compiled arranged file {0}", outputFile); try { bool assembliesMatch = CompareAssemblies( initialResults.CompiledAssembly, arrangedResults.CompiledAssembly, logger); if (assembliesMatch) { successCount++; } else { logger.LogMessage(LogLevel.Error, "Arranged assembly differs."); failedCount++; } } catch (ReflectionTypeLoadException ex) { logger.LogMessage( LogLevel.Error, "Failed to load one or more types. {0}, {1}", outputFile, ex.ToString()); failedCount++; } } else { logger.LogMessage( LogLevel.Error, "Failed to compile arranged file {0}, {1}", outputFile, arrangedError.ToString()); failedCount++; } } } else { logger.LogMessage(LogLevel.Error, "Failed to compile {0}", sourceFile.FullName); uncompiledCount++; } } logger.LogMessage(LogLevel.Info, "Unsupported - preprocessor: " + preprocessorCount.ToString()); logger.LogMessage(LogLevel.Info, "Uncompiled: " + uncompiledCount.ToString()); logger.LogMessage(LogLevel.Info, "Success: " + successCount.ToString()); logger.LogMessage(LogLevel.Info, "Failed: " + failedCount.ToString()); }
public void ArrangeSingleSourceFileRestoreTest() { TestLogger logger = new TestLogger(); string originalText = File.ReadAllText(_testValidSourceFile1); bool success = Arrange(logger, _testValidSourceFile1, "/b"); Assert.IsTrue(success, "Expected file to be arranged succesfully."); Assert.IsTrue(logger.HasMessage(LogLevel.Verbose, "1 files written.")); string arrangedText = File.ReadAllText(_testValidSourceFile1); Assert.IsTrue(arrangedText.Length > 0, "File is empty."); Assert.AreNotEqual(originalText, arrangedText, "File was not arranged."); logger.Clear(); success = Arrange(logger, _testValidSourceFile1, "/r"); Assert.IsTrue(success, "Expected file to be restored succesfully."); Assert.IsTrue(logger.HasMessage(LogLevel.Info, "Restored")); string restoredText = File.ReadAllText(_testValidSourceFile1); Assert.IsTrue(restoredText.Length > 0, "File is empty."); Assert.AreEqual(originalText, restoredText, "File was not restored."); }