greed 0.5.2

A rust tool to automate trades 📈
Documentation
use crate::tactic::r#for::ForResult;
use crate::tactic::state::TacticState;
use crate::tactic::when::{WhenResult, WhenRule};

pub struct WhenAlwaysRule;

impl WhenRule for WhenAlwaysRule {
    fn evaluate(&self, _state: &TacticState, for_result: ForResult) -> WhenResult {
        WhenResult {
            conditions_satisfied: true,
            target_assets: for_result.target_assets,
        }
    }
}

impl WhenAlwaysRule {
    pub fn boxed() -> Box<dyn WhenRule> {
        Box::new(WhenAlwaysRule {})
    }
}

#[cfg(test)]
mod tests {
    use super::*;
    use crate::tactic::target::TargetAsset;

    #[test]
    fn evaluate() {
        let state = TacticState::default();
        let for_result = ForResult::fixture();
        let rule = WhenAlwaysRule {};
        let result = rule.evaluate(&state, for_result);
        let expected = WhenResult {
            conditions_satisfied: true,
            target_assets: vec![TargetAsset::fixture()],
        };
        assert_eq!(expected, result)
    }
}