Exemple #1
0
        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));
        }
Exemple #2
0
        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));
        }
Exemple #4
0
        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));
        }
Exemple #7
0
        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);
        }
Exemple #9
0
        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));
        }
Exemple #12
0
        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);
        }
Exemple #13
0
        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;
 }