public void UnExecuteError()
        {
            var configuration = new CommandConfiguration<FakeCommand>();
            var success = false;
            var progressCalled = false;
            var coreExecuted = false;
            var coreUnExecuted = false;
            var failExecuted = false;

            var command = new FakeCommand
            {
                CoreExecuted = () => coreExecuted = true,
                CoreUnExecuted = () => { throw new NotImplementedException(); }
            };

            configuration.ConstructUsing(() => command);
            configuration.OnSuccess((s) => success = true);
            configuration.OnProgress((p) => progressCalled = true);
            configuration.OnFailure((f) => failExecuted = true);

            configuration.Execute();
            configuration.Unexecute();

            Assert.True(success);
            Assert.False(coreUnExecuted);
            Assert.False(progressCalled);
            Assert.True(coreExecuted);
            Assert.True(failExecuted);
        }
        public void UnExecutePositive()
        {
            var configuration = new CommandConfiguration<FakeCommand>();
            var success = false;
            var progressCalled = false;
            var coreExecuted = false;
            var coreUnExecuted = false;

            var command = new FakeCommand
            {
                CoreExecuted = () => coreExecuted = true,
                CoreUnExecuted = () => coreUnExecuted = true
            };

            configuration.ConstructUsing(() => command);
            configuration.OnSuccess((s) => success = true);
            configuration.OnProgress((p) => progressCalled = true);

            configuration.Execute();
            configuration.Unexecute();

            Assert.True(success);
            Assert.True(coreUnExecuted);
            Assert.False(progressCalled);
            Assert.True(coreExecuted);
        }