예제 #1
0
        static object[] GetTestMethodArguments(ITestMethod testMethod, int attributeNumber, int rowNumber, IMessageSink diagnosticMessageSink)
        {
            try
            {
                IAttributeInfo dataAttribute =
                    testMethod.Method.GetCustomAttributes(typeof(DataAttribute))
                    .Where((x, i) => i == attributeNumber)
                    .FirstOrDefault();

                if (dataAttribute == null)
                {
                    return(null);
                }

                IAttributeInfo discovererAttribute =
                    dataAttribute.GetCustomAttributes(typeof(DataDiscovererAttribute)).First();

                IDataDiscoverer discoverer =
                    ExtensibilityPointFactory.GetDataDiscoverer(diagnosticMessageSink, discovererAttribute);

                return
                    (discoverer.GetData(dataAttribute, testMethod.Method)
                     .Where((x, i) => i == rowNumber)
                     .FirstOrDefault());
            }
            catch
            {
                return(null);
            }
        }
        static object[] GetTestMethodArguments(ITestMethod testMethod, int attributeNumber, string rowName, IMessageSink diagnosticMessageSink)
        {
            try
            {
                IAttributeInfo dataAttribute = testMethod.Method.GetCustomAttributes(typeof(DataAttribute)).Where((x, i) => i == attributeNumber).FirstOrDefault();
                if (dataAttribute == null)
                {
                    return(null);
                }

                IAttributeInfo  discovererAttribute = dataAttribute.GetCustomAttributes(typeof(DataDiscovererAttribute)).First();
                IDataDiscoverer discoverer          = ExtensibilityPointFactory.GetDataDiscoverer(diagnosticMessageSink, discovererAttribute);

                IEnumerable <object[]> data = discoverer.GetData(dataAttribute, testMethod.Method);

                if (data is IDictionary <string, object[]> )
                {
                    return(((IDictionary <string, object[]>)data)[rowName]);
                }

                return(data.Where(x => x[0].ToString() == rowName).FirstOrDefault());
            }
            catch
            {
                return(null);
            }
        }