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 RAMDirectory LoadCache(IPredictionEnvironment environment, int expectedPairsHash, int expectedHistoryHash) { RAMDirectory directory = null; using (var reader = environment.OpenStaticDictionaryCache()) { try { var actualFileHeaderMagic = reader.ReadInt32(); var actualPairsHash = reader.ReadInt32(); var actualHistoryHash = reader.ReadInt32(); if (FileHeaderMagic == actualFileHeaderMagic && expectedPairsHash == actualPairsHash && expectedHistoryHash == actualHistoryHash) { directory = new RAMDirectory(); var nameCount = reader.ReadInt16(); for (var nameIndex = 0; nameIndex < nameCount; nameIndex++) { var name = reader.ReadString(); var length = reader.ReadInt32(); var bytes = reader.ReadBytes(length); using (var output = directory.CreateOutput(name)) { output.WriteBytes(bytes, length); } } } } catch { directory = null; } } return(directory); }
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(); } }