コード例 #1
0
        public void Test_delete_file_element_Pass()
        {
            var testXmlFile = @"testDelElement.xml";

            if (File.Exists($"{Environment.CurrentDirectory}{Path.DirectorySeparatorChar}" + testXmlFile))
            {
                File.Delete($"{Environment.CurrentDirectory}{Path.DirectorySeparatorChar}" + testXmlFile);
            }

            Assert.False(File.Exists(testXmlFile));
            var element      = "TestElement";
            var elementValue = "element value";
            var xmlObj       = new XmlObject(testXmlFile, testXml, true);

            xmlObj.Write(element, elementValue);
            xmlObj.Save();
            xmlObj.ReopenFile();
            xmlObj.Delete(element);
            xmlObj.Save();
            xmlObj.ReopenFile();
            var result = xmlObj.TryRead(element);

            Assert.NotEqual(result, element);
            File.Delete($"{Environment.CurrentDirectory}{Path.DirectorySeparatorChar}" + testXmlFile);
        }
コード例 #2
0
        public void Test_add_update_attribute_Pass()
        {
            var testXmlFile = @"testAddAttribute.xml";

            if (File.Exists($"{Environment.CurrentDirectory}{Path.DirectorySeparatorChar}" + testXmlFile))
            {
                File.Delete($"{Environment.CurrentDirectory}{Path.DirectorySeparatorChar}" + testXmlFile);
            }

            Assert.False(File.Exists(testXmlFile));
            var element           = "TestElement";
            var attribute         = "TestAttribute";
            var attributeValue    = "my cool value";
            var newAttributeValue = "my new cool value";
            var xmlObj            = new XmlObject(testXmlFile, testXml, true);

            xmlObj.AddAttribute(element, attribute, attributeValue);
            xmlObj.AddAttribute(element, attribute, newAttributeValue);
            xmlObj.Save();
            xmlObj.ReopenFile();
            var result = xmlObj.TryRead(element, attribute);

            Assert.Equal(result, newAttributeValue);
            File.Delete($"{Environment.CurrentDirectory}{Path.DirectorySeparatorChar}" + testXmlFile);
        }
コード例 #3
0
        public void Test_Subelements()
        {
            var testXmlFile = @"testCreate.xml";

            if (File.Exists($"{Environment.CurrentDirectory}{Path.DirectorySeparatorChar}" + testXmlFile))
            {
                File.Delete($"{Environment.CurrentDirectory}{Path.DirectorySeparatorChar}" + testXmlFile);
            }

            var xmlObj = new XmlObject(testXmlFile, testXml, true);

            xmlObj.Save();
            var values = new string[] { "test subelement value 1", "test subelement value 2" };

            xmlObj.Write("testsubelements", "subelement", values);
            Assert.NotEqual(Array.Empty <string>(), xmlObj.TryRead("testsubelements", "subelement", null));
            xmlObj.Save();
            Assert.Equal(values, xmlObj.TryRead("testsubelements", "subelement", null));
            File.Delete($"{Environment.CurrentDirectory}{Path.DirectorySeparatorChar}" + testXmlFile);
        }
