roopes-core 0.1.1

Roopes is a Rust Object Oriented Pattern Element System. This crate provides generic traits and implementations for typical object-oriented patterns in Rust. It is intended to be used as a cluster of utility classes for implementing OOP-architected executables -- in Rust!
Documentation
use crate::prelude::*;
use std::{
    cell::RefCell,
    rc::Rc,
};

#[test]
fn trans_handler_handle()
{
    struct DummyTransformer {}
    impl Transformer<bool, bool> for DummyTransformer
    {
        fn transform(
            &self,
            input: &bool,
        ) -> bool
        {
            !*input
        }
    }

    struct DummyHandler
    {
        value: Rc<RefCell<bool>>,
    }
    impl Handler<bool> for DummyHandler
    {
        fn handle(
            &self,
            message: &bool,
        )
        {
            *(*self.value).borrow_mut() = *message;
        }
    }

    let value = Rc::new(RefCell::new(false));
    let value_ext = value.clone();

    let trans_hand = TransformingHandler::new(
        DummyTransformer {},
        DummyHandler { value: value_ext },
    );

    assert!(!(*value.borrow()));

    trans_hand.handle(&false);

    assert!((*value.borrow()));

    trans_hand.handle(&true);

    assert!(!(*value.borrow()));
}