Пример #1
0
        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);
            }
        }
Пример #2
0
        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));
            }
        }
Пример #3
0
        public void ComplexKeyHashingStrategy_2(int CNT, double k)
        {
            using (var store = new CacheStore(NOPApplication.Instance))
            {
                var strat = new ComplexKeyHashingStrategy(store);

                for (var i = 0; i < CNT; i++)
                {
                    strat.Put("t1", "Key-" + i, new businessObject {
                        ID = i, Name = "Gagarin-" + i, IsGood = true
                    });
                }


                var collision = 0;
                for (var i = 0; i < CNT; i++)
                {
                    Aver.IsNull(strat.Get("t1", "KeI-" + i));
                    Aver.IsNull(strat.Get("t1", "Ke y-" + i));
                    Aver.IsNull(strat.Get("t1", "Key " + i));

                    var o = strat.Get("t1", "Key-" + i);
                    if (o != null)
                    {
                        Aver.AreEqual(i, ((businessObject)o).ID);
                    }
                    else
                    {
                        collision++;
                    }
                }

                Console.WriteLine("Did {0}, collision {1}", CNT, collision);
                Aver.IsTrue(collision < (int)(CNT * k));
            }
        }
Пример #4
0
 private void cachePut(string entity, string key, object item)
 {
     m_Cache.Put(entity, key, item);
 }