Example #1
0
		/// <summary>
		/// Populates the <see cref="RunInvokerTree"/> invoker graph
		/// with <see cref="IRunInvoker"/> generated by the run.
		/// </summary>
		/// <param name="tree">Invoker tree</param>
		/// <param name="parent">parent vertex</param>
		/// <param name="t">class type that is marked by the run</param>
		/// <remarks>
		/// </remarks>
		public void Reflect(RunInvokerTree tree, RunInvokerVertex parent, Type t)
		{
			foreach(MethodInfo mi in 
				TypeHelper.GetAttributedMethods(t,typeof(IndexerProviderAttribute)))
			{
				// get attribute
				IndexerProviderAttribute attr = 
					(IndexerProviderAttribute)TypeHelper.GetFirstCustomAttribute(mi,typeof(IndexerProviderAttribute));
				
				// add indexer provider
				IRunInvoker invoker = 
					new ArgumentFeederRunInvoker(this,mi);
				RunInvokerVertex child = 
						tree.AddChild(parent,invoker);				
				
				// add tester
				CustomRun testerRun = new CustomRun(
					this.testerType,
					typeof(TestAttribute),
					true,
					attr
					);
				testerRun.Reflect(tree,child,t);
			}
		}
        public CollectionIndexingTester(IndexerProviderAttribute attribute)
        {
            if (attribute == null)
            {
                throw new ArgumentNullException("attribute");
            }

            this.attribute = attribute;
            this.indexer   = TypeHelper.GetIndexer(
                attribute.ProviderType,
                attribute.IndexType
                );
        }