public void TestEventOrder()
        {
            EventOrderChecker nextFilter = new EventOrderChecker();
            EventOrderCounter[] sessions = new EventOrderCounter[] { new EventOrderCounter(),
                new EventOrderCounter(), new EventOrderCounter(), new EventOrderCounter(), new EventOrderCounter(),
                new EventOrderCounter(), new EventOrderCounter(), new EventOrderCounter(), new EventOrderCounter(),
                new EventOrderCounter(), };
            Int32 loop = 1000000;
            Int32 end = sessions.Length - 1;
            ExecutorFilter filter = this.filter;

            for (Int32 i = 0; i < loop; i++)
            {
                for (Int32 j = end; j >= 0; j--)
                {
                    filter.MessageReceived(nextFilter, sessions[j], i);
                }

                if (nextFilter.exception != null)
                    throw nextFilter.exception;
            }

            System.Threading.Thread.Sleep(2000);

            for (Int32 i = end; i >= 0; i--)
            {
                Assert.AreEqual(loop - 1, sessions[i].LastCount);
            }
        }
        public void TestEventOrder()
        {
            EventOrderChecker nextFilter = new EventOrderChecker();

            EventOrderCounter[] sessions = new EventOrderCounter[] { new EventOrderCounter(),
                                                                     new EventOrderCounter(), new EventOrderCounter(), new EventOrderCounter(), new EventOrderCounter(),
                                                                     new EventOrderCounter(), new EventOrderCounter(), new EventOrderCounter(), new EventOrderCounter(),
                                                                     new EventOrderCounter(), };
            Int32          loop   = 1000000;
            Int32          end    = sessions.Length - 1;
            ExecutorFilter filter = this.filter;

            for (Int32 i = 0; i < loop; i++)
            {
                for (Int32 j = end; j >= 0; j--)
                {
                    filter.MessageReceived(nextFilter, sessions[j], i);
                }

                if (nextFilter.exception != null)
                {
                    throw nextFilter.exception;
                }
            }

            System.Threading.Thread.Sleep(2000);

            for (Int32 i = end; i >= 0; i--)
            {
                Assert.AreEqual(loop - 1, sessions[i].LastCount);
            }
        }