public void ChainedRangeReadWriteTest()
        {
            var stream = new MemoryStream();

            var chain = new ListChain <DocumentId>()
            {
                new RangePostingsList()
                {
                    0, 1, 2
                },
                GetDocIds(10, 11),
                new RangePostingsList()
                {
                    12, 13, 14, 15, 100, 111
                },
            };

            using var writer = new PostingsListWriter(stream);
            writer.Write(chain);

            stream.Seek(0, SeekOrigin.Begin);

            using var reader = new PostingsListReader(stream, leaveOpen: false);
            var count        = reader.ReadCount(0);
            var deserialized = reader.Read(0);

            Assert.Equal(chain.Count, count);
            Assert.True(deserialized is RangePostingsList);
            Assert.Equal(chain, deserialized);
        }
        public void UncompressedReadWriteTest()
        {
            var stream = new MemoryStream();

            var postings = GetDocIds(0, 1, 2, 10, 11, 12, 13, 14, 15, 100, 111);

            using var writer = new PostingsListWriter(stream);
            writer.Write(postings);

            stream.Seek(0, SeekOrigin.Begin);

            using var reader = new PostingsListReader(stream, leaveOpen: false);
            var count        = reader.ReadCount(0);
            var deserialized = reader.Read(0);

            Assert.Equal(postings.Length, count);
            Assert.False(deserialized is RangePostingsList);
            Assert.Equal(postings, deserialized);
        }
        public void VarintReadWriteTest()
        {
            var stream = new MemoryStream();

            var postings = new VarintPostingsList()
            {
                0, 1, 2, 10, 11, 12, 13, 14, 15, 100, 111
            };

            using var writer = new PostingsListWriter(stream);
            writer.Write(postings);

            stream.Seek(0, SeekOrigin.Begin);

            using var reader = new PostingsListReader(stream, leaveOpen: false);
            var count        = reader.ReadCount(0);
            var deserialized = reader.Read(0);

            Assert.Equal(postings.Count, count);
            Assert.True(deserialized is VarintPostingsList);
            Assert.Equal(postings, deserialized);
        }
 public ExternalIndex(IDictionary <T, long> offsets, Stream postingsStream)
 {
     Offsets        = offsets;
     PostingsStream = postingsStream;
     reader         = new PostingsListReader(postingsStream, leaveOpen: true);
 }