public void CappedCollectionTest()
 {
     var Stats2 = new RedBlackTreeWithStats<int>();
     Stats2.CappedToNumberOfElements = 4;
     Stats2.Add(0);
     Stats2.Add(1);
     Stats2.Add(2);
     Stats2.Add(3);
     Assert.AreEqual("0,1,2,3", String.Join(",", Stats2.All));
     Assert.AreEqual(4, Stats2.Count);
     Stats2.Add(4);
     Assert.AreEqual("0,1,2,3", String.Join(",", Stats2.All));
     Assert.AreEqual(4, Stats2.Count);
     Stats2.Add(-1);
     Assert.AreEqual("-1,0,1,2", String.Join(",", Stats2.All));
     Assert.AreEqual(4, Stats2.Count);
 }
예제 #2
0
            public UserScore UpdateUserScore(uint UserId, uint ScoreTimeStamp, int ScoreValue)
            {
                bool IsNew = false;

                var UserScore = this.UserScoresByUserId.GetOrCreate(UserId, () => {
                    var NewUserScore = new UserScore()
                    {
                        UserId         = UserId,
                        ScoreTimeStamp = ScoreTimeStamp,
                        ScoreValue     = ScoreValue,
                    };
                    Tree.Add(NewUserScore);
                    IsNew = true;
                    return(NewUserScore);
                });

                if (!IsNew && UserScore.ShouldUpdate(ScoreTimeStamp, ScoreValue))
                {
                    this.Tree.Remove(UserScore);
                    {
                        UserScore.SetScore(ScoreTimeStamp, ScoreValue);
                    }
                    this.Tree.Add(UserScore);
                }

                if (this.CappedCount > -1)
                {
                    while (this.UserScoresByUserId.Count > this.CappedCount)
                    {
                        // Not synchronized for performance!
                        this.UserScoresByUserId.Remove(this.Tree.BackElement.UserId);
                        this.Tree.RemoveBack();
                    }
                }

                return(UserScore);
            }
        public void CappedCollectionTest()
        {
            var Stats2 = new RedBlackTreeWithStats <int>();

            Stats2.CappedToNumberOfElements = 4;
            Stats2.Add(0);
            Stats2.Add(1);
            Stats2.Add(2);
            Stats2.Add(3);
            Assert.AreEqual("0,1,2,3", Stats2.All.ToStringArray());
            Assert.AreEqual(4, Stats2.Count);
            Stats2.Add(4);
            Assert.AreEqual("0,1,2,3", Stats2.All.ToStringArray());
            Assert.AreEqual(4, Stats2.Count);
            Stats2.Add(-1);
            Assert.AreEqual("-1,0,1,2", Stats2.All.ToStringArray());
            Assert.AreEqual(4, Stats2.Count);
        }
 public void Initialize1()
 {
     Stats = new RedBlackTreeWithStats <int>();
     Stats.Add(5);
     //Stats.PrintTree();
     //Console.WriteLine("-------------------------------");
     Stats.Add(4);
     //Stats.PrintTree();
     //Console.WriteLine("-------------------------------");
     Stats.Add(6);
     Stats.Add(3);
     Stats.Add(2);
     Stats.Add(1);
     Stats.Add(11);
     Stats.Add(7);
     Stats.Add(8);
     Stats.Add(9);
     Stats.Add(10);
     Stats.Add(0);
 }
		public void Initialize1()
		{
			Stats = new RedBlackTreeWithStats<int>();
			Stats.Add(5);
			//Stats.PrintTree();
			//Console.WriteLine("-------------------------------");
			Stats.Add(4);
			//Stats.PrintTree();
			//Console.WriteLine("-------------------------------");
			Stats.Add(6);
			Stats.Add(3);
			Stats.Add(2);
			Stats.Add(1);
			Stats.Add(11);
			Stats.Add(7);
			Stats.Add(8);
			Stats.Add(9);
			Stats.Add(10);
			Stats.Add(0);
		}