public void StepStorageTest() { var storage = new StepStorage(); var step1 = new step(); var step2 = new step(); var step3 = new step(); storage.Put(step1); Assert.AreEqual(2, storage.Get().Count); Assert.AreEqual(step1, storage.Last); new Thread(() => { storage.Put(step2); Thread.Sleep(100); Assert.AreEqual(2, storage.Get().Count); Assert.AreEqual(step2, storage.Last); }).Start(); new Thread(() => { storage.Put(step3); Assert.AreEqual(2, storage.Get().Count); Assert.AreEqual(step3, storage.Last); }).Start(); }
/// <summary> /// Processes all testcase events. /// <see cref="AllureCSharpCommons.Events.TestCaseStartedEvent"/> /// <see cref="AllureCSharpCommons.Events.TestCasePendingEvent"/> /// <see cref="AllureCSharpCommons.Events.TestCaseCanceledEvent"/> /// <see cref="AllureCSharpCommons.Events.TestCaseFinishedEvent"/> /// </summary> /// <param name="evt">event to process</param> public void Fire(ITestCaseEvent evt) { if (typeof(TestCaseStartedEvent).IsAssignableFrom(evt.GetType())) { StepStorage.Get(); var testcaseresult = TestCaseStorage.Get(); evt.Process(testcaseresult); lock (TestSuiteAddChildLock) { TestSuiteStorage.Put(evt.SuiteUid); TestSuiteStorage.Get(evt.SuiteUid).testcases = ArraysUtils.Add(TestSuiteStorage.Get(evt.SuiteUid).testcases, testcaseresult); } } else if (typeof(TestCaseFinishedEvent).IsAssignableFrom(evt.GetType())) { var testcaseresult = TestCaseStorage.Get(); evt.Process(testcaseresult); var root = StepStorage.PollLast(); testcaseresult.steps = ArraysUtils.AddAll(testcaseresult.steps, root.steps); testcaseresult.attachments = ArraysUtils.AddAll(testcaseresult.attachments, root.attachments); StepStorage.Remove(); TestCaseStorage.Remove(); } else { var testcaseresult = TestCaseStorage.Get(); evt.Process(testcaseresult); } }