Пример #1
0
 public ISpecializedSuiteController<TSubject, TResult> CreateSpecializedSuiteController<TSubject, TResult> (
     SuiteProvider provider,
     ActionContainer<TSubject, TResult> actionContainer,
     Action<ITestController> testControllerConfigurator)
 {
   return new SpecializedSuiteController<TSubject, TResult>(provider, actionContainer, testControllerConfigurator, this, _operationSorter);
 }
Пример #2
0
        public ISuiteProvider Load(IIntent assemblyIntent)
        {
            var assembly   = Assembly.LoadFrom(assemblyIntent.Identity.Absolute);
            var provider   = SuiteProvider.Create(assemblyIntent.Identity, assembly.GetName().Name, ignoreReason: null);
            var controller = _suiteControllerFactory.Create(provider);

            var explorationData = _assemblyExplorer.Explore(assembly);

            var suiteProviders = LoadSuiteProviders(
                assemblyIntent,
                explorationData.TestLoaderFactories.ToList(),
                explorationData.PotentialSuiteTypes.ToList(),
                explorationData.AssemblySetupTypes);

            provider.SuiteProviders = suiteProviders;
            explorationData.AssemblySetupTypes.Values
            .Where(x => x.IsValueCreated)
            .Select(x => x.Value)
            .ForEach(
                x => controller.AddSetupCleanup <SetupCommon, CleanupCommon>(
                    x.GetType().Name + ".Setup",
                    x.Setup,
                    x.GetType().Name + ".Cleanup",
                    x.Cleanup));

            return(provider);
        }
Пример #3
0
        public ISuiteProvider Load(IIntent assemblyIntent)
        {
            var assembly   = Assembly.LoadFrom(assemblyIntent.Identity.Absolute);
            var provider   = SuiteProvider.Create(assemblyIntent.Identity, assembly.GetName().Name, ignored: false);
            var controller = _suiteControllerFactory.Create(provider);

            var explorationData = _assemblyExplorer.Explore(assembly);

            var lazyBootstraps = explorationData.BootstrapTypes.Select(x => new TypedLazy <ILazyBootstrap>(x)).ToList();
            var suiteTypes     = Filter(assemblyIntent, explorationData.SuiteTypes);

            provider.SuiteProviders = suiteTypes.Select(x => Load(x, explorationData.TypeLoaders, lazyBootstraps, provider.Identity));
            lazyBootstraps
            .Where(x => x.IsValueCreated)
            .Select(x => x.Value)
            .ForEach(
                x =>
                controller.AddSetupCleanup <SetupCommon, CleanupCommon>(
                    x.GetType().Name + ".Setup",
                    x.Setup,
                    x.GetType().Name + ".Cleanup",
                    x.Cleanup));

            return(provider);
        }
Пример #4
0
 public ITestController<TSubject, TResult, TVars, TSequence> CreateTestController<TSubject, TResult, TVars, TSequence> (
     SuiteProvider suiteProvider,
     TestProvider provider,
     TestContext<TSubject, TResult, TVars, TSequence> context)
 {
   return new TestController<TSubject, TResult, TVars, TSequence>(suiteProvider, provider, context, _operationSorter, this);
 }
Пример #5
0
        protected SuiteProvider CreateSuiteProvider(string relativeId, string text, bool ignore)
        {
            var identity = _provider.Identity.CreateChildIdentity(relativeId);
            var provider = SuiteProvider.Create(identity, text, ignore);

            EnsureUniqueness(provider, _provider.TestProviders);

            _provider.SuiteProviders = _provider.SuiteProviders.Concat(provider);
            return(provider);
        }
Пример #6
0
        protected override void Initialize(Type suiteType, object suite, SuiteProvider provider)
        {
            var closedSpeckType = suiteType.GetClosedTypeOf(typeof(ISuite <>)).NotNull();
            var subjectType     = closedSpeckType.GetGenericArguments().Single();

            var suiteController = _controllerFactory.CreateClassSuiteController(subjectType, provider);

            suite.SetMemberValue("_classSuiteController", suiteController);
            suite.SetMemberValue("_subjectFactory", _subjectFactory);
        }
