public void Dequeues_until_stopped() { var messages = new NotifyingSingleQueue <string>(); messages.Enqueue(0, "a"); var sut = new Wait_for_work <string>(messages, () => { string result; var success = messages.TryDequeue(out result); return(new Tuple <bool, string>(success, result)); }); var results = new List <string>(); sut.Dequeued += _ => results.Add(_); ThreadPool.QueueUserWorkItem(_ => { sut.Dequeue_messages(() => { return(sut._running); }); }, null); Thread.Sleep(1000); sut.Stop(); Assert.AreEqual(1, results.Count); Assert.AreEqual("a", results[0]); string s; Assert.IsFalse(messages.TryDequeue(out s)); }
public void Wait_successful_after_enqueue() { var messages = new PriorityQueue <string>(); var sut = new NotifyingSingleQueue <string>(messages); sut.Enqueue(0, "x"); Assert.IsTrue(sut.Wait(500)); }
public void Wait_successful_after_enqueue() { var messages = new PriorityQueue<string>(); var sut = new NotifyingSingleQueue<string>(messages); sut.Enqueue(0, "x"); Assert.IsTrue(sut.Wait(500)); }
public void Enqueue() { var messages = new PriorityQueue <string>(); var sut = new NotifyingSingleQueue <string>(messages); sut.Enqueue(0, "x"); Assert.AreSame("x", messages.Dequeue()); Assert.AreEqual(0, messages.Count); }
public void Enqueue() { var messages = new PriorityQueue<string>(); var sut = new NotifyingSingleQueue<string>(messages); sut.Enqueue(0, "x"); Assert.AreSame("x", messages.Dequeue()); Assert.AreEqual(0, messages.Count); }
public void Wait_fails_after_dequeue() { var messages = new PriorityQueue<string>(); var sut = new NotifyingSingleQueue<string>(messages); sut.Enqueue(0, "x"); string msg; sut.TryDequeue(out msg); Assert.IsFalse(sut.Wait(500)); }
public void Wait_fails_after_dequeue() { var messages = new PriorityQueue <string>(); var sut = new NotifyingSingleQueue <string>(messages); sut.Enqueue(0, "x"); string msg; sut.TryDequeue(out msg); Assert.IsFalse(sut.Wait(500)); }
public void TryDequeue() { var messages = new PriorityQueue<string>(); var sut = new NotifyingSingleQueue<string>(messages); messages.Enqueue(0, "x"); string result = null; Assert.IsTrue(sut.TryDequeue(out result)); Assert.AreSame("x", result); Assert.AreEqual(0, messages.Count); }
public void TryDequeue() { var messages = new PriorityQueue <string>(); var sut = new NotifyingSingleQueue <string>(messages); messages.Enqueue(0, "x"); string result = null; Assert.IsTrue(sut.TryDequeue(out result)); Assert.AreSame("x", result); Assert.AreEqual(0, messages.Count); }
public void Stop_sets_termination_flag() { var messages = new NotifyingSingleQueue<int>(); var sut = new Wait_for_work<int>(messages, () => { int result; var success = messages.TryDequeue(out result); return new Tuple<bool, int>(success, result); }); sut._running = true; sut.Stop(); Assert.IsFalse(sut._running); }
public void Dequeueing_is_started() { var messages = new NotifyingSingleQueue<int>(); var sut = new Wait_for_work<int>(messages, () => { int result; var success = messages.TryDequeue(out result); return new Tuple<bool, int>(success, result); }); var are = new AutoResetEvent(false); sut.Start((_) => are.Set()); Assert.IsTrue(are.WaitOne(500)); }
public void Stop_sets_termination_flag() { var messages = new NotifyingSingleQueue <int>(); var sut = new Wait_for_work <int>(messages, () => { int result; var success = messages.TryDequeue(out result); return(new Tuple <bool, int>(success, result)); }); sut._running = true; sut.Stop(); Assert.IsFalse(sut._running); }
public void Dequeueing_is_started() { var messages = new NotifyingSingleQueue <int>(); var sut = new Wait_for_work <int>(messages, () => { int result; var success = messages.TryDequeue(out result); return(new Tuple <bool, int>(success, result)); }); var are = new AutoResetEvent(false); sut.Start((_) => are.Set()); Assert.IsTrue(are.WaitOne(500)); }
public void Dequeues_until_stopped() { var messages = new NotifyingSingleQueue<string>(); messages.Enqueue(0, "a"); var sut = new Wait_for_work<string>(messages, () => { string result; var success = messages.TryDequeue(out result); return new Tuple<bool, string>(success, result); }); var results = new List<string>(); sut.Dequeued += _ => results.Add(_); ThreadPool.QueueUserWorkItem(_ => { sut.Dequeue_messages(() => {return sut._running; }); }, null); Thread.Sleep(1000); sut.Stop(); Assert.AreEqual(1, results.Count); Assert.AreEqual("a", results[0]); string s; Assert.IsFalse(messages.TryDequeue(out s)); }
public void Inject(NotifyingSingleQueue<IMessage> messages) { _messages = messages; }