Пример #1
0
 private static void Verify(YTrie trie)
 {
     foreach (var pair in trie.cluster)
     {
         pair.Value.VerifyInvariants();
     }
 }
Пример #2
0
        public void FirstLast()
        {
            var trie = new YTrie();

            Assert.AreEqual(null, trie.First());
            Assert.AreEqual(null, trie.Last());
            trie.Add(383374792, "383374792");
            Assert.AreEqual(new KVP(383374792, "383374792"), trie.First());
            Assert.AreEqual(new KVP(383374792, "383374792"), trie.Last());
            Assert.IsTrue(trie.Remove(383374792));
            Assert.AreEqual(null, trie.First());
            Assert.AreEqual(null, trie.Last());
            trie.Add(838201935, "838201935");
            trie.Add(1531916866, "1531916866");
            trie.Add(233576276, "233576276");
            trie.Add(1715187717, "1715187717");
            trie.Add(310188794, "310188794");
            trie.Add(1033137354, "1033137354");
            trie.Add(1886499922, "1886499922");
            Assert.AreEqual("1886499922", trie[1886499922]);
            Assert.AreEqual(new KVP(233576276, "233576276"), trie.First());
            Assert.AreEqual(new KVP(1886499922, "1886499922"), trie.Last());
            trie.Add(0, "0");
            trie.Add(uint.MaxValue, uint.MaxValue.ToString());
            Assert.AreEqual(new KVP(0, "0"), trie.First());
            Assert.AreEqual(new KVP(uint.MaxValue, uint.MaxValue.ToString()), trie.Last());
        }
Пример #3
0
        public void AddMaxValue()
        {
            YTrie trie = new YTrie();

            trie.Add(uint.MaxValue, uint.MaxValue.ToString());
            Assert.AreEqual(uint.MaxValue.ToString(), trie[uint.MaxValue]);
        }
Пример #4
0
 private static void Verify(YTrie trie)
 {
     foreach (var pair in trie.cluster)
     {
         pair.Value.VerifyInvariants();
     }
 }
Пример #5
0
        public void GetFromEmpty()
        {
            YTrie  trie = new YTrie();
            string temp;

            Assert.IsFalse(trie.TryGetValue(0, out temp));
        }
Пример #6
0
        public void GetFromNonEmpty()
        {
            YTrie trie = new YTrie();

            trie.Add(845, "845-1");
            Assert.AreEqual("845-1", trie[845]);
            trie[845] = "845-2";
            Assert.AreEqual("845-2", trie[845]);
            trie.Add(815, "815");
            Assert.AreEqual("815", trie[815]);
        }
Пример #7
0
        public void RemoveWithMergeAndSplit()
        {
            var trie = new YTrie();

            Assert.IsFalse(trie.Remove(1927575451));
            for (uint i = 0; i < 95; i++)
            {
                trie.Add(i, i.ToString());
            }
            // we've got keys split into 2 buckets now -- one with keys {0..31} and another with keys {32..96}
            for (uint i = 1; i < 20; i++)
            {
                trie.Remove(i);
            }
        }
Пример #8
0
        public void Higher()
        {
            var trie = new YTrie();

            Assert.AreEqual(null, trie.Higher(0));
            Assert.AreEqual(null, trie.Higher(uint.MaxValue));
            for (uint i = 1; i < 66; i++)
            {
                trie.Add(i, i.ToString());
            }
            Assert.AreEqual(null, trie.Higher(uint.MaxValue));
            for (uint i = 0; i < 65; i++)
            {
                Assert.AreEqual(new KVP(i + 1, (i + 1).ToString()), trie.Higher(i));
            }
        }
