triblespace 0.18.0

The Triblespace: A lightweight knowledge base for rust.
Documentation
use triblespace::core::metadata;
use triblespace::prelude::*;

fn entity_id(set: &TribleSet) -> triblespace::core::id::Id {
    *set.iter().next().expect("non-empty set").e()
}

#[test]
fn entity_optional_none_is_ignored() {
    let json_kind: Option<&'static str> = None;

    let base = entity! { _ @
        metadata::tag: metadata::KIND_MULTI,
    };

    let with_none = entity! { _ @
        metadata::tag: metadata::KIND_MULTI,
        metadata::json_kind?: json_kind,
    };

    assert_eq!(base, with_none);
    assert_eq!(entity_id(&base), entity_id(&with_none));
}

#[test]
fn entity_optional_some_affects_id_and_insertions() {
    let json_kind: Option<&'static str> = Some("string");

    let base = entity! { _ @
        metadata::tag: metadata::KIND_MULTI,
    };

    let with_some = entity! { _ @
        metadata::tag: metadata::KIND_MULTI,
        metadata::json_kind?: json_kind,
    };

    assert_ne!(entity_id(&base), entity_id(&with_some));
    assert_eq!(base.len() + 1, with_some.len());
}