Пример #1
0
        /// <summary>
        /// Builds a predicate for an ExecutionSyncPoint that can be used with RunUntil(Func<bool>).
        /// </summary>
        Func <bool> GetPredicate(API.ExecutionSyncPoint syncPoint)
        {
            var context = Session.Context;

            return(() =>
                   (syncPoint.HasFlag(API.ExecutionSyncPoint.ENGINE_CREATED) &&
                    context.DebugEngine != null) ||
                   (syncPoint.HasFlag(API.ExecutionSyncPoint.PROCESS_CREATED) &&
                    context.Process != null) ||
                   (syncPoint.HasFlag(API.ExecutionSyncPoint.PROGRAM_SELECTED) &&
                    context.DebugProgram != null) ||
                   (syncPoint.HasFlag(API.ExecutionSyncPoint.THREAD_SELECTED) &&
                    context.SelectedThread != null) ||
                   (syncPoint.HasFlag(API.ExecutionSyncPoint.FRAME_SELECTED) &&
                    context.SelectedStackFrame != null) ||
                   (syncPoint.HasFlag(API.ExecutionSyncPoint.BREAK) &&
                    context.ProgramState == ProgramState.AtBreak) ||
                   (syncPoint.HasFlag(API.ExecutionSyncPoint.IDLE) && _jobQueue.Empty) ||
                   (syncPoint.HasFlag(API.ExecutionSyncPoint.PROGRAM_RUNNING) &&
                    context.ProgramState == ProgramState.Running) ||
                   (syncPoint.HasFlag(API.ExecutionSyncPoint.PROGRAM_TERMINATED) &&
                    context.ProgramState == ProgramState.Terminated));
        }
Пример #2
0
 public void RunUntil(API.ExecutionSyncPoint syncPoint, TimeSpan timeout)
 {
     RunUntil(GetPredicate(syncPoint), timeout);
 }
Пример #3
0
 public SyncPointAttribute(API.ExecutionSyncPoint syncPoint)
 {
     SyncPoint = syncPoint;
 }