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); } } }