Exemple #1
0
        protected void ReportError(TestPosition position, Exception error)
        {
            _errorAccumulator.AddError(position, error);

            while (error != null &&
                   position != null &&
                   position.IsOnPathTo(_targetPosition))
            {
                _runningLock.PassAndWaitForTurn();
            }
        }
        public Exception PrepareForTestPosition(TestPosition position)
        {
            Exception existingError = null;

            if (position == null)
            {
                throw new ArgumentException("Parameter is required", "position");
            }

            _targetPosition = position;

            if (_visitor.SetTargetPosition(position, out existingError))
            {
                return(existingError);
            }

            do
            {
                if (_thread == null)
                {
                    _thread = new Thread(ThreadProc);
                    _thread.Start();
                }

                _runMutex.PassAndWaitForTurn();
            } while (!_visitor.SetTargetPosition(position, out existingError));

            return(existingError);
        }