Skip to content

Commit d6f5621

Browse files
committed
tests: added testing on sequence record writing
1 parent 62f2f82 commit d6f5621

4 files changed

Lines changed: 697 additions & 6 deletions

File tree

src/bq/writer.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -475,7 +475,9 @@ impl<W: Write> BinseqWriter<W> {
475475
write_flag(&mut self.inner, record.flag().unwrap_or(0))?;
476476
}
477477

478-
if record.is_paired() != self.encoder.header.is_paired() {
478+
// Check paired status - writer can require paired (record must have R2),
479+
// but if writer is single-end, we simply ignore any R2 data in the record.
480+
if self.encoder.header.is_paired() && !record.is_paired() {
479481
return Err(WriteError::ConfigurationMismatch {
480482
attribute: "paired",
481483
expected: self.encoder.header.is_paired(),
@@ -484,7 +486,7 @@ impl<W: Write> BinseqWriter<W> {
484486
.into());
485487
}
486488

487-
if record.is_paired() {
489+
if self.encoder.header.is_paired() {
488490
if let Some((sbuffer, xbuffer)) = self
489491
.encoder
490492
.encode_paired(record.s_seq, record.x_seq.unwrap_or_default())?

src/cbq/core/block.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -277,8 +277,9 @@ impl ColumnarBlock {
277277
.into());
278278
}
279279

280-
// Check paired status - must match exactly since it affects record structure
281-
if self.header.is_paired() != record.is_paired() {
280+
// Check paired status - writer can require paired (record must have R2),
281+
// but if writer is single-end, we simply ignore any R2 data in the record.
282+
if self.header.is_paired() && !record.is_paired() {
282283
return Err(WriteError::ConfigurationMismatch {
283284
attribute: "paired",
284285
expected: self.header.is_paired(),

src/vbq/writer.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -513,8 +513,9 @@ impl<W: Write> VBinseqWriter<W> {
513513
/// writer.finish().unwrap();
514514
/// ```
515515
pub fn push(&mut self, record: SequencingRecord) -> Result<bool> {
516-
// Check paired status - must match exactly since it affects record structure
517-
if record.is_paired() != self.header.paired {
516+
// Check paired status - writer can require paired (record must have R2),
517+
// but if writer is single-end, we simply ignore any R2 data in the record.
518+
if self.header.paired && !record.is_paired() {
518519
return Err(WriteError::ConfigurationMismatch {
519520
attribute: "paired",
520521
expected: self.header.paired,

0 commit comments

Comments
 (0)