Exemplo n.º 1
0
 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]));
     }
 }
Exemplo n.º 2
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);
     }
 }
Exemplo n.º 3
0
 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);
 }
Exemplo n.º 4
0
 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);
 }
Exemplo n.º 5
0
 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);
 }
Exemplo n.º 6
0
 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);
     }
 }