cranpose-liquid 0.9.27

Glass controls, themes and motion for Cranpose apps
Documentation
use super::*;

struct Numbers {
    content: ScopeContent<u32>,
}

impl Numbers {
    fn number(&self, value: u32) {
        self.content.push(value);
    }
}

#[test]
fn a_scope_keeps_the_order_its_content_declared() {
    let collected = ScopeContent::collect(
        |content| Numbers { content },
        |scope| {
            scope.number(3);
            scope.number(1);
            scope.number(2);
        },
    );
    assert_eq!(collected, vec![3, 1, 2]);
}

#[test]
fn content_that_declares_nothing_collects_nothing() {
    let collected = ScopeContent::collect(|content| Numbers { content }, |_| {});
    assert!(collected.is_empty());
}

#[test]
fn each_collection_starts_from_an_empty_list() {
    let build = |content| Numbers { content };
    let first = ScopeContent::collect(build, |scope| scope.number(7));
    let second = ScopeContent::collect(build, |scope| scope.number(8));
    assert_eq!(first, vec![7]);
    assert_eq!(second, vec![8]);
}