Beispiel #1
0
        private IEnumerable <IOperationProvider> GetSetupOperationProviders(
            IEnumerable <Type> hierarchyTypes,
            IEnumerable <Type> behaviorTypes,
            object suite,
            Type suiteType)
        {
            var establishAndCleanupOperationProviders = hierarchyTypes.Select(x => GetEstablishOperationProviderOrNull(x, GetInstance(x, suite)));

            var becauseFields = GetFields <Because>(suiteType).ToList();

            Trace.Assert(becauseFields.Count <= 1, "Multiple 'Because' fields provided.");
            var becauseOperationProvider =
                becauseFields.Select(x => OperationProvider.Create <Operation>(OperationType.Action, "Because", CreateUnwrappingAction(x, suite)));

            IOperationProvider fieldsCopyingOperationProvider = null;
            var behaviorTypeList = behaviorTypes.ToList();

            if (behaviorTypeList.Count > 0)
            {
                fieldsCopyingOperationProvider = OperationProvider.Create <Operation>(
                    OperationType.Action,
                    "<CopyBehaviorFields>",
                    GetFieldsCopyingAction(suiteType, behaviorTypeList));
            }

            return(establishAndCleanupOperationProviders
                   .Concat(becauseOperationProvider)
                   .Concat(fieldsCopyingOperationProvider)
                   .WhereNotNull());
        }
Beispiel #2
0
        private void Add <T> (OperationType type, string text, Action action)
            where T : IOperationDescriptor
        {
            var operationProvider          = OperationProvider.Create <T>(type, text, action);
            var unsortedOperationProviders = _provider.OperationProviders.Concat(operationProvider);

            _provider.OperationProviders = _operationSorter.Sort(unsortedOperationProviders);
        }
Beispiel #3
0
        private void Add <T> (OperationType type, string text, Action <ITestContext> action)
            where T : IOperationDescriptor
        {
            var operationProvider          = OperationProvider.Create <T>(type, text, InjectContextAndGuardAction(action));
            var unsortedOperationProviders = _provider.OperationProviders.Concat(operationProvider);

            _provider.OperationProviders = _operationSorter.Sort(unsortedOperationProviders);
        }
Beispiel #4
0
        private TestProvider CreateTestProvider(IIdentity parentIdentity, object instance, FieldInfo actionField)
        {
            var text         = actionField.Name.Replace("_", " ");
            var testProvider = TestProvider.Create(parentIdentity.CreateChildIdentity(actionField.Name), text, ignoreReason: null);
            var action       = CreateUnwrappingAction(actionField, instance);
            var assertion    = OperationProvider.Create <Operation>(OperationType.Assertion, text, action);

            testProvider.OperationProviders = new[] { assertion };
            return(testProvider);
        }
        /// <summary>
        ///   Allows ancestor VMs to define property validators for this VM.
        /// </summary>
        public void EnableParentValidation <TValue>(Func <TDescriptor, IVMPropertyDescriptor <TValue> > propertySelector)
        {
            Inspiring.Mvvm.Check.NotNull(propertySelector, nameof(propertySelector));

            var op       = OperationProvider.GetOperation();
            var property = propertySelector((TDescriptor)op.Descriptor);

            op.EnablePropertyValidationSourceBehavior(property);
            op.EnableViewModelValidationSourceBehavior();
        }
Beispiel #6
0
        public void Replace <T> (Action <ITestContext, Action> replacingAction)
            where T : IOperationDescriptor
        {
            var newOperationProviders = _provider.OperationProviders.Where(x => typeof(T).IsAssignableFrom(x.Descriptor))
                                        .Select(x => OperationProvider.Create <T>(x.Type, x.Text, () => replacingAction(_context, x.Action), x.CleanupProvider));

            RemoveAll <T>();
            var unsortedOperationProviders = _provider.OperationProviders.Concat(newOperationProviders);

            _provider.OperationProviders = _operationSorter.Sort(unsortedOperationProviders);
        }
Beispiel #7
0
        public void AddSetupCleanup <TSetup, TCleanup> (string setupText, Action setup, string cleanupText, Action cleanup)
            where TSetup : IActionDescriptor
            where TCleanup : ICleanupDescriptor
        {
            // TODO: shared code with TestController
            IOperationProvider cleanupProvider = null;

            if (cleanup != null)
            {
                cleanupProvider = OperationProvider.Create <TCleanup>(OperationType.Action, cleanupText, cleanup);
            }
            var setupProvider = OperationProvider.Create <TSetup>(OperationType.Action, setupText, setup, cleanupProvider);
            var unsortedOperationProviders = cleanupProvider.Concat(_provider.ContextProviders).Concat(setupProvider).WhereNotNull();

            _provider.ContextProviders = _operationSorter.Sort(unsortedOperationProviders);
        }
Beispiel #8
0
        public WorkerTests()
        {
            var operationProvider = new OperationProvider(
                new Logger <OperationProvider>(),
                new IOperation[]
            {
                new DivisionOperation(new Logger <DivisionOperation>()),
                new SumOperator(new Logger <SumOperator>()),
                new MultiplicationOperation(new Logger <MultiplicationOperation>()),
                new MinusOperation(new Logger <MinusOperation>())
            });

            _worker = new Worker(
                new Logger <Worker>(),
                new Validator(
                    new Logger <Validator>(),
                    operationProvider),
                new BuilderExpression(new Logger <BuilderExpression>(), operationProvider));
        }
Beispiel #9
0
        public void AddSetupCleanup <TSetup, TCleanup> (
            string setupText,
            Action <ITestContext> setup,
            [CanBeNull] string cleanupText,
            [CanBeNull] Action <ITestContext> cleanup)
            where TSetup : IActionDescriptor
            where TCleanup : ICleanupDescriptor
        {
            // TODO: shared code with SuiteController
            IOperationProvider cleanupProvider = null;

            if (cleanup != null)
            {
                cleanupProvider = OperationProvider.Create <TCleanup>(OperationType.Action, cleanupText.NotNull(), InjectContextAndGuardAction(cleanup));
            }
            var setupProvider = OperationProvider.Create <TSetup>(OperationType.Action, setupText, InjectContextAndGuardAction(setup), cleanupProvider);
            var unsortedOperationProviders = cleanupProvider.Concat(_provider.OperationProviders).Concat(setupProvider).WhereNotNull();

            _provider.OperationProviders = _operationSorter.Sort(unsortedOperationProviders);
        }
Beispiel #10
0
        private IOperationProvider GetEstablishOperationProviderOrNull(Type type, object instance)
        {
            var setupField   = GetFields <Establish>(type).SingleOrDefault();
            var cleanupField = GetFields <Cleanup>(type).SingleOrDefault();

            if (setupField == null && cleanupField == null)
            {
                return(null);
            }

            IOperationProvider cleanupProvider = null;

            if (cleanupField != null)
            {
                var cleanupAction = CreateUnwrappingAction(cleanupField, instance);
                cleanupProvider = OperationProvider.Create <Operation>(OperationType.Action, "Cleanup " + type.Name, cleanupAction);
            }

            var setupAction = setupField != null?CreateUnwrappingAction(setupField, instance) : () => { };

            return(OperationProvider.Create <Operation>(OperationType.Action, "Establish " + type.Name, setupAction, cleanupProvider));
        }
        /// <summary>
        ///   Allows ancestor VMs to define view model-level validators for this VM.
        /// </summary>
        public void EnableParentViewModelValidation()
        {
            var op = OperationProvider.GetOperation();

            op.EnableViewModelValidationSourceBehavior();
        }