public void ReplaceEvent() { var eventCache = new EventCacheDictionary(); var eventData = new Hashtable { { 1, 1 } }; string msg; Assert.That(eventCache.MergeEvent(1, 1, eventData, out msg)); var eventData2 = new Hashtable { { 2, 2 } }; eventCache.ReplaceEvent(1, 1, eventData2); EventCache ec; Assert.That(eventCache.TryGetEventCache(1, out ec), Is.True); Hashtable ed; Assert.That(ec.TryGetValue(1, out ed), Is.True); Assert.That(ed, Is.EqualTo(eventData2)); }
protected bool UpdateEventCache(Actor actor, RaiseEventRequest raiseEventRequest, out string msg) { msg = null; CustomEvent customEvent; switch (raiseEventRequest.Cache) { case (byte)CacheOperation.DoNotCache: return(true); case (byte)CacheOperation.AddToRoomCache: customEvent = new CustomEvent(actor.ActorNr, raiseEventRequest.EvCode, raiseEventRequest.Data); EventCache.AddEvent(customEvent); return(true); case (byte)CacheOperation.AddToRoomCacheGlobal: customEvent = new CustomEvent(0, raiseEventRequest.EvCode, raiseEventRequest.Data); EventCache.AddEvent(customEvent); return(true); } // cache operations for the actor event cache currently only working with hashtable data Hashtable eventData; if (raiseEventRequest.Data == null || raiseEventRequest.Data is Hashtable) { eventData = (Hashtable)raiseEventRequest.Data; } else { msg = string.Format( "Cache operation '{0}' requires a Hashtable as event data.", raiseEventRequest.Cache); return(false); } switch (raiseEventRequest.Cache) { case (byte)CacheOperation.MergeCache: ActorEventCache.MergeEvent(actor.ActorNr, raiseEventRequest.EvCode, eventData); return(true); case (byte)CacheOperation.RemoveCache: ActorEventCache.RemoveEvent(actor.ActorNr, raiseEventRequest.EvCode); return(true); case (byte)CacheOperation.ReplaceCache: ActorEventCache.ReplaceEvent(actor.ActorNr, raiseEventRequest.EvCode, eventData); return(true); default: msg = string.Format("Unknown cache operation '{0}'.", raiseEventRequest.Cache); return(false); } }