Пример #7
0
 public TestController(
     SuiteProvider suiteProvider,
     TestProvider provider,
     TestContext <TSubject, TResult, TVars, TSequence> context,
     IOperationSorter operationSorter,
     IControllerFactory controllerFactory)
     : base(provider, context, operationSorter)
 {
     _suiteProvider     = suiteProvider;
     _provider          = provider;
     _context           = context;
     _controllerFactory = controllerFactory;
 }
 public SpecializedSuiteController(
     SuiteProvider provider,
     ActionContainer <TSubject, TResult> actionContainer,
     Action <ITestController> testControllerConfigurator,
     IControllerFactory controllerFactory,
     IOperationSorter operationSorter)
     : base(provider, operationSorter)
 {
     _provider                   = provider;
     _actionContainer            = actionContainer;
     _testControllerConfigurator = testControllerConfigurator;
     _controllerFactory          = controllerFactory;
 }
Пример #9
0
        protected override void Initialize(Type suiteType, object suite, SuiteProvider provider)
        {
            var hierarchyTypes = HierarchyLoader.GetExecutionHierarchy(suiteType).ToList();
            var behaviorTypes  = suiteType.Descendants(x => GetBehaviorTypes(x)).ToList();

            var setupOperationProviders = GetSetupOperationProviders(hierarchyTypes, behaviorTypes, suite, suiteType);

            var assertionFields = GetFields <It>(suiteType).Concat(behaviorTypes.SelectMany(GetFields <It>));
            var testProviders   = assertionFields.Select(x => CreateTestProvider(provider.Identity, GetInstance(x.DeclaringType.NotNull(), suite), x));

            provider.ContextProviders = setupOperationProviders;
            provider.TestProviders    = testProviders;
        }
Пример #10
0
 public ClassSuiteController(
     SuiteProvider provider,
     ISuite <TSubject> suite,
     IEnumerable <ITestExtension> testExtensions,
     IControllerFactory controllerFactory,
     IOperationSorter operationSorter)
     : base(provider, suite, testExtensions, operationSorter)
 {
     _provider               = provider;
     _suite                  = suite;
     _controllerFactory      = controllerFactory;
     _testSetupCleanupTuples = new List <Tuple <Action <ITestContext <TSubject> >, Action <ITestContext <TSubject> > > >();
 }
Пример #11
0
        private SuiteProvider CreateSuiteProvider(Type suiteType, IIdentity assemblyIdentity)
        {
            var text = GetText(suiteType);

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

            var identity     = assemblyIdentity.CreateChildIdentity(suiteType.FullName);
            var ignoreReason = suiteType.GetAttribute <IgnoreAttribute>().GetValueOrDefault(x => x.Reason);
            var resources    = suiteType.GetAttribute <ResourcesAttribute>().GetValueOrDefault(x => x.Resources);

            return(SuiteProvider.Create(identity, text, ignoreReason, resources));
        }
Пример #12
0
        public ITestController <TSubject, TResult, Dummy, TNewSequence> SetSequences <TNewSequence> (IDictionary <string, TNewSequence> sequences)
        {
            var mainContext     = (MainTestContext <TSubject, TResult, Dummy, TSequence>)(object) _context;
            var configurator    = mainContext.Configurator;
            var actionContainer = mainContext.ActionContainer;

            var combinationSuiteProvider = SuiteProvider.Create(_provider.Identity, _provider.Text, _provider.IgnoreReason);

            _suiteProvider.SuiteProviders = _suiteProvider.SuiteProviders.Concat(new[] { combinationSuiteProvider });
            _suiteProvider.TestProviders  = _suiteProvider.TestProviders.Except(new[] { _provider });

            var testControllers = sequences.Select(
                x => CreateCombinationTestController(combinationSuiteProvider, configurator, actionContainer, x.Key, x.Value));

            return(_controllerFactory.CreateCompositeTestController(testControllers));
        }
Пример #13
0
    public ITestController<TSubject, TResult, TVars, TSequence> CreateMainTestController<TSubject, TResult, TVars, TSequence> (
        SuiteProvider suiteProvider,
        TestProvider provider,
        Action<ITestController> configurator,
        ActionContainer<TSubject, TResult> actionContainer,
        TSequence sequence)
    {
      var context = new MainTestContext<TSubject, TResult, TVars, TSequence>(actionContainer, configurator) { Sequence = sequence };
      var controller = CreateTestController(suiteProvider, provider, context);

      var wrappedAction = actionContainer.VoidAction != null
          ? GuardAction(context, actionContainer.VoidAction)
          : GuardAction(context, x => context.Result = actionContainer.ResultAction.AssertNotNull()(x));
      controller.AddAction<Act>(actionContainer.Text, x => wrappedAction());
      configurator(controller);

      return controller;
    }
