public void TryGetDefaultValue_ReturnsFalseIfNoDefaultValue()
        {
            // Arrange
            ParameterInfo pInfo = typeof(MyController).GetMethod("DefaultValues").GetParameters()[0]; // noDefaultValue

            // Act
            object defaultValue;
            bool   retVal = ParameterInfoUtil.TryGetDefaultValue(pInfo, out defaultValue);

            // Assert
            Assert.False(retVal);
            Assert.Equal(default(object), defaultValue);
        }
        public void TryGetDefaultValue_SecondChecksDefaultValueAttribute()
        {
            // Arrange
            ParameterInfo pInfo = typeof(MyController).GetMethod("DefaultValues").GetParameters()[1]; // hasDefaultValue

            // Act
            object defaultValue;
            bool   retVal = ParameterInfoUtil.TryGetDefaultValue(pInfo, out defaultValue);

            // Assert
            Assert.True(retVal);
            Assert.Equal("someValue", defaultValue);
        }
Exemple #3
0
        /// <summary>
        /// Determine if the parameter in the collection with the specified index is a 'params' parameter.
        /// </summary>
        public static bool ParameterIsParams(ICollection parameters, int index)
        {
            bool isParams;

            if (parameters is List <ParameterDecl> )
            {
                isParams = (((List <ParameterDecl>)parameters)[index].IsParams);
            }
            else //if (parameters is ParameterInfo[])
            {
                isParams = ParameterInfoUtil.IsParams(((ParameterInfo[])parameters)[index]);
            }
            return(isParams);
        }
        private static void ParameterTestHelper <TParam>(TParam expectedValue, string paramName, string actionMethodName)
        {
            ParameterInfo pInfo = typeof(MyController).GetMethod(actionMethodName).GetParameters().Single(p => p.Name == paramName);
            object        returnValueObject;
            bool          result = ParameterInfoUtil.TryGetDefaultValue(pInfo, out returnValueObject);

            Assert.True(result);
            if (expectedValue != null)
            {
                Assert.IsType <TParam>(returnValueObject);
            }
            TParam returnValue = (TParam)returnValueObject;

            Assert.Equal <TParam>(expectedValue, returnValue);
        }
Exemple #5
0
        /// <summary>
        /// Get the <see cref="ParameterModifier"/> for the specified <see cref="ParameterInfo"/>.
        /// </summary>
        public static ParameterModifier GetParameterModifier(ParameterInfo parameterInfo)
        {
            ParameterModifier modifier = ParameterModifier.None;

            if (ParameterInfoUtil.IsParams(parameterInfo))
            {
                modifier = ParameterModifier.Params;
            }
            else if (ParameterInfoUtil.IsRef(parameterInfo))
            {
                modifier = ParameterModifier.Ref;
            }
            else if (ParameterInfoUtil.IsOut(parameterInfo))
            {
                modifier = ParameterModifier.Out;
            }
            return(modifier);
        }
        public void TryGetDefaultValue_FirstChecksDefaultValue()
        {
            // Arrange
            Mock <ParameterInfo> mockPInfo = new Mock <ParameterInfo>()
            {
                DefaultValue = DefaultValue.Mock
            };

            mockPInfo.Setup(p => p.DefaultValue).Returns(42);
            mockPInfo.Setup(p => p.Name).Returns("someParameter");

            // Act
            object defaultValue;
            bool   retVal = ParameterInfoUtil.TryGetDefaultValue(mockPInfo.Object, out defaultValue);

            // Assert
            Assert.True(retVal);
            Assert.Equal(42, defaultValue);
        }
        public void TryGetDefaultValue_RespectsNullDefaultValue()
        {
            // Arrange
            Mock <ParameterInfo> mockPInfo = new Mock <ParameterInfo>()
            {
                DefaultValue = DefaultValue.Mock
            };

            mockPInfo.Setup(p => p.DefaultValue).Returns(null);
            mockPInfo.Setup(p => p.Name).Returns("someParameter");
            mockPInfo
            .Setup(p => p.GetCustomAttributes(typeof(DefaultValueAttribute[]), false))
            .Returns(new DefaultValueAttribute[] { new DefaultValueAttribute(42) });

            // Act
            object defaultValue;
            bool   retVal = ParameterInfoUtil.TryGetDefaultValue(mockPInfo.Object, out defaultValue);

            // Assert
            Assert.True(retVal);
            Assert.Null(defaultValue);
        }
Exemple #8
0
        public void TryGetDefaultValue_RespectsNullRawDefaultValue()
        {
            // Arrange
            Mock <ParameterInfo> mockPInfo = new Mock <ParameterInfo>()
            {
                DefaultValue = DefaultValue.Mock
            };

            mockPInfo.Expect(p => p.RawDefaultValue).Returns(null);
            mockPInfo.Expect(p => p.Name).Returns("someParameter");
            mockPInfo
            .Expect(p => p.GetCustomAttributes(typeof(DefaultValueAttribute[]), false))
            .Returns(new DefaultValueAttribute[] { new DefaultValueAttribute(42) });

            // Act
            object defaultValue;
            bool   retVal = ParameterInfoUtil.TryGetDefaultValue(mockPInfo.Object, out defaultValue);

            // Assert
            Assert.IsTrue(retVal);
            Assert.IsNull(defaultValue, "Shouldn't have looked at [DefaultValue] attribute.");
        }