public void ComplexKeyHashingStrategy_3(int CNT, double k) { using(var store = new CacheStore(null)) { var strat = new ComplexKeyHashingStrategy(store); for(var i=0; i<CNT; i++) strat.Put("t1", "ThisIsAKeyLongerThanEight-"+i, new businessObject { ID = i, Name = "Gagarin-"+i, IsGood = true}); var collision = 0; for(var i=0; i<CNT; i++) { Assert.IsNull( strat.Get("t1", "ThisAKeyLongerThanEight-"+i) ); Assert.IsNull( strat.Get("t1", "ThusIsAKeyLongerThanEight-"+i) ); Assert.IsNull( strat.Get("t1", "ThisIsAKeyLongerEightThan-"+i) ); var o = strat.Get("t1", "ThisIsAKeyLongerThanEight-"+i); if (o!=null) { Assert.AreEqual(i, ((businessObject)strat.Get("t1", "ThisIsAKeyLongerThanEight-"+i)).ID); Assert.AreEqual(i, ((businessObject)strat.Get("t1", "ThisIsAKeyLongerThanEight-"+i)).ID); } else collision++; } Console.WriteLine("Did {0}, collision {1}", CNT, collision); Assert.IsTrue(collision < (int)(CNT*k)); } }
public void ComplexKeyHashingStrategy_1() { using(var store = new CacheStore(null)) { var strat = new ComplexKeyHashingStrategy(store); strat.Put("t1", "A", new businessObject { ID = 000, Name = "Adoyan", IsGood = true}); strat.Put("t1", "B", new businessObject { ID = 234, Name = "Borisenko", IsGood = false}); strat.Put("t1", "C", new businessObject { ID = 342, Name = "Carov", IsGood = true}); strat.Put("t2", "A", new businessObject { ID = 2000, Name = "2Adoyan", IsGood = true}); strat.Put("t2", "B", new businessObject { ID = 2234, Name = "2Borisenko", IsGood = false}); strat.Put("t2", "C", new businessObject { ID = 2342, Name = "2Carov", IsGood = true}); Assert.AreEqual("Adoyan", ((businessObject)strat.Get("t1", "A")).Name); Assert.AreEqual("Borisenko", ((businessObject)strat.Get("t1", "B")).Name); Assert.AreEqual("Carov", ((businessObject)strat.Get("t1", "C")).Name); Assert.AreEqual("2Adoyan", ((businessObject)strat.Get("t2", "A")).Name); Assert.AreEqual("2Borisenko", ((businessObject)strat.Get("t2", "B")).Name); Assert.AreEqual("2Carov", ((businessObject)strat.Get("t2", "C")).Name); } }