public virtual void TestRawIndexInputRead() { Random random = Random; RAMDirectory dir = new RAMDirectory(); IndexOutput os = dir.CreateOutput("foo", NewIOContext(random)); os.WriteBytes(READ_TEST_BYTES, READ_TEST_BYTES.Length); os.Dispose(); IndexInput @is = dir.OpenInput("foo", NewIOContext(random)); CheckReads(@is, typeof(IOException)); @is.Dispose(); os = dir.CreateOutput("bar", NewIOContext(random)); os.WriteBytes(RANDOM_TEST_BYTES, RANDOM_TEST_BYTES.Length); os.Dispose(); @is = dir.OpenInput("bar", NewIOContext(random)); CheckRandomReads(@is); @is.Dispose(); dir.Dispose(); }
static void SaveCache(IPredictionEnvironment environment, int expectedPairsHash, int expectedHistoryHash, RAMDirectory directory) { using (var writer = environment.CreateStaticDictionaryCache()) { writer.Write(FileHeaderMagic); writer.Write(expectedPairsHash); writer.Write(expectedHistoryHash); var names = directory.ListAll(); writer.Write((System.Int16)names.Length); foreach (var name in names) { var reader = directory.OpenInput(name); var length = reader.Length(); var buffer = new byte[length]; reader.ReadBytes(buffer, 0, (int)length); writer.Write(name); writer.Write((System.Int32)length); writer.Write(buffer); } } }
public virtual void TestEncodeDecode() { int iterations = RandomInts.RandomInt32Between(Random, 1, 1000); float AcceptableOverheadRatio = (float)Random.NextDouble(); int[] values = new int[(iterations - 1) * Lucene41PostingsFormat.BLOCK_SIZE + ForUtil.MAX_DATA_SIZE]; for (int i = 0; i < iterations; ++i) { int bpv = Random.Next(32); if (bpv == 0) { int value = RandomInts.RandomInt32Between(Random, 0, int.MaxValue); for (int j = 0; j < Lucene41PostingsFormat.BLOCK_SIZE; ++j) { values[i * Lucene41PostingsFormat.BLOCK_SIZE + j] = value; } } else { for (int j = 0; j < Lucene41PostingsFormat.BLOCK_SIZE; ++j) { values[i * Lucene41PostingsFormat.BLOCK_SIZE + j] = RandomInts.RandomInt32Between(Random, 0, (int)PackedInt32s.MaxValue(bpv)); } } } Directory d = new RAMDirectory(); long endPointer; { // encode IndexOutput @out = d.CreateOutput("test.bin", IOContext.DEFAULT); ForUtil forUtil = new ForUtil(AcceptableOverheadRatio, @out); for (int i = 0; i < iterations; ++i) { forUtil.WriteBlock(Arrays.CopyOfRange(values, i * Lucene41PostingsFormat.BLOCK_SIZE, values.Length), new byte[Lucene41.ForUtil.MAX_ENCODED_SIZE], @out); } endPointer = @out.Position; // LUCENENET specific: Renamed from getFilePointer() to match FileStream @out.Dispose(); } { // decode IndexInput @in = d.OpenInput("test.bin", IOContext.READ_ONCE); ForUtil forUtil = new ForUtil(@in); for (int i = 0; i < iterations; ++i) { if (Random.NextBoolean()) { forUtil.SkipBlock(@in); continue; } int[] restored = new int[Lucene41.ForUtil.MAX_DATA_SIZE]; forUtil.ReadBlock(@in, new byte[Lucene41.ForUtil.MAX_ENCODED_SIZE], restored); Assert.AreEqual(Arrays.CopyOfRange(values, i * Lucene41PostingsFormat.BLOCK_SIZE, (i + 1) * Lucene41PostingsFormat.BLOCK_SIZE), Arrays.CopyOf(restored, Lucene41PostingsFormat.BLOCK_SIZE)); } assertEquals(endPointer, @in.Position); // LUCENENET specific: Renamed from getFilePointer() to match FileStream @in.Dispose(); } }