public void Item_depletion_of_non_head_resets_file_numbering_if_all_other_files_are_empty_already() { using (var queueStream = new MultiFileQueueStream(_path, 14)) { var s1 = GetStream(1); var s2 = GetStream(2); var s3 = GetStream(3); var s4 = GetStream(4); var s5 = GetStream(5); queueStream.AppendRecord(s1, s1.Length); queueStream.AppendRecord(s2, s2.Length); queueStream.AppendRecord(s3, s3.Length); queueStream.AppendRecord(s4, s4.Length); queueStream.AppendRecord(s5, s5.Length); Assert.AreEqual(3, Directory.GetFiles(_path).Length); var h1 = queueStream.ReadNextRecord(); var h2 = queueStream.ReadNextRecord(); var h3 = queueStream.ReadNextRecord(); var h4 = queueStream.ReadNextRecord(); var h5 = queueStream.ReadNextRecord(); Assert.IsNotNull(h5); queueStream.DeleteRecord(h1.Handle); queueStream.DeleteRecord(h2.Handle); queueStream.DeleteRecord(h3.Handle); queueStream.DeleteRecord(h5.Handle); var files = Directory.GetFiles(_path); Assert.AreEqual(2, files.Length); Assert.AreEqual("data_2.bin", Path.GetFileName(files[0])); Assert.AreEqual("data_3.bin", Path.GetFileName(files[1])); queueStream.DeleteRecord(h4.Handle); files = Directory.GetFiles(_path); Assert.AreEqual(1, files.Length); Assert.AreEqual("data_1.bin", Path.GetFileName(files[0])); } }
public void Item_depletion_removes_read_files() { using (var queueStream = new MultiFileQueueStream(_path, 4)) { var s1 = GetStream(1); var s2 = GetStream(2); var s3 = GetStream(3); var s4 = GetStream(4); queueStream.AppendRecord(s1, s1.Length); queueStream.AppendRecord(s2, s2.Length); queueStream.AppendRecord(s3, s3.Length); queueStream.AppendRecord(s4, s4.Length); var h1 = queueStream.ReadNextRecord(); var h2 = queueStream.ReadNextRecord(); var h3 = queueStream.ReadNextRecord(); var h4 = queueStream.ReadNextRecord(); Assert.IsNotNull(h4); Assert.AreEqual(5, Directory.GetFiles(_path).Length); queueStream.DeleteRecord(h2.Handle); Assert.AreEqual(4, Directory.GetFiles(_path).Length); queueStream.DeleteRecord(h3.Handle); Assert.AreEqual(3, Directory.GetFiles(_path).Length); queueStream.DeleteRecord(h1.Handle); Assert.AreEqual(2, Directory.GetFiles(_path).Length); queueStream.DeleteRecord(h4.Handle); Assert.AreEqual(1, Directory.GetFiles(_path).Length); } }
public void Deleting_last_record_truncates_file() { AppendRecord(1, false); AppendRecord(2, true); AppendRecord(3, false); using (var queueStream = new MultiFileQueueStream(_path)) { var handle1 = queueStream.ReadNextRecord().Handle; var handle2 = queueStream.ReadNextRecord().Handle; queueStream.DeleteRecord(handle1); queueStream.DeleteRecord(handle2); } Assert.AreEqual(0, File.Open(_firstFile, FileMode.Open).Length); }
public void Can_delete_record() { AppendRecord(1, false); AppendRecord(2, false); using (var queueStream = new MultiFileQueueStream(_path)) { var handle = queueStream.ReadNextRecord().Handle; queueStream.DeleteRecord(handle); } AssertRecord(1, 0, true); }
public void Can_append_record_to_truncated_file() { AppendRecord(1, false); using (var queueStream = new MultiFileQueueStream(_path)) { var handle = queueStream.ReadNextRecord().Handle; queueStream.DeleteRecord(handle); var s1 = GetStream(10); queueStream.AppendRecord(s1, s1.Length); Assert.AreEqual(1, queueStream.UnreadCount); } AssertRecord(10, 0, false); }
public void Item_depletion_of_head_does_nothing_to_file_count() { using (var queueStream = new MultiFileQueueStream(_path, 14)) { var s1 = GetStream(1); var s2 = GetStream(2); var s3 = GetStream(3); var s4 = GetStream(4); var s5 = GetStream(5); queueStream.AppendRecord(s1, s1.Length); queueStream.AppendRecord(s2, s2.Length); queueStream.AppendRecord(s3, s3.Length); queueStream.AppendRecord(s4, s4.Length); queueStream.AppendRecord(s5, s5.Length); Assert.AreEqual(3, Directory.GetFiles(_path).Length); var h1 = queueStream.ReadNextRecord(); var h2 = queueStream.ReadNextRecord(); var h3 = queueStream.ReadNextRecord(); var h4 = queueStream.ReadNextRecord(); var h5 = queueStream.ReadNextRecord(); Assert.IsNotNull(h5); queueStream.DeleteRecord(h5.Handle); Assert.AreEqual(3, Directory.GetFiles(_path).Length); } }