public void SortedVectors_DefaultValue()
    {
        var test = new SortedVectorTest <SortedVectorDefaultValueItem>
        {
            IntVector = new List <SortedVectorDefaultValueItem>(),
        };

        // Verify that we actually write 5 in the output even though it has a default value set.
        SortedVectorDefaultValueItem myItem = new SortedVectorDefaultValueItem();

        byte[] data         = new byte[1024 * 1024];
        int    bytesWritten = FlatBufferSerializer.Default.Serialize(myItem, data);

        Assert.Equal(5, myItem.Value);
        //Assert.Equal(18, bytesWritten); // table offset (4), vtable offset (4), vtable headers (6), data (4)

        const int Iterations = 1000;
        Random    random     = new Random();

        for (int i = 0; i < Iterations; ++i)
        {
            test.IntVector.Add(new SortedVectorDefaultValueItem {
                Value = random.Next()
            });
        }

        test.IntVector.Add(myItem);

        bytesWritten = FlatBufferSerializer.Default.Serialize(test, data);

        var parsed = FlatBufferSerializer.Default.Parse <SortedVectorTest <SortedVectorDefaultValueItem> >(data);
        var table  = Oracle.SortedVectorTest.GetRootAsSortedVectorTest(new FlatBuffers.ByteBuffer(data));

        VerifySorted <IList <SortedVectorDefaultValueItem>, SortedVectorDefaultValueItem, int>(parsed.IntVector, i => i.Value, i => table.Int32(i).Value.Value, t => table.Int32ByKey(t) != null, Comparer <int> .Default);
    }
    public void SortedVectors()
    {
        var test = new SortedVectorTest <SortedVectorItem <int> >
        {
            Double       = new List <SortedVectorItem <double> >(),
            IntVector    = new List <SortedVectorItem <int> >(),
            StringVector = new List <SortedVectorItem <string> >(),
        };

        const int Iterations = 1000;
        Random    random     = new Random();

        for (int i = 0; i < Iterations; ++i)
        {
            string value = Guid.NewGuid().ToString();
            test.StringVector.Add(new SortedVectorItem <string> {
                Value = value
            });
            test.IntVector.Add(new SortedVectorItem <int> {
                Value = random.Next()
            });
            test.Double.Add(new SortedVectorItem <double> {
                Value = random.NextDouble() * random.Next()
            });
        }

        byte[] data         = new byte[1024 * 1024];
        int    bytesWritten = FlatBufferSerializer.Default.Serialize(test, data);

        var parsed = FlatBufferSerializer.Default.Parse <SortedVectorTest <SortedVectorItem <int> > >(data);
        var table  = Oracle.SortedVectorTest.GetRootAsSortedVectorTest(new FlatBuffers.ByteBuffer(data));

        VerifySorted <IList <SortedVectorItem <string> >, SortedVectorItem <string>, string>(parsed.StringVector, i => i.Value, i => table.String(i)?.Value, t => table.StringByKey(t) != null, new Utf8StringComparer());
        VerifySorted <IList <SortedVectorItem <int> >, SortedVectorItem <int>, int>(parsed.IntVector, i => i.Value, i => table.Int32(i).Value.Value, t => table.Int32ByKey(t) != null, Comparer <int> .Default);
        VerifySorted <IList <SortedVectorItem <double> >, SortedVectorItem <double>, double>(parsed.Double, i => i.Value, i => table.Double(i).Value.Value, t => table.DoubleByKey(t) != null, Comparer <double> .Default);
    }