예제 #1
0
        public TArranged visitBeforeAll <TArranged>(BeforeAllElement <TArranged> element, TestPosition position)
        {
            CheckNotAlreadyPastDiscovery(element);

            TArranged result = default(TArranged);

            if (position.IsOnPathTo(_targetPosition))
            {
                _executingPastDiscovery = element;

                try
                {
                    try
                    {
                        result = element.Action();
                    }
                    catch (Exception e)
                    {
                        ReportError(position, e);
                    }

                    _setupResultAccumulator.AddSetupResult(position, result);
                }
                finally
                {
                    _executingPastDiscovery = null;
                }
            }

            return(result);
        }
예제 #2
0
 private void CheckNotAlreadyPastDiscovery(SpecificationElement origin)
 {
     if (_executingPastDiscovery != null)
     {
         throw new Exception("Attempted to call " + origin + " within " + _executingPastDiscovery + ".");
     }
 }
예제 #3
0
 public virtual void visitAfterEach(SpecificationElement element, Action action, TestPosition position)
 {
     _runContext.AddTeardownAction(delegate()
     {
         _runContext.whileInState(new CleanupState(_runContext, element), action);
     });
 }
예제 #4
0
 public GlobalSetupVisitor(LolMutex runningLock)
 {
     _runningLock            = runningLock;
     _executingPastDiscovery = null;
     _executingCleanup       = null;
     _errorAccumulator       = new ErrorAccumulator();
     _setupResultAccumulator = new GlobalSetupResultAccumulator();
     _traceTracker           = new TraceTracker();
 }
        public void SetsCorrectIdForSpecification()
        {
            var context = Substitute.For <IContextElement>();

            context.TypeName.Returns("Namespace.ContextType");

            var specification = new SpecificationElement(context, "should_be");

            Assert.That(specification.Id, Is.EqualTo("Namespace.ContextType.should_be"));
        }
예제 #6
0
        protected T RunSpecificationElement <T>(SpecificationElement specificationElement)
        {
            T result = default(T);

            var position     = CurrentPosition;
            var nextPosition = CurrentPosition.GetNextSiblingPosition();

            CurrentPosition = CurrentPosition.GetFirstChildPosition();
            result          = (T)specificationElement.Run(Visitor, position);
            CurrentPosition = nextPosition;

            return(result);
        }
예제 #7
0
        public void visitAfterAll(AfterAllElement element, TestPosition position)
        {
            CheckNotAlreadyPastDiscovery(element);

            if (position.IsOnPathTo(_targetPosition))
            {
                _setupResultAccumulator.AddCleanupAction(position, delegate {
                    _executingCleanup = element;
                    element.Action();
                    _executingCleanup = null;
                });
            }
        }
        public void SetsCorrectIdForBehaviorSpecification()
        {
            var context = Substitute.For <IContextElement>();

            context.TypeName.Returns("Namespace.ContextType");

            var behavior = Substitute.For <IBehaviorElement>();

            behavior.FieldName.Returns("behaves_like");

            var specification = new SpecificationElement(context, "should_be", null, behavior);

            Assert.That(specification.Id, Is.EqualTo("Namespace.ContextType.behaves_like.should_be"));
        }
        public async Task AddsSingleContext()
        {
            var context = new ContextElement("Namespace.ContextType", "subject", null);

            var specification1 = new SpecificationElement(context, "should_be");
            var specification2 = new SpecificationElement(context, "should_not_be");

            var sink = new MspecDiscoverySink(CancellationToken.None);

            sink.OnSpecification(specification1);
            sink.OnSpecification(specification2);
            sink.OnDiscoveryCompleted();

            var results = await sink.Elements;

            Assert.That(results.Length, Is.EqualTo(3));
            CollectionAssert.Contains(results, context);
            CollectionAssert.Contains(results, specification1);
            CollectionAssert.Contains(results, specification2);
        }
예제 #10
0
 public void visitAfterEach(SpecificationElement element, Action action, TestPosition position)
 {
     _runContext.State.visitAfterEach(element, action, position);
 }
예제 #11
0
 public override void visitAfterEach(SpecificationElement element, Action action, TestPosition position)
 {
     throw DontException(element);
 }
예제 #12
0
 public ArrangeState(NJasmineTestRunContext runContext, SpecificationElement specElement)
     : base(runContext)
 {
     SpecElement = specElement;
 }
예제 #13
0
 public void visitAfterEach(SpecificationElement element, Action action, TestPosition position)
 {
     CheckNotAlreadyPastDiscovery(element);
 }
예제 #14
0
 public InvalidOperationException DontException(SpecificationElement innerSpecElement)
 {
     return(new InvalidOperationException("Called " + innerSpecElement + "() within " + SpecElement + "()."));
 }
예제 #15
0
 public void visitAfterEach(SpecificationElement element, Action action, TestPosition position)
 {
 }
예제 #16
0
 public ActState(NJasmineTestRunContext runContext, SpecificationElement specElement)
     : base(runContext, specElement)
 {
 }
예제 #17
0
 protected void RunSpecificationElement(SpecificationElement specElement)
 {
     RunSpecificationElement <object>(specElement);
 }