Ejemplo n.º 1
0
        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);
                                }
                            }
                        }
                    }
                }
            }
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        public void conditionalWithByNameAndTextRec()
        {
            ElementSelector es = ElementSelectors.ConditionalBuilder()
                                 .WhenElementIsNamed("tr").ThenUse(ByNameAndTextRecSelector.CanBeCompared)
                                 .ElseUse(ElementSelectors.ByName)
                                 .Build();

            var myDiff = DiffBuilder.Compare(CONTROL).WithTest(TEST)
                         .WithNodeMatcher(new DefaultNodeMatcher(es))
                         .CheckForSimilar()
                         .Build();

            Assert.IsFalse(myDiff.HasDifferences(), myDiff.ToString());
        }
Ejemplo n.º 4
0
 public string Serialize(Func <ScriptSelector, string> scriptReplacer)
 {
     return(string.Join("^", ElementSelectors.Select(e => e.Serialize(scriptReplacer))));
 }
Ejemplo n.º 5
0
 public bool ContainsScripts() => ElementSelectors.Any(c => c.ContainsScripts());