molframe-core 0.3.0

Core types, storage and analysis contracts for molframe
Documentation
use super::*;
use crate::symbol::{DictionaryFull, Interner};

#[test]
fn the_blank_altloc_is_distinct_from_every_label() -> Result<(), DictionaryFull> {
    let mut interner = Interner::new();
    let Some(a) = AltId::labelled(interner.intern("A")?) else {
        panic!("interner identifier must fit alternate-label encoding");
    };
    assert!(AltId::BLANK.is_blank());
    assert!(!a.is_blank());
    assert_eq!(AltId::BLANK.symbol(), None);
    assert_eq!(a.symbol(), Some(interner.intern("A")?));
    Ok(())
}

#[test]
fn an_altloc_label_longer_than_one_character_is_representable() -> Result<(), DictionaryFull> {
    let mut interner = Interner::new();
    let Some(long) = AltId::labelled(interner.intern("ALT2")?) else {
        panic!("interner identifier must fit alternate-label encoding");
    };
    let resolved = long.symbol().and_then(|symbol| interner.resolve(symbol));
    assert_eq!(resolved, Some("ALT2"));
    Ok(())
}