Пример #9
0
        public void RemoveWithMerge()
        {
            var trie = new YTrie();

            Assert.IsFalse(trie.Remove(1748));
            for (uint i = 0; i < 17; i++)
            {
                trie.Add(i, i.ToString());
                Verify(trie);
            }
            Assert.IsTrue(trie.Remove(16));
            Verify(trie);
            for (uint i = 16; i < 65; i++)
            {
                trie.Add(i, i.ToString());
                Verify(trie);
            }
            for (uint i = 2; i < 25; i++)
            {
                Assert.IsTrue(trie.Remove(i));
                Verify(trie);
            }
        }
Пример #10
0
 public void AddMaxValue()
 {
     YTrie trie = new YTrie();
     trie.Add(uint.MaxValue, uint.MaxValue.ToString());
     Assert.AreEqual(uint.MaxValue.ToString(), trie[uint.MaxValue]);
 }
Пример #11
0
        public void Creation()
        {
            YTrie trie;

            Assert.DoesNotThrow(() => trie = new YTrie());
        }
Пример #12
0
 public void RemoveWithMerge()
 {
     var trie = new YTrie();
     Assert.IsFalse(trie.Remove(1748));
     for (uint i = 0; i < 17; i++)
     {
         trie.Add(i, i.ToString());
         Verify(trie);
     }
     Assert.IsTrue(trie.Remove(16));
     Verify(trie);
     for (uint i = 16; i < 65; i++)
     {
         trie.Add(i, i.ToString());
         Verify(trie);
     }
     for (uint i = 2; i < 25; i++)
     {
         Assert.IsTrue(trie.Remove(i));
         Verify(trie);
     }
 }
Пример #13
0
 public void RemoveWithMergeAndSplit()
 {
     var trie = new YTrie();
     Assert.IsFalse(trie.Remove(1927575451));
     for (uint i = 0; i < 95; i++)
         trie.Add(i, i.ToString());
     // we've got keys split into 2 buckets now -- one with keys {0..31} and another with keys {32..96}
     for (uint i = 1; i < 20; i++)
         trie.Remove(i);
 }
Пример #14
0
 public void FirstLast()
 {
     var trie = new YTrie();
     Assert.AreEqual(null, trie.First());
     Assert.AreEqual(null, trie.Last());
     trie.Add(383374792, "383374792");
     Assert.AreEqual(new KVP(383374792, "383374792"), trie.First());
     Assert.AreEqual(new KVP(383374792, "383374792"), trie.Last());
     Assert.IsTrue(trie.Remove(383374792));
     Assert.AreEqual(null, trie.First());
     Assert.AreEqual(null, trie.Last());
     trie.Add(838201935, "838201935");
     trie.Add(1531916866, "1531916866");
     trie.Add(233576276, "233576276");
     trie.Add(1715187717, "1715187717");
     trie.Add(310188794, "310188794");
     trie.Add(1033137354, "1033137354");
     trie.Add(1886499922, "1886499922");
     Assert.AreEqual("1886499922", trie[1886499922]);
     Assert.AreEqual(new KVP(233576276, "233576276"), trie.First());
     Assert.AreEqual(new KVP(1886499922, "1886499922"), trie.Last());
     trie.Add(0, "0");
     trie.Add(uint.MaxValue, uint.MaxValue.ToString());
     Assert.AreEqual(new KVP(0, "0"), trie.First());
     Assert.AreEqual(new KVP(uint.MaxValue, uint.MaxValue.ToString()), trie.Last());
 }
