public void LastResult_BeforeExternalWork_IsFalse() { using (var sut = new AbortableWorker(() => true)) { sut.Start(); Assert.False(sut.LastRunResult); } }
public void Abort_WithTimeout_AbortsWithoutException() { using (var sut = new AbortableWorker(() => { Thread.Sleep(60000); return true; })) { sut.Start(); sut.ResumeWork(); sut.Abort(400); sut.ThreadInstance.Join(); Assert.True(sut.Aborted); } }
public RuningTestForm(List <Test> tests) { InitializeComponent(); this.tests = tests; worker = new AbortableWorker(); worker.DoWork += DoWork; worker.ProgressChanged += ProgressChanged; worker.RunWorkerCompleted += WorkerCompleted; worker.WorkerReportsProgress = true; worker.WorkerSupportsCancellation = true; worker.RunWorkerAsync(); }
/// <summary> /// Form closing event /// </summary> private void MainForm_FormClosing(object sender, FormClosingEventArgs e) { //If any workers are running, display a prompt AbortableWorker worker = this.wokers.Find(w => w.IsBusy); if (worker != null) { //Display prompt DialogResult prompt = MessageBox.Show(this, "The simulation is still running in the background, are you sure you want to close the form now?", "Simulation running!", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2); switch (prompt) { //If user continues to close, abort working thread case DialogResult.Yes: worker.Abort(); break; //Else cancel closing event case DialogResult.No: e.Cancel = true; break; } } }
public void LastResult_ExternalWorkReturnedFalse_IsFalse() { using (var sut = new AbortableWorker(() => false)) { sut.Start(); sut.ResumeWork(); sut.WaitForWorkDone(); Assert.False(sut.LastRunResult); } }
public void WorkDelegate_IsNotCalledBeforeDoWork() { var workMock = PrepareExternalWorkMock(); using (var sut = new AbortableWorker(workMock.Object.DoWork)) { sut.Start(); while (!sut.IsWaiting) Thread.Sleep(10); } workMock.Verify(x => x.DoWork(), Times.Never()); }
public void WorkDelegate_IsCalledOnceOnDoWork() { var workMock = PrepareExternalWorkMock(); using (var sut = new AbortableWorker(workMock.Object.DoWork)) { sut.Start(); sut.ResumeWork(); sut.WaitForWorkDone(Timeout.Infinite); } workMock.Verify(x => x.DoWork(), Times.Once()); }
public void OnDoWorkFalse_Aborts() { var workMock = PrepareExternalWorkMock(0); using (var sut = new AbortableWorker(workMock.Object.DoWork)) { sut.Start(); sut.ResumeWork(); sut.WaitForWorkDone(Timeout.Infinite); Assert.True(sut.ThreadInstance.Join(Timeout.Infinite)); } }