Пример #1
0
        public void TestCopy()
        {
            // Preparation
            DirectoryInfo to     = new DirectoryInfo(Path.Combine(GetPath(), "CopyTo"));
            FileInfo      toText = new FileInfo(Path.Combine(to.FullName, "text"));

            if (to.Exists)
            {
                to.Delete(true);
            }

            DirectoryInfo from     = new DirectoryInfo(Path.Combine(GetPath(), "CopyFrom"));
            FileInfo      fromText = new FileInfo(Path.Combine(from.FullName, "text"));

            from.Create();
            File.WriteAllText(fromText.FullName, "test");

            Action refreshState = () =>
            {
                from.Refresh();
                fromText.Refresh();
                to.Refresh();
                toText.Refresh();
            };

            refreshState();

            try
            {
                Assert.IsTrue(from.Exists);
                Assert.IsTrue(fromText.Exists);
                Assert.AreEqual("test", File.ReadAllText(fromText.FullName));
                Assert.IsFalse(to.Exists);
                Assert.IsFalse(toText.Exists);

                var storage = new DirectoryStorage(GetDirectory());
                storage.Copy("CopyTo", from);

                refreshState();
                Assert.IsTrue(from.Exists);
                Assert.IsTrue(fromText.Exists);
                Assert.AreEqual("test", File.ReadAllText(fromText.FullName));
                Assert.IsTrue(to.Exists);
                Assert.IsTrue(toText.Exists);
                Assert.AreEqual("test", File.ReadAllText(toText.FullName));

                File.WriteAllText(fromText.FullName, "test2");
                storage.Copy("CopyTo", from);

                refreshState();
                Assert.IsTrue(from.Exists);
                Assert.IsTrue(fromText.Exists);
                Assert.AreEqual("test2", File.ReadAllText(fromText.FullName));
                Assert.IsTrue(to.Exists);
                Assert.IsTrue(toText.Exists);
                Assert.AreEqual("test2", File.ReadAllText(toText.FullName));
            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                to.Refresh();
                from.Refresh();
                if (to.Exists)
                {
                    to.Delete(true);
                }
                if (from.Exists)
                {
                    from.Delete(true);
                }
            }
        }