예제 #1
0
        static TestHost ResolveParameter(
            ReflectionTestFixtureBuilder fixture, IMemberInfo member)
        {
            if (typeof(ITestInstance).GetTypeInfo().IsAssignableFrom(member.Type))
            {
                var hostAttr = member.GetCustomAttribute <TestHostAttribute> ();
                if (hostAttr == null)
                {
                    hostAttr = member.Type.GetCustomAttribute <TestHostAttribute> ();
                }
                if (hostAttr == null)
                {
                    throw new InternalErrorException();
                }

                return(CreateCustomHost(fixture.Type, member, hostAttr));
            }

            var paramAttrs = member.GetCustomAttributes <TestParameterAttribute> ().ToArray();

            if (paramAttrs.Length == 1)
            {
                return(CreateParameterAttributeHost(fixture.Type, member, paramAttrs[0]));
            }
            else if (paramAttrs.Length > 1)
            {
                throw new InternalErrorException();
            }

            var typeAttr = GetCustomAttributeForType <TestParameterAttribute> (member.Type);

            if (typeAttr != null)
            {
                return(CreateParameterAttributeHost(fixture.Type, member, typeAttr));
            }

            if (member.Type.AsType().Equals(typeof(bool)))
            {
                return(CreateBoolean(member));
            }

            if (member.Type.IsEnum)
            {
                return(CreateEnum(member));
            }

            throw new InternalErrorException();
        }