Пример #15
0
        public void AddWithSplit()
        {
            YTrie trie = new YTrie();

            trie[0] = "0";
            trie.Add(1, "1");
            trie.Add(2, "2");
            trie.Add(3, "3");
            trie.Add(4, "4");
            trie.Add(5, "5");
            trie.Add(6, "6");
            trie.Add(7, "7");
            trie.Add(8, "8");
            trie.Add(9, "9");
            trie.Add(10, "10");
            trie.Add(11, "11");
            trie.Add(12, "12");
            trie.Add(13, "13");
            trie.Add(14, "14");
            trie.Add(15, "15");
            trie.Add(16, "16");
            trie.Add(17, "17");
            trie.Add(18, "18");
            trie.Add(19, "19");
            trie.Add(20, "20");
            trie.Add(21, "21");
            trie.Add(22, "22");
            trie.Add(23, "23");
            trie.Add(24, "24");
            trie.Add(25, "25");
            trie.Add(26, "26");
            trie.Add(27, "27");
            trie.Add(28, "28");
            trie.Add(29, "29");
            trie.Add(30, "30");
            trie.Add(31, "31");
            trie.Add(32, "32");
            trie.Add(33, "33");
            trie.Add(34, "34");
            trie.Add(35, "35");
            trie.Add(36, "36");
            trie.Add(37, "37");
            trie.Add(38, "38");
            trie.Add(39, "39");
            trie.Add(40, "40");
            trie.Add(41, "41");
            trie.Add(42, "42");
            trie.Add(43, "43");
            trie.Add(44, "44");
            trie.Add(45, "45");
            trie.Add(46, "46");
            trie.Add(47, "47");
            trie.Add(48, "48");
            trie.Add(49, "49");
            trie.Add(50, "50");
            trie.Add(51, "51");
            trie.Add(52, "52");
            trie.Add(53, "53");
            trie.Add(54, "54");
            trie.Add(55, "55");
            trie.Add(56, "56");
            trie.Add(57, "57");
            trie.Add(58, "58");
            trie.Add(59, "59");
            trie.Add(60, "60");
            trie.Add(61, "61");
            trie.Add(62, "62");
            trie.Add(63, "63");
            trie.Add(64, "64");
            Assert.AreEqual("0", trie[0]);
            Assert.AreEqual("1", trie[1]);
            Assert.AreEqual("2", trie[2]);
            Assert.AreEqual("3", trie[3]);
            Assert.AreEqual("4", trie[4]);
            Assert.AreEqual("5", trie[5]);
            Assert.AreEqual("6", trie[6]);
            Assert.AreEqual("7", trie[7]);
            Assert.AreEqual("8", trie[8]);
            Assert.AreEqual("9", trie[9]);
            Assert.AreEqual("10", trie[10]);
            Assert.AreEqual("11", trie[11]);
            Assert.AreEqual("12", trie[12]);
            Assert.AreEqual("13", trie[13]);
            Assert.AreEqual("14", trie[14]);
            Assert.AreEqual("15", trie[15]);
            Assert.AreEqual("16", trie[16]);
            Assert.AreEqual("17", trie[17]);
            Assert.AreEqual("18", trie[18]);
            Assert.AreEqual("19", trie[19]);
            Assert.AreEqual("20", trie[20]);
            Assert.AreEqual("21", trie[21]);
            Assert.AreEqual("22", trie[22]);
            Assert.AreEqual("23", trie[23]);
            Assert.AreEqual("24", trie[24]);
            Assert.AreEqual("25", trie[25]);
            Assert.AreEqual("26", trie[26]);
            Assert.AreEqual("27", trie[27]);
            Assert.AreEqual("28", trie[28]);
            Assert.AreEqual("29", trie[29]);
            Assert.AreEqual("30", trie[30]);
            Assert.AreEqual("31", trie[31]);
            Assert.AreEqual("32", trie[32]);
            Assert.AreEqual("33", trie[33]);
            Assert.AreEqual("34", trie[34]);
            Assert.AreEqual("35", trie[35]);
            Assert.AreEqual("36", trie[36]);
            Assert.AreEqual("37", trie[37]);
            Assert.AreEqual("38", trie[38]);
            Assert.AreEqual("39", trie[39]);
            Assert.AreEqual("40", trie[40]);
            Assert.AreEqual("41", trie[41]);
            Assert.AreEqual("42", trie[42]);
            Assert.AreEqual("43", trie[43]);
            Assert.AreEqual("44", trie[44]);
            Assert.AreEqual("45", trie[45]);
            Assert.AreEqual("46", trie[46]);
            Assert.AreEqual("47", trie[47]);
            Assert.AreEqual("48", trie[48]);
            Assert.AreEqual("49", trie[49]);
            Assert.AreEqual("50", trie[50]);
            Assert.AreEqual("51", trie[51]);
            Assert.AreEqual("52", trie[52]);
            Assert.AreEqual("53", trie[53]);
            Assert.AreEqual("54", trie[54]);
            Assert.AreEqual("55", trie[55]);
            Assert.AreEqual("56", trie[56]);
            Assert.AreEqual("57", trie[57]);
            Assert.AreEqual("58", trie[58]);
            Assert.AreEqual("59", trie[59]);
            Assert.AreEqual("60", trie[60]);
            Assert.AreEqual("61", trie[61]);
            Assert.AreEqual("62", trie[62]);
            Assert.AreEqual("63", trie[63]);
            Assert.AreEqual("64", trie[64]);
            string temp;

            Assert.Throws <KeyNotFoundException>(() => temp = trie[65]);
        }
