use crate::EffectEthos;
use deep_causality::{
ActionParameterValue, BaseContext, BaseSymbol, Data, EuclideanSpace, EuclideanSpacetime,
EuclideanTime, FloatType, NumericalValue, ProposedAction,
};
use std::collections::HashMap;
pub type TestEthos = EffectEthos<
Data<NumericalValue>,
EuclideanSpace,
EuclideanTime,
EuclideanSpacetime,
BaseSymbol,
FloatType,
FloatType,
>;
pub fn always_true_predicate(_context: &BaseContext, _action: &ProposedAction) -> bool {
true
}
pub fn always_false_predicate(_context: &BaseContext, _action: &ProposedAction) -> bool {
false
}
pub fn check_speed_predicate(_context: &BaseContext, action: &ProposedAction) -> bool {
if let Some(ActionParameterValue::Number(speed)) = action.parameters().get("speed") {
*speed > 50.0
} else {
false
}
}
pub fn get_dummy_context() -> BaseContext {
BaseContext::with_capacity(0, "dummy_context", 10)
}
pub fn get_dummy_action(action_name: &str, speed: f64) -> ProposedAction {
let mut params = HashMap::new();
params.insert("speed".to_string(), ActionParameterValue::Number(speed));
ProposedAction::new(0, action_name.to_string(), params)
}