public virtual void TestSetFive_InOrder()
        {
            LeafBucket b = new LeafBucket(0);

            NUnit.Framework.Assert.AreSame(b, b.Set(Id(unchecked ((int)(0x11))), Id(unchecked (
                                                                                        (int)(0x81))), null));
            NUnit.Framework.Assert.AreSame(b, b.Set(Id(unchecked ((int)(0x22))), Id(unchecked (
                                                                                        (int)(0x82))), null));
            NUnit.Framework.Assert.AreSame(b, b.Set(Id(unchecked ((int)(0x33))), Id(unchecked (
                                                                                        (int)(0x83))), null));
            NUnit.Framework.Assert.AreSame(b, b.Set(Id(unchecked ((int)(0x44))), Id(unchecked (
                                                                                        (int)(0x84))), null));
            NUnit.Framework.Assert.AreSame(b, b.Set(Id(unchecked ((int)(0x55))), Id(unchecked (
                                                                                        (int)(0x85))), null));
            NUnit.Framework.Assert.IsNull(b.GetNote(Id(unchecked ((int)(0x01))), null));
            NUnit.Framework.Assert.AreEqual(Id(unchecked ((int)(0x81))), b.GetNote(Id(unchecked (
                                                                                          (int)(0x11))), null).GetData());
            NUnit.Framework.Assert.AreEqual(Id(unchecked ((int)(0x82))), b.GetNote(Id(unchecked (
                                                                                          (int)(0x22))), null).GetData());
            NUnit.Framework.Assert.AreEqual(Id(unchecked ((int)(0x83))), b.GetNote(Id(unchecked (
                                                                                          (int)(0x33))), null).GetData());
            NUnit.Framework.Assert.AreEqual(Id(unchecked ((int)(0x84))), b.GetNote(Id(unchecked (
                                                                                          (int)(0x44))), null).GetData());
            NUnit.Framework.Assert.AreEqual(Id(unchecked ((int)(0x85))), b.GetNote(Id(unchecked (
                                                                                          (int)(0x55))), null).GetData());
            NUnit.Framework.Assert.IsNull(b.GetNote(Id(unchecked ((int)(0x66))), null));
        }
        public virtual void TestRemoveMakesEmpty()
        {
            LeafBucket b = new LeafBucket(0);

            NUnit.Framework.Assert.AreSame(b, b.Set(Id(unchecked ((int)(0x11))), Id(unchecked (
                                                                                        (int)(0x81))), null));
            NUnit.Framework.Assert.AreEqual(Id(unchecked ((int)(0x81))), b.GetNote(Id(unchecked (
                                                                                          (int)(0x11))), null).GetData());
            NUnit.Framework.Assert.IsNull(b.Set(Id(unchecked ((int)(0x11))), null, null));
            NUnit.Framework.Assert.IsNull(b.GetNote(Id(unchecked ((int)(0x11))), null));
        }
        public virtual void TestSet_Replace()
        {
            LeafBucket b = new LeafBucket(0);

            NUnit.Framework.Assert.AreSame(b, b.Set(Id(unchecked ((int)(0x11))), Id(unchecked (
                                                                                        (int)(0x81))), null));
            NUnit.Framework.Assert.AreEqual(Id(unchecked ((int)(0x81))), b.GetNote(Id(unchecked (
                                                                                          (int)(0x11))), null).GetData());
            NUnit.Framework.Assert.AreSame(b, b.Set(Id(unchecked ((int)(0x11))), Id(unchecked (
                                                                                        (int)(0x01))), null));
            NUnit.Framework.Assert.AreEqual(Id(unchecked ((int)(0x01))), b.GetNote(Id(unchecked (
                                                                                          (int)(0x11))), null).GetData());
        }
        public virtual void TestRemoveMissingNote()
        {
            LeafBucket b = new LeafBucket(0);

            NUnit.Framework.Assert.IsNull(b.GetNote(Id(unchecked ((int)(0x11))), null));
            NUnit.Framework.Assert.AreSame(b, b.Set(Id(unchecked ((int)(0x11))), null, null));
            NUnit.Framework.Assert.IsNull(b.GetNote(Id(unchecked ((int)(0x11))), null));
        }
Exemple #5
0
        /// <exception cref="System.IO.IOException"></exception>
        internal override InMemoryNoteBucket Set(AnyObjectId noteOn, AnyObjectId noteData
                                                 , ObjectReader or)
        {
            int        cell = Cell(noteOn);
            NoteBucket b    = table[cell];

            if (b == null)
            {
                if (noteData == null)
                {
                    return(this);
                }
                LeafBucket n = new LeafBucket(prefixLen + 2);
                table[cell] = n.Set(noteOn, noteData, or);
                cnt++;
                return(this);
            }
            else
            {
                NoteBucket n = b.Set(noteOn, noteData, or);
                if (n == null)
                {
                    table[cell] = null;
                    cnt--;
                    if (cnt == 0)
                    {
                        return(null);
                    }
                    return(ContractIfTooSmall(noteOn, or));
                }
                else
                {
                    if (n != b)
                    {
                        table[cell] = n;
                    }
                }
                return(this);
            }
        }