stanza 0.5.2

An abstract table model with customisable text formatting and renderers.
Documentation
use crate::style::{Assignability, Style, Styles};

#[test]
fn assignability() {
    assert!(!Assignability::TableOnly.at_col());
    assert!(!Assignability::TableOnly.at_row());
    assert!(!Assignability::TableOnly.at_cell());

    assert!(Assignability::ColTable.at_col());
    assert!(!Assignability::ColTable.at_row());
    assert!(!Assignability::ColTable.at_cell());

    assert!(!Assignability::RowTable.at_col());
    assert!(Assignability::RowTable.at_row());
    assert!(!Assignability::RowTable.at_cell());

    assert!(Assignability::RowColTable.at_col());
    assert!(Assignability::RowColTable.at_row());
    assert!(!Assignability::RowColTable.at_cell());

    assert!(Assignability::CellRowColTable.at_col());
    assert!(Assignability::CellRowColTable.at_row());
    assert!(Assignability::CellRowColTable.at_cell());
}

#[derive(Debug, Clone)]
struct SampleStyleOne;

#[derive(Debug, Clone)]
struct SampleStyleTwo;

impl Style for SampleStyleOne {
    fn assignability(&self) -> Assignability {
        unimplemented!()
    }
}

impl Style for SampleStyleTwo {
    fn assignability(&self) -> Assignability {
        unimplemented!()
    }
}

#[test]
fn resolve() {
    let styles = Styles::default().with(SampleStyleOne);
    assert!(SampleStyleOne::resolve(&styles).is_some());
    assert!(SampleStyleTwo::resolve(&styles).is_none());
}

#[test]
fn can_clone() {
    let styles = Styles::default().with(SampleStyleOne);
    let _ = styles.clone();
}