diff --git a/noodles-gff/src/io/writer/line/record.rs b/noodles-gff/src/io/writer/line/record.rs index b5ed7d443..ef44c92e7 100644 --- a/noodles-gff/src/io/writer/line/record.rs +++ b/noodles-gff/src/io/writer/line/record.rs @@ -1,5 +1,8 @@ +mod position; + use std::io::{self, Write}; +use self::position::write_position; use crate::RecordBuf; pub(crate) fn write_record(writer: &mut W, record: &RecordBuf) -> io::Result<()> @@ -15,10 +18,10 @@ where writer.write_all(record.ty().as_bytes())?; write_separator(writer)?; - write!(writer, "{}", record.start())?; + write_position(writer, record.start())?; write_separator(writer)?; - write!(writer, "{}", record.end())?; + write_position(writer, record.end())?; write_separator(writer)?; if let Some(score) = record.score() { diff --git a/noodles-gff/src/io/writer/line/record/position.rs b/noodles-gff/src/io/writer/line/record/position.rs new file mode 100644 index 000000000..eb0ef4b7d --- /dev/null +++ b/noodles-gff/src/io/writer/line/record/position.rs @@ -0,0 +1,23 @@ +use std::io::{self, Write}; + +use noodles_core::Position; + +pub(super) fn write_position(writer: &mut W, position: Position) -> io::Result<()> +where + W: Write, +{ + write!(writer, "{}", position) +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_write_position() -> io::Result<()> { + let mut buf = Vec::new(); + write_position(&mut buf, Position::MIN)?; + assert_eq!(buf, b"1"); + Ok(()) + } +}