public void op_Act_whenSourceMissing()
        {
            using (var temp = new TempDirectory())
            {
                var source      = temp.Info.ToFile("from.txt");
                var destination = temp.Info.ToFile("to.txt");

                var obj = new FileMoveCommand(source, destination);

                Assert.Throws <FileNotFoundException>(() => obj.Act());
            }
        }
        public void op_Act_whenDestinationAlreadyExists()
        {
            using (var temp = new TempDirectory())
            {
                var source = temp.Info.ToFile("from.txt");
                source.CreateNew();
                var destination = temp.Info.ToFile("to.txt");
                destination.CreateNew();

                var obj = new FileMoveCommand(source, destination);

                Assert.Throws <IOException>(() => obj.Act());
            }
        }
        public void op_Revert_whenUnidirectional()
        {
            using (var temp = new TempDirectory())
            {
                var source = temp.Info.ToFile("from.txt");
                source.CreateNew("example");
                var destination = temp.Info.ToFile("to.txt");

                var obj = new FileMoveCommand(source, destination, true);

                Assert.True(obj.Act());
                Assert.False(obj.Undo);

                Assert.True(obj.Revert());
                Assert.Equal("example", destination.ReadToEnd());
            }
        }
        public void op_Revert()
        {
            using (var temp = new TempDirectory())
            {
                var source = temp.Info.ToFile("from.txt");
                source.CreateNew("example");
                var destination = temp.Info.ToFile("to.txt");

                var obj = new FileMoveCommand(source, destination);

                Assert.True(obj.Act());
                source.Refresh();
                Assert.False(source.Exists);
                Assert.True(destination.Exists);

                Assert.True(obj.Revert());
                source.Refresh();
                Assert.True(source.Exists);
                destination.Refresh();
                Assert.False(destination.Exists);
            }
        }
        public void op_Revert_whenUnidirectional()
        {
            using (var temp = new TempDirectory())
            {
                var source = temp.Info.ToFile("from.txt");
                source.CreateNew("example");
                var destination = temp.Info.ToFile("to.txt");

                var obj = new FileMoveCommand(source, destination, true);

                Assert.True(obj.Act());
                Assert.False(obj.Undo);

                Assert.True(obj.Revert());
                Assert.Equal("example", destination.ReadToEnd());
            }
        }
        public void op_Revert()
        {
            using (var temp = new TempDirectory())
            {
                var source = temp.Info.ToFile("from.txt");
                source.CreateNew("example");
                var destination = temp.Info.ToFile("to.txt");

                var obj = new FileMoveCommand(source, destination);

                Assert.True(obj.Act());
                source.Refresh();
                Assert.False(source.Exists);
                Assert.True(destination.Exists);

                Assert.True(obj.Revert());
                source.Refresh();
                Assert.True(source.Exists);
                destination.Refresh();
                Assert.False(destination.Exists);
            }
        }
        public void op_Act_whenSourceMissing()
        {
            using (var temp = new TempDirectory())
            {
                var source = temp.Info.ToFile("from.txt");
                var destination = temp.Info.ToFile("to.txt");

                var obj = new FileMoveCommand(source, destination);

                Assert.Throws<FileNotFoundException>(() => obj.Act());
            }
        }
        public void op_Act_whenDestinationAlreadyExists()
        {
            using (var temp = new TempDirectory())
            {
                var source = temp.Info.ToFile("from.txt");
                source.CreateNew();
                var destination = temp.Info.ToFile("to.txt");
                destination.CreateNew();

                var obj = new FileMoveCommand(source, destination);

                Assert.Throws<IOException>(() => obj.Act());
            }
        }