#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Default)]
pub enum IonScheme {
#[default]
Classic,
}
impl IonScheme {
pub(crate) const fn key(self) -> &'static str {
match self {
Self::Classic => "classic",
}
}
pub const fn all() -> &'static [Self] {
&[Self::Classic]
}
pub fn charge(self, residue: &str) -> Option<f32> {
crate::generated::get_ion_charge(self.key(), residue)
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn default() {
assert_eq!(IonScheme::default(), IonScheme::Classic);
}
#[test]
fn count() {
assert_eq!(IonScheme::all().len(), 1);
}
#[test]
fn key_format() {
for s in IonScheme::all() {
let k = s.key();
assert!(
k.chars()
.all(|c| c.is_ascii_lowercase() || c == '-' || c.is_ascii_digit())
);
}
}
}