public void SerializesNode <TKey>()
        {
            var node       = new Node <TKey>(4);
            var serializer = new BTreeNodeBinaryFormatterSerializer <TKey>();

            Reserialize <TKey>(node, serializer);
        }
        public void SerializesEntries <TKey>(TKey entryKey1, TKey entryKey2, TKey entryKey3)
        {
            var node       = new Node <TKey>(4);
            var serializer = new BTreeNodeBinaryFormatterSerializer <TKey>();

            node.EntryList.Add(new Entry <TKey>()
            {
                Key = entryKey1, Pointer = 123
            });
            node.EntryList.Add(new Entry <TKey>()
            {
                Key = entryKey2, Pointer = 456
            });
            node.EntryList.Add(new Entry <TKey>()
            {
                Key = entryKey3, Pointer = 789
            });

            node = Reserialize(node, serializer);

            Assert.AreEqual(3, node.EntryList.Count);
            Assert.AreEqual(entryKey1, node.EntryList[0].Key);
            Assert.AreEqual(123, node.EntryList[0].Pointer);
            Assert.AreEqual(entryKey2, node.EntryList[1].Key);
            Assert.AreEqual(456, node.EntryList[1].Pointer);
            Assert.AreEqual(entryKey3, node.EntryList[2].Key);
            Assert.AreEqual(789, node.EntryList[2].Pointer);
        }
        public void SerializesEntriesWithAddress <TKey>(TKey entryKey1, TKey entryKey2, TKey entryKey3)
        {
            var node       = new Node <ValueWithAddressIndexKey <TKey> >(4);
            var serializer = new BTreeNodeBinaryFormatterSerializer <ValueWithAddressIndexKey <TKey> >();

            node.EntryList.Add(new Entry <ValueWithAddressIndexKey <TKey> >()
            {
                Key = new ValueWithAddressIndexKey <TKey>()
                {
                    A = 111, V = entryKey1
                },
                Pointer = 123
            });
            node.EntryList.Add(new Entry <ValueWithAddressIndexKey <TKey> >()
            {
                Key = new ValueWithAddressIndexKey <TKey>()
                {
                    A = 222, V = entryKey2
                },
                Pointer = 456
            });
            node.EntryList.Add(new Entry <ValueWithAddressIndexKey <TKey> >()
            {
                Key = new ValueWithAddressIndexKey <TKey>()
                {
                    A = 333, V = entryKey3
                },
                Pointer = 789
            });

            node = Reserialize(node, serializer);

            Assert.AreEqual(3, node.EntryList.Count);
            Assert.AreEqual(111, node.EntryList[0].Key.A);
            Assert.AreEqual(entryKey1, node.EntryList[0].Key.V);
            Assert.AreEqual(123, node.EntryList[0].Pointer);
            Assert.AreEqual(222, node.EntryList[1].Key.A);
            Assert.AreEqual(entryKey2, node.EntryList[1].Key.V);
            Assert.AreEqual(456, node.EntryList[1].Pointer);
            Assert.AreEqual(333, node.EntryList[2].Key.A);
            Assert.AreEqual(entryKey3, node.EntryList[2].Key.V);
            Assert.AreEqual(789, node.EntryList[2].Pointer);
        }
        public void SerializesChildren()
        {
            var serializer = new BTreeNodeBinaryFormatterSerializer <Byte>();
            var node       = new Node <Byte>(4);

            node.EntryList.Add(new Entry <byte>()
            {
                Key = 1, Pointer = 2
            });
            node.EntryList.Add(new Entry <byte>()
            {
                Key = 3, Pointer = 4
            });

            node.ChildrenAddresses.Add(123);
            node.ChildrenAddresses.Add(456);
            node.ChildrenAddresses.Add(789);

            node = Reserialize(node, serializer);

            Assert.AreEqual(123, node.ChildrenAddresses[0]);
            Assert.AreEqual(456, node.ChildrenAddresses[1]);
            Assert.AreEqual(789, node.ChildrenAddresses[2]);
        }
 public void Can_Serialize_NullableByte()
 {
     Assert.IsTrue(BTreeNodeBinaryFormatterSerializer.CanSerialize(typeof(Node <Byte?>)));
     Assert.IsTrue(BTreeNodeBinaryFormatterSerializer.CanSerialize(typeof(Node <ValueWithAddressIndexKey <Byte?> >)));
 }
 Node <TKey> Reserialize <TKey>(Node <TKey> node, BTreeNodeBinaryFormatterSerializer <TKey> serializer)
 {
     return(serializer.Deserialize(serializer.Serialize(node)));
 }
 public void Cannot_Serialize_CompoundValue_Custom()
 {
     Assert.IsFalse(BTreeNodeBinaryFormatterSerializer.CanSerialize(
                        typeof(Node <ValueWithAddressIndexKey <CompoundValue <int, CustomData> > >)));
 }
 public void Can_Serialize_Boolean()
 {
     Assert.IsTrue(BTreeNodeBinaryFormatterSerializer.CanSerialize(typeof(Node <Boolean>)));
     Assert.IsTrue(BTreeNodeBinaryFormatterSerializer.CanSerialize(typeof(Node <ValueWithAddressIndexKey <Boolean> >)));
 }
 public void Can_Serialize_CompoundValue_2()
 {
     Assert.IsTrue(BTreeNodeBinaryFormatterSerializer.CanSerialize(
                       typeof(Node <ValueWithAddressIndexKey <CompoundValue <int, string> > >)));
 }
 public void Can_Serialize_String()
 {
     Assert.IsTrue(BTreeNodeBinaryFormatterSerializer.CanSerialize(typeof(Node <String>)));
     Assert.IsTrue(BTreeNodeBinaryFormatterSerializer.CanSerialize(typeof(Node <ValueWithAddressIndexKey <String> >)));
 }
 public void Can_Serialize_DateTime()
 {
     Assert.IsTrue(BTreeNodeBinaryFormatterSerializer.CanSerialize(typeof(Node <DateTime>)));
     Assert.IsTrue(BTreeNodeBinaryFormatterSerializer.CanSerialize(typeof(Node <ValueWithAddressIndexKey <DateTime> >)));
 }
 public void Cannot_Serialize_NodeCustom_Value()
 {
     Assert.IsFalse(BTreeNodeBinaryFormatterSerializer.CanSerialize(typeof(Node <CustomData>)));
 }