예제 #1
0
        public void TryInvert_Should_ReturnTrue_When_TimeSpan()
        {
            var value = TimeSpan.FromHours(3);

            Assert.True(CalculateUtilities.TryInvert(value, out var _result));
            Assert.Equal(value * -1, _result);
        }
예제 #2
0
        public void TryInvert_Should_ReturnTrue_When_Int()
        {
            const int value = 3;

            Assert.True(CalculateUtilities.TryInvert(value, out var _result));
            Assert.Equal(value * -1, _result);
        }
예제 #3
0
        public void TryInvert_Should_ReturnTrue_When_Double()
        {
            const double value = 3.2;

            Assert.True(CalculateUtilities.TryInvert(value, out var _result));
            Assert.True(CompareUtilities.EqualsWithinTolerance(value * -1, _result, 6));
        }
예제 #4
0
        public void TryAdd_Should_ReturnFalse_When_NotSubtractableValue()
        {
            const double baseValue = 12;
            var          value     = new StructStub();

            Assert.False(CalculateUtilities.TryAdd(baseValue, value, out _));
        }
예제 #5
0
        public void TryAdd_Should_ReturnFalse_When_NotSubtractableBase()
        {
            const int    baseValue = 12;
            const double value     = 1;

            Assert.False(CalculateUtilities.TryAdd(baseValue, value, out _));
        }
예제 #6
0
        public void TrySubtract_Should_ReturnFalse_When_NotSubtractableValue()
        {
            const int baseValue = 12;
            var       value     = TimeSpan.FromHours(1);

            Assert.False(CalculateUtilities.TrySubtract(baseValue, value, out _));
        }
예제 #7
0
        public void TrySubtract_Should_ReturnFalse_When_NotSubtractableBase()
        {
            const string baseValue = "Stefan";
            const int    value     = 12;

            Assert.False(CalculateUtilities.TrySubtract(baseValue, value, out _));
        }
예제 #8
0
        public void TryAdd_Should_ReturnTrue()
        {
            var baseValue = new DateTime(2018, 1, 1, 12, 30, 45).ToLocalTime();
            var value     = TimeSpan.FromDays(1);

            Assert.True(CalculateUtilities.TryAdd(baseValue, value, out var _result));
            Assert.Equal(new DateTime(2018, 1, 2, 12, 30, 45).ToLocalTime(), _result);
        }
예제 #9
0
        public void TrySubtract_Should_ReturnTrue()
        {
            const double baseValue = 12;
            const int    value     = 1;

            Assert.True(CalculateUtilities.TrySubtract(baseValue, value, out var _result));
            Assert.Equal(11, _result);
        }
        /// <summary>
        /// Initializes an instance of <see cref="PropertyMutation"/>
        /// </summary>
        /// <param name="value"></param>
        /// <param name="propertySelector"></param>
        /// <exception cref="ArgumentException">Throws when <see cref="TValue"/> not invertable.</exception>
        public PropertyMutation(
            TValue value,
            Expression <Func <T, TValue> > propertySelector)
        {
            PropertySelector = propertySelector;
            Value            = value;

            if (!CalculateUtilities.TryInvert(value, out var _invertValue))
            {
                throw new ArgumentException($"{nameof(value)} is not invertable.", nameof(value));
            }

            _valueAction = propertySelector.ToAddAction(value);

            _revertValueAction = propertySelector.ToAddAction(_invertValue);
        }
예제 #11
0
        public void TryInvert_Should_ReturnFalse_When_String()
        {
            const string value = "String";

            Assert.False(CalculateUtilities.TryInvert(value, out _));
        }