コード例 #4
0
        public void TestClassEdits()
        {
            var testXml       = @"<?xml version=""1.0"" encoding=""utf-8"" ?>
<test>
</test>";
            var testXmlNoRoot = @"<test>
</test>";
            var xmlObj        = new XmlObject(testXml);

            // test to make sure that InvalidOperationException is thrown.
            Assert.ThrowsAny <InvalidOperationException>(() => xmlObj.AddAttribute("test4", "test", "test"));
            Assert.ThrowsAny <InvalidOperationException>(() => xmlObj.Write("test", "test"));
            Assert.ThrowsAny <InvalidOperationException>(() => xmlObj.Write("test2", "test", "test"));
            Assert.ThrowsAny <InvalidOperationException>(() => xmlObj.Write("test3", "test31", new string[] { "test1", "test2", "test3" }));
            Assert.ThrowsAny <InvalidOperationException>(() => xmlObj.Read("test"));
            Assert.ThrowsAny <InvalidOperationException>(() => xmlObj.Read("test2", "test"));
            Assert.ThrowsAny <InvalidOperationException>(() => xmlObj.Read("test3", "test31", null));
            Assert.ThrowsAny <InvalidOperationException>(() => xmlObj.Delete("test"));
            Assert.ThrowsAny <InvalidOperationException>(() => xmlObj.Delete("test2", "test"));
            Assert.ThrowsAny <InvalidOperationException>(() => xmlObj.ReopenFile());
            xmlObj = new XmlObject(testXmlNoRoot);
            // reopen data from a file.
            var fstrm = File.Create(
                $"{Environment.CurrentDirectory}{Path.DirectorySeparatorChar}test.xml");

            fstrm.Write(Encoding.UTF8.GetBytes(testXml), 0, testXml.Length);
            fstrm.Dispose();
            xmlObj = new XmlObject(
                $"{Environment.CurrentDirectory}{Path.DirectorySeparatorChar}test.xml",
                testXml);
            NoThrows(() => xmlObj.AddAttribute("test4", "test", "test"));
            NoThrows(() => xmlObj.Write("test", "test"));
            NoThrows(() => xmlObj.Write("test2", "test", "test"));
            NoThrows(() => xmlObj.Write("test3", "test", new string[] { "test1", "test2", "test3" }));
            NoThrows(() => xmlObj.Read("test"));
            NoThrows(() => xmlObj.Read("test2", "test"));
            NoThrows(() => xmlObj.Read("test3", "test", null));
            NoThrows(() => xmlObj.Read("test4"));
            NoThrows(() => xmlObj.ReopenFile());
            NoThrows(() => xmlObj.Write("test", "testnew"));
            NoThrows(() => xmlObj.Read("test"));
            NoThrows(() => xmlObj.Read("test2", "test"));
            NoThrows(() => xmlObj.Read("test3", "test", null));
            NoThrows(() => xmlObj.Delete("test"));
            Assert.ThrowsAny <ArgumentException>(() => xmlObj.Delete("test2", "test"));
            NoThrows(() => xmlObj.Save());
            File.Delete(
                $"{Environment.CurrentDirectory}{Path.DirectorySeparatorChar}test.xml");
            xmlObj = new XmlObject($"{Path.DirectorySeparatorChar}test.xml", testXml, true);
            xmlObj = new XmlObject($"{Path.DirectorySeparatorChar}test.xml", testXml, true);
            xmlObj = new XmlObject($"{Environment.CurrentDirectory}{Path.DirectorySeparatorChar}test.xml", testXml, true);
        }
コード例 #5
0
        public void Test_create_file_current_directory_Pass()
        {
            var testXmlFile = @"testCreate.xml";

            if (File.Exists($"{Environment.CurrentDirectory}{Path.DirectorySeparatorChar}" + testXmlFile))
            {
                File.Delete($"{Environment.CurrentDirectory}{Path.DirectorySeparatorChar}" + testXmlFile);
            }

            Assert.False(File.Exists(testXmlFile));
            var xmlObj = new XmlObject(testXmlFile, testXml, true);

            xmlObj.Save();
            Assert.True(File.Exists(testXmlFile));
        }
コード例 #6
0
        public void Test_create_file_remote_violation_Fail()
        {
            // test with a real directory that doesn't have write access
            var testXmlFile = @"C:\Windows\WinSxS\testCreate.xml";

            if (File.Exists(testXmlFile))
            {
                File.Delete(testXmlFile);
            }

            Assert.False(File.Exists(testXmlFile));
            var xmlObj = new XmlObject(testXmlFile, testXml);

            Assert.Throws <UnauthorizedAccessException>(() => xmlObj.Save());
            Assert.False(File.Exists(testXmlFile));
        }
コード例 #7
0
        public void Test_update_attribute_Fail()
        {
            var testXmlFile = @"testAddAttribute.xml";

            if (File.Exists($"{Environment.CurrentDirectory}{Path.DirectorySeparatorChar}" + testXmlFile))
            {
                File.Delete($"{Environment.CurrentDirectory}{Path.DirectorySeparatorChar}" + testXmlFile);
            }

            Assert.False(File.Exists(testXmlFile));
            var element           = "TestElement";
            var attribute         = "TestAttribute";
            var attributeValue    = "my cool value";
            var newAttributeValue = "my new cool value";
            var xmlObj            = new XmlObject(testXmlFile, testXml, true);

            xmlObj.AddAttribute(element, attribute, attributeValue);
            xmlObj.Save();
            Assert.Throws <Exception>(() => xmlObj.AddAttribute(element, attribute, newAttributeValue));
            File.Delete($"{Environment.CurrentDirectory}{Path.DirectorySeparatorChar}" + testXmlFile);
        }
コード例 #8
0
        public void Test_create_file_remote_directory_Pass()
        {
            // test with a real directory
            var testXmlFile = @"C:\Temp\testCreate.xml";

            if (File.Exists(testXmlFile))
            {
                File.Delete(testXmlFile);
            }

            if (!Directory.Exists(@"C:\Temp\"))
            {
                // create if this directory does not exist so this test pass.
                Directory.CreateDirectory(@"C:\Temp\");
            }

            Assert.False(File.Exists(testXmlFile));
            var xmlObj = new XmlObject(testXmlFile, testXml);

            xmlObj.Save();
            Assert.True(File.Exists(testXmlFile));
            File.Delete(testXmlFile);
            Directory.Delete(@"C:\Temp\");
        }