public void Do__With_Activity__Should_Return_New_Instance_Whose_History_Of_Done_Activities_Is_Extended_By_The_Result_Of_Doing_The_Specified_Activity_Without_Any_Activities_To_Redo()
        {
            var done = new[]
            {
                new ActivityStub(10, 0, 0),
                new ActivityStub(11, 0, 0),
            };

            var undone = new[]
            {
                new ActivityStub(20, 0, 0),
                new ActivityStub(21, 0, 0),
            };

            var target = History <ActivityStub> .Create(done, undone);

            var expectedDone = new[]
            {
                new ActivityStub(10, 0, 0),
                new ActivityStub(11, 0, 0),
                new ActivityStub(12, 1, 0),
            };

            var expectedUndone = Enumerable.Empty <ActivityStub>();

            var expected = History <ActivityStub> .Create(expectedDone, expectedUndone);

            var activity = new ActivityStub(12, 0, 0);

            var actual = target.Do(activity);

            Assert.AreEqual(expected, actual);
        }
        public void Op_Equality__With_Different_Done__Should_Return_False()
        {
            const bool expected = false;
            var        none     = new ActivityStub[0];
            var        done     = new[] { new ActivityStub(1) };
            var        left     = History <ActivityStub> .Create(done, none);

            var right = History <ActivityStub> .Create(none, none);

            var actual = left == right;

            Assert.AreEqual(expected, actual);
        }
        public void Op_Inequality__With_Different_Undone__Should_Return_True()
        {
            const bool expected = true;
            var        none     = new ActivityStub[0];
            var        undone   = new[] { new ActivityStub(1) };
            var        left     = History <ActivityStub> .Create(none, undone);

            var right = History <ActivityStub> .Create(none, none);

            var actual = left != right;

            Assert.AreEqual(expected, actual);
        }
        public void Equals_Object__With_Different_Undone__Should_Return_False()
        {
            const bool expected = false;
            var        none     = new ActivityStub[0];
            var        undone   = new[] { new ActivityStub(1) };
            var        target   = History <ActivityStub> .Create(none, undone);

            var other = History <ActivityStub> .Create(none, none);

            var actual = target.Equals((object)other);

            Assert.AreEqual(expected, actual);
        }
        public void Redo__Without_Any_Undone_Activities__Should_Return_Identical_Instance()
        {
            var done = new[]
            {
                new ActivityStub(10, 0, 0),
                new ActivityStub(11, 0, 0),
            };

            var undone = new ActivityStub[0];

            var target = History <ActivityStub> .Create(done, undone);

            var expected = History <ActivityStub> .Create(done, undone);

            var actual = target.Redo();

            Assert.AreEqual(expected, actual);
        }