use crate::tao::form::Collection;
use zamm_yin::node_wrappers::CommonNodeTrait;
use zamm_yin::tao::form::{Form, FormTrait};
pub trait SupportsMembership: FormTrait + CommonNodeTrait {
fn add_member(&mut self, member: &Form) {
Collection::from(self.id()).add_member(member)
}
fn members(&self) -> Vec<Form> {
Collection::from(self.id()).members()
}
}
#[cfg(test)]
mod tests {
use super::*;
use crate::tao::initialize_kb;
use zamm_yin::tao::archetype::ArchetypeTrait;
impl SupportsMembership for Form {}
#[test]
fn add_and_retrieve_members() {
initialize_kb();
let member = Form::new();
let mut collection = Form::new();
SupportsMembership::add_member(&mut collection, &member);
assert_eq!(SupportsMembership::members(&collection), vec![member]);
}
}