public void EqualsWithEqualPayoffReturnsTrue()
        {
            // Arrange
            var cooperationStrategyResult = new CooperationStrategyResult { Payoff = CooperationChoicesPayoff.DefaultPayoffForDefectAndDefect };
            object equalCooperationStrategyResult = new CooperationStrategyResult { Payoff = CooperationChoicesPayoff.DefaultPayoffForDefectAndDefect };

            // Act
            var objectsAreEqual = cooperationStrategyResult.Equals(equalCooperationStrategyResult);

            // Assert
            Assert.True(objectsAreEqual);
        }
        public void EqualsWithEqualChoiceMadeReturnsTrue()
        {
            // Arrange
            var cooperationStrategyResult = new CooperationStrategyResult { ChoiceMade = CooperationChoice.Cooperate };
            object equalCooperationStrategyResult = new CooperationStrategyResult { ChoiceMade = CooperationChoice.Cooperate };

            // Act
            var objectsAreEqual = cooperationStrategyResult.Equals(equalCooperationStrategyResult);

            // Assert
            Assert.True(objectsAreEqual);
        }
        public void EqualsWithEqualObjectReturnsTrue()
        {
            // Arrange
            var cooperationStrategyResult = new CooperationStrategyResult();
            var equalCooperationStrategyResult = new CooperationStrategyResult();

            // Act
            var objectsAreEqual = cooperationStrategyResult.Equals((object)equalCooperationStrategyResult);

            // Assert
            Assert.True(objectsAreEqual);
        }
        public void EqualsWithEqualStrategyReturnsTrue()
        {
            // Arrange
            var strategy = new NaiveCooperationStrategy();
            var cooperationStrategyResult = new CooperationStrategyResult { Strategy = strategy };
            object equalCooperationStrategyResult = new CooperationStrategyResult { Strategy = strategy };

            // Act
            var objectsAreEqual = cooperationStrategyResult.Equals(equalCooperationStrategyResult);

            // Assert
            Assert.True(objectsAreEqual);
        }
        public void EqualsWithUnequalCooperationStrategyResultInstancesReturnsFalse()
        {
            // Arrange
            var cooperationStrategyResult = new CooperationStrategyResult { Strategy = new NaiveCooperationStrategy() };
            var unequalCooperationStrategyResult = new CooperationStrategyResult { Strategy = new NaiveCooperationStrategy() };

            // Act
            var objectsAreEqual = cooperationStrategyResult.Equals(unequalCooperationStrategyResult);

            // Assert
            Assert.False(objectsAreEqual);
        }
        public void EqualsWithUnequalChoiceMadeReturnsFalse()
        {
            // Arrange
            var cooperationStrategyResult = new CooperationStrategyResult { ChoiceMade = CooperationChoice.Cooperate };
            var unequalCooperationStrategyResult = new CooperationStrategyResult { ChoiceMade = CooperationChoice.Defect };

            // Act
            var objectsAreEqual = cooperationStrategyResult.Equals(unequalCooperationStrategyResult);

            // Assert
            Assert.False(objectsAreEqual);
        }
        public void EqualsWithUnchangedNewObjectInstancesReturnsTrue()
        {
            // Arrange
            var cooperationStrategyResult = new CooperationStrategyResult();
            var otherCooperationStrategyResult = new CooperationStrategyResult();

            // Act
            var objectsAreEqual = cooperationStrategyResult.Equals((object)otherCooperationStrategyResult);

            // Assert
            Assert.True(objectsAreEqual);
        }
        public void EqualsWithStrategyThatIsSameInstanceReturnsTrue()
        {
            // Arrange
            var cooperationStrategyResult = new CooperationStrategyResult();

            // Act
            var objectsAreEqual = cooperationStrategyResult.Equals(cooperationStrategyResult);

            // Assert
            Assert.True(objectsAreEqual);
        }
        public void EqualsWithNullObjectReturnsFalse()
        {
            // Arrange
            var cooperationStrategyResult = new CooperationStrategyResult();
            CooperationStrategyResult comparisonCooperationStrategyResult = null;

            // Act
            var objectsAreEqual = cooperationStrategyResult.Equals((object)comparisonCooperationStrategyResult);

            // Assert
            Assert.False(objectsAreEqual);
        }