public void EventCache_ClearCache()
        {
            RoomEventCacheManager manager = new RoomEventCacheManager();

            string msg;

            manager.AddEventToCurrentSlice(new CustomEvent(0, 0, null), out msg);
            manager.AddEventToCurrentSlice(new CustomEvent(1, 0, null), out msg);

            Assert.That(manager.AddEventToCurrentSlice(new CustomEvent(2, 0, null), out msg));
            Assert.That(manager.AddEventToCurrentSlice(new CustomEvent(3, 0, null), out msg));
            Assert.That(manager.AddEventToCurrentSlice(new CustomEvent(3, 0, null), out msg));

            Assert.That(manager.CachedEventsCount, Is.Not.Zero);

            manager.RemoveEventsFromCache(new RaiseEventRequest());

            Assert.That(manager.CachedEventsCount, Is.Zero);

            Assert.That(manager.AddEventToCurrentSlice(new CustomEvent(2, 0, null), out msg));
            Assert.That(manager.AddEventToCurrentSlice(new CustomEvent(3, 0, null), out msg));
            Assert.That(manager.AddEventToCurrentSlice(new CustomEvent(3, 0, null), out msg));

            Assert.That(manager.CachedEventsCount, Is.Not.Zero);

            manager.RemoveEventsFromCache(0, null, null);

            Assert.That(manager.CachedEventsCount, Is.Zero);
        }
        public void EventCache_RemoveEventsPerActor()
        {
            RoomEventCacheManager manager = new RoomEventCacheManager();

            string msg;

            manager.AddEventToCurrentSlice(new CustomEvent(0, 0, null), out msg);
            manager.AddEventToCurrentSlice(new CustomEvent(1, 0, null), out msg);

            Assert.That(manager.AddEventToCurrentSlice(new CustomEvent(2, 0, null), out msg));
            Assert.That(manager.AddEventToCurrentSlice(new CustomEvent(3, 0, null), out msg));
            Assert.That(manager.AddEventToCurrentSlice(new CustomEvent(3, 0, null), out msg));

            manager.RemoveEventsFromCache(new RaiseEventRequest {
                Actors = new [] { 3 },
            });

            Assert.That(manager.CachedEventsCount, Is.EqualTo(3));

            Assert.That(manager.AddEventToCurrentSlice(new CustomEvent(2, 0, null), out msg));
            Assert.That(manager.AddEventToCurrentSlice(new CustomEvent(3, 1, null), out msg));
            Assert.That(manager.AddEventToCurrentSlice(new CustomEvent(3, 2, null), out msg));

            Assert.That(manager.CachedEventsCount, Is.EqualTo(6));

            manager.RemoveEventsFromCache(0, new int[] { 3 }, null);

            Assert.That(manager.CachedEventsCount, Is.EqualTo(4));
        }
        public void EventCache_RemoveEventsPerEventCodeAndActor()
        {
            RoomEventCacheManager manager = new RoomEventCacheManager();

            string msg;

            manager.AddEventToCurrentSlice(new CustomEvent(0, 0, null), out msg);
            manager.AddEventToCurrentSlice(new CustomEvent(1, 0, null), out msg);

            Assert.That(manager.AddEventToCurrentSlice(new CustomEvent(2, 0, null), out msg));
            Assert.That(manager.AddEventToCurrentSlice(new CustomEvent(3, 1, null), out msg));
            Assert.That(manager.AddEventToCurrentSlice(new CustomEvent(3, 2, null), out msg));

            Assert.That(manager.CachedEventsCount, Is.EqualTo(5));

            byte eventCode = 2;

            manager.RemoveEventsFromCache(eventCode, new int[] { 3 }, null);

            Assert.That(manager.CachedEventsCount, Is.EqualTo(4));

            eventCode = 1;
            manager.RemoveEventsFromCache(eventCode, new int[] { 3 }, null);

            Assert.That(manager.CachedEventsCount, Is.EqualTo(3));
        }