public void Test03_LoadThenSaveIsDeterministic() { Debug.WriteLine("Unit test initialized for: Test03_LoadThenSaveIsDeterministic()"); foreach (FileInfo objBaseFileInfo in TestFiles) { // First Load-Save cycle string strDestinationControl = Path.Combine(TestPathInfo.FullName, "(Control) " + objBaseFileInfo.Name); using (Character objCharacterControl = LoadCharacter(objBaseFileInfo)) { SaveCharacter(objCharacterControl, strDestinationControl); // Second Load-Save cycle string strDestinationTest = Path.Combine(TestPathInfo.FullName, "(Test) " + objBaseFileInfo.Name); using (Character objCharacterTest = LoadCharacter(new FileInfo(strDestinationControl))) { SaveCharacter(objCharacterTest, strDestinationTest); // Check to see that character after first load cycle is consistent with character after second using (FileStream controlFileStream = File.Open(strDestinationControl, FileMode.Open, FileAccess.Read)) { using (FileStream testFileStream = File.Open(strDestinationTest, FileMode.Open, FileAccess.Read)) { try { Diff myDiff = DiffBuilder .Compare(controlFileStream) .WithTest(testFileStream) .CheckForIdentical() .WithNodeFilter(x => x.Name != "mugshot") // image loading and unloading is not going to be deterministic due to compression algorithms .WithNodeMatcher( new DefaultNodeMatcher( ElementSelectors.Or( ElementSelectors.ByNameAndText, ElementSelectors.ByName))) .IgnoreWhitespace() .Build(); foreach (Difference diff in myDiff.Differences) { Console.WriteLine(diff.Comparison); Console.WriteLine(); } Assert.IsFalse(myDiff.HasDifferences(), myDiff.ToString()); } catch (XmlSchemaException e) { Assert.Fail("Unexpected validation failure: " + e.Message); } } } } } } }
public void Load2ThenSaveIsDeterministic() { Debug.WriteLine("Unit test initialized for: Load2ThenSaveIsDeterministic()"); string strPath = Path.Combine(AppDomain.CurrentDomain.SetupInformation.ApplicationBase, "TestFiles"); string strTestPath = Path.Combine(strPath, nameof(Load2ThenSaveIsDeterministic) + '-' + DateTime.Now.ToString("yyyy-MM-dd-HH-mm", GlobalOptions.InvariantCultureInfo)); DirectoryInfo objTestPath = Directory.CreateDirectory(strTestPath); DirectoryInfo objPathInfo = new DirectoryInfo(strPath); //Assuming Test is your Folder FileInfo[] aobjFiles = objPathInfo.GetFiles("*.chum5"); //Getting Text files foreach (FileInfo objBaseFileInfo in aobjFiles) { // First Load-Save cycle string strDestinationControl = Path.Combine(objTestPath.FullName, "(Control) " + objBaseFileInfo.Name); using (Character objCharacter = LoadCharacter(objBaseFileInfo)) SaveCharacter(objCharacter, strDestinationControl); // Second Load-Save cycle string strDestinationTest = Path.Combine(objTestPath.FullName, "(Test) " + objBaseFileInfo.Name); using (Character objCharacter = LoadCharacter(new FileInfo(strDestinationControl))) SaveCharacter(objCharacter, strDestinationTest); // Check to see that character after first load cycle is consistent with character after second using (FileStream controlFileStream = File.Open(strDestinationControl, FileMode.Open, FileAccess.Read)) { using (FileStream testFileStream = File.Open(strDestinationTest, FileMode.Open, FileAccess.Read)) { try { Diff myDiff = DiffBuilder .Compare(controlFileStream) .WithTest(testFileStream) .CheckForIdentical() .WithNodeFilter(x => x.Name != "mugshot") // image loading and unloading is not going to be deterministic due to compression algorithms .WithNodeMatcher( new DefaultNodeMatcher( ElementSelectors.Or( ElementSelectors.ByNameAndText, ElementSelectors.ByName))) .IgnoreWhitespace() .Build(); foreach (Difference diff in myDiff.Differences) { Console.WriteLine(diff.Comparison); Console.WriteLine(); } Assert.IsFalse(myDiff.HasDifferences(), myDiff.ToString()); } catch (XmlSchemaException e) { Assert.Fail("Unexpected validation failure: " + e.Message); } } } } objTestPath.Delete(true); }