Пример #14
0
        public ISuiteProvider Load(Type suiteType, ICollection <TypedLazy <ILazyBootstrap> > assemblySetups, IIdentity assemblyIdentity)
        {
            var uninitializedSuite = (TSuiteType)FormatterServices.GetUninitializedObject(suiteType);

            var subjectAttribute       = suiteType.GetAttributeData <SubjectAttributeBase>();
            var displayFormatAttribute = subjectAttribute.Constructor.GetAttributeData <DisplayFormatAttribute>();

            var text     = _introspectionPresenter.Present(displayFormatAttribute.ToCommon(), subjectAttribute.ToCommon());
            var identity = assemblyIdentity.CreateChildIdentity(suiteType.FullName);
            var provider = SuiteProvider.Create(identity, text, ignored: false);

            InitializeAssemblySetupFields(uninitializedSuite, assemblySetups.ToList());
            InitializeTypeSpecificFields(uninitializedSuite, provider);

            InvokeConstructor(uninitializedSuite);

            return(provider);
        }
Пример #15
0
        private ITestController <TSubject, TResult, Dummy, TNewSequence> CreateCombinationTestController <TNewSequence> (
            SuiteProvider suiteProvider,
            Action <ITestController> configurator,
            ActionContainer <TSubject, TResult> actionContainer,
            string text,
            TNewSequence sequence)
        {
            var identity     = _provider.Identity.CreateChildIdentity(text);
            var testProvider = TestProvider.Create(identity, text, _provider.IgnoreReason, filePath: _provider.FilePath, lineNumber: _provider.LineNumber);

            suiteProvider.TestProviders = suiteProvider.TestProviders.Concat(new[] { testProvider });
            return(_controllerFactory.CreateMainTestController <TSubject, TResult, Dummy, TNewSequence>(
                       suiteProvider,
                       testProvider,
                       configurator,
                       actionContainer,
                       sequence));
        }
Пример #16
0
        public ISuiteProvider Load(Type suiteType, IDictionary <Type, Lazy <IAssemblySetup> > assemblySetups, IIdentity assemblyIdentity)
        {
            var uninitializedSuite = FormatterServices.GetUninitializedObject(suiteType);

            var subjectAttribute       = suiteType.GetAttributeData <SuiteAttributeBase>();
            var displayFormatAttribute = subjectAttribute.Constructor.GetAttributeData <DisplayFormatAttribute>();

            var text      = _introspectionPresenter.Present(displayFormatAttribute.ToCommon(), suiteType.ToCommon(), subjectAttribute.ToCommon());
            var identity  = assemblyIdentity.CreateChildIdentity(suiteType.FullName);
            var resources = suiteType.GetAttribute <ResourcesAttribute>().GetValueOrDefault(x => x.Resources, () => new string[0]);
            var provider  = SuiteProvider.Create(identity, text, ignored: false, resources: resources);

            InitializeAssemblySetupFields(uninitializedSuite, assemblySetups);
            InitializeTypeSpecificFields(uninitializedSuite, provider);

            InvokeConstructor(uninitializedSuite);

            return(provider);
        }
Пример #17
0
 public ISuiteController Create(SuiteProvider suiteProvider)
 {
     return(new SuiteController(suiteProvider, _operationSorter));
 }
Пример #18
0
 public ClassSuiteController(SuiteProvider provider, object suite, IEnumerable <ITestExtension> testExtensions, IOperationSorter operationSorter)
     : base(provider, operationSorter)
 {
     _suite          = suite;
     _testExtensions = testExtensions;
 }
Пример #19
0
 public SuiteController(SuiteProvider provider, IOperationSorter operationSorter)
 {
     _provider        = provider;
     _operationSorter = operationSorter;
 }
Пример #20
0
 public ISuiteController CreateClassSuiteController (object suite, Type subjectType, SuiteProvider provider)
 {
   var suiteControllerType = typeof (ClassSuiteController<>).MakeGenericType(subjectType);
   return suiteControllerType.CreateInstance<ISuiteController>(provider, suite, _testExtensions, this, _operationSorter);
 }
Пример #21
0
 protected abstract void Initialize(Type suiteType, object suite, SuiteProvider provider);
Пример #22
0
 protected abstract void InitializeTypeSpecificFields(TSuiteType suite, SuiteProvider provider);