Пример #16
0
 public void AddWithSplit()
 {
     YTrie trie = new YTrie();
     trie[0] = "0";
     trie.Add(1, "1");
     trie.Add(2, "2");
     trie.Add(3, "3");
     trie.Add(4, "4");
     trie.Add(5, "5");
     trie.Add(6, "6");
     trie.Add(7, "7");
     trie.Add(8, "8");
     trie.Add(9, "9");
     trie.Add(10, "10");
     trie.Add(11, "11");
     trie.Add(12, "12");
     trie.Add(13, "13");
     trie.Add(14, "14");
     trie.Add(15, "15");
     trie.Add(16, "16");
     trie.Add(17, "17");
     trie.Add(18, "18");
     trie.Add(19, "19");
     trie.Add(20, "20");
     trie.Add(21, "21");
     trie.Add(22, "22");
     trie.Add(23, "23");
     trie.Add(24, "24");
     trie.Add(25, "25");
     trie.Add(26, "26");
     trie.Add(27, "27");
     trie.Add(28, "28");
     trie.Add(29, "29");
     trie.Add(30, "30");
     trie.Add(31, "31");
     trie.Add(32, "32");
     trie.Add(33, "33");
     trie.Add(34, "34");
     trie.Add(35, "35");
     trie.Add(36, "36");
     trie.Add(37, "37");
     trie.Add(38, "38");
     trie.Add(39, "39");
     trie.Add(40, "40");
     trie.Add(41, "41");
     trie.Add(42, "42");
     trie.Add(43, "43");
     trie.Add(44, "44");
     trie.Add(45, "45");
     trie.Add(46, "46");
     trie.Add(47, "47");
     trie.Add(48, "48");
     trie.Add(49, "49");
     trie.Add(50, "50");
     trie.Add(51, "51");
     trie.Add(52, "52");
     trie.Add(53, "53");
     trie.Add(54, "54");
     trie.Add(55, "55");
     trie.Add(56, "56");
     trie.Add(57, "57");
     trie.Add(58, "58");
     trie.Add(59, "59");
     trie.Add(60, "60");
     trie.Add(61, "61");
     trie.Add(62, "62");
     trie.Add(63, "63");
     trie.Add(64, "64");
     Assert.AreEqual("0", trie[0]);
     Assert.AreEqual("1", trie[1]);
     Assert.AreEqual("2", trie[2]);
     Assert.AreEqual("3", trie[3]);
     Assert.AreEqual("4", trie[4]);
     Assert.AreEqual("5", trie[5]);
     Assert.AreEqual("6", trie[6]);
     Assert.AreEqual("7", trie[7]);
     Assert.AreEqual("8", trie[8]);
     Assert.AreEqual("9", trie[9]);
     Assert.AreEqual("10", trie[10]);
     Assert.AreEqual("11", trie[11]);
     Assert.AreEqual("12", trie[12]);
     Assert.AreEqual("13", trie[13]);
     Assert.AreEqual("14", trie[14]);
     Assert.AreEqual("15", trie[15]);
     Assert.AreEqual("16", trie[16]);
     Assert.AreEqual("17", trie[17]);
     Assert.AreEqual("18", trie[18]);
     Assert.AreEqual("19", trie[19]);
     Assert.AreEqual("20", trie[20]);
     Assert.AreEqual("21", trie[21]);
     Assert.AreEqual("22", trie[22]);
     Assert.AreEqual("23", trie[23]);
     Assert.AreEqual("24", trie[24]);
     Assert.AreEqual("25", trie[25]);
     Assert.AreEqual("26", trie[26]);
     Assert.AreEqual("27", trie[27]);
     Assert.AreEqual("28", trie[28]);
     Assert.AreEqual("29", trie[29]);
     Assert.AreEqual("30", trie[30]);
     Assert.AreEqual("31", trie[31]);
     Assert.AreEqual("32", trie[32]);
     Assert.AreEqual("33", trie[33]);
     Assert.AreEqual("34", trie[34]);
     Assert.AreEqual("35", trie[35]);
     Assert.AreEqual("36", trie[36]);
     Assert.AreEqual("37", trie[37]);
     Assert.AreEqual("38", trie[38]);
     Assert.AreEqual("39", trie[39]);
     Assert.AreEqual("40", trie[40]);
     Assert.AreEqual("41", trie[41]);
     Assert.AreEqual("42", trie[42]);
     Assert.AreEqual("43", trie[43]);
     Assert.AreEqual("44", trie[44]);
     Assert.AreEqual("45", trie[45]);
     Assert.AreEqual("46", trie[46]);
     Assert.AreEqual("47", trie[47]);
     Assert.AreEqual("48", trie[48]);
     Assert.AreEqual("49", trie[49]);
     Assert.AreEqual("50", trie[50]);
     Assert.AreEqual("51", trie[51]);
     Assert.AreEqual("52", trie[52]);
     Assert.AreEqual("53", trie[53]);
     Assert.AreEqual("54", trie[54]);
     Assert.AreEqual("55", trie[55]);
     Assert.AreEqual("56", trie[56]);
     Assert.AreEqual("57", trie[57]);
     Assert.AreEqual("58", trie[58]);
     Assert.AreEqual("59", trie[59]);
     Assert.AreEqual("60", trie[60]);
     Assert.AreEqual("61", trie[61]);
     Assert.AreEqual("62", trie[62]);
     Assert.AreEqual("63", trie[63]);
     Assert.AreEqual("64", trie[64]);
     string temp;
     Assert.Throws<KeyNotFoundException>(() => temp = trie[65]);
 }
Пример #17
0
 public void GetFromNonEmpty()
 {
     YTrie trie = new YTrie();
     trie.Add(845, "845-1");
     Assert.AreEqual("845-1", trie[845]);
     trie[845] = "845-2";
     Assert.AreEqual("845-2", trie[845]);
     trie.Add(815, "815");
     Assert.AreEqual("815", trie[815]);
 }
Пример #18
0
 public void GetFromEmpty()
 {
     YTrie trie = new YTrie();
     string temp;
     Assert.IsFalse(trie.TryGetValue(0, out temp));
 }
Пример #19
0
 public void Creation()
 {
     YTrie trie;
     Assert.DoesNotThrow(() => trie = new YTrie());
 }
Пример #20
0
 public void Higher()
 {
     var trie = new YTrie();
     Assert.AreEqual(null, trie.Higher(0));
     Assert.AreEqual(null, trie.Higher(uint.MaxValue));
     for (uint i = 1; i < 66; i++)
         trie.Add(i, i.ToString());
     Assert.AreEqual(null, trie.Higher(uint.MaxValue));
     for (uint i = 0; i < 65; i++)
         Assert.AreEqual(new KVP(i + 1, (i + 1).ToString()), trie.Higher(i));
 }