pub mod base_content;
pub mod duplication;
pub mod fast_stats;
pub mod gc;
pub mod insert_size;
pub mod kmer;
pub mod length;
pub mod quality;
pub mod stats;
pub use base_content::BaseContent;
pub use duplication::DuplicationStats;
pub use fast_stats::FastQcStats;
pub use gc::GcStats;
pub use insert_size::{InsertSizeEstimator, InsertSizeStats};
pub use kmer::{FiveMerStats, KmerStats};
pub use length::LengthStats;
pub use quality::QualityStats;
pub use stats::{FilteringStats, QcStats, QcSummary};
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default, Serialize, Deserialize)]
pub enum Mode {
#[default]
Short,
Long,
}
impl Mode {
#[inline]
pub fn default_capacity(self) -> usize {
match self {
Mode::Short => 300,
Mode::Long => 50_000,
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_mode_default() {
let mode = Mode::default();
assert_eq!(mode, Mode::Short);
}
#[test]
fn test_mode_capacity() {
assert_eq!(Mode::Short.default_capacity(), 300);
assert_eq!(Mode::Long.default_capacity(), 50_000);
}
#[test]
fn test_mode_serialize() {
let mode = Mode::Long;
let json = serde_json::to_string(&mode).unwrap();
assert_eq!(json, "\"Long\"");
}
}