sigstat 0.0.3-beta.2

Statsig Rust SDK for usage in multi-user server environments.
Documentation
use crate::{unwrap_or_return, DynamicValue};
use chrono::Duration;

pub(crate) fn compare_time(left: &DynamicValue, right: &DynamicValue, op: &str) -> bool {
    let left_num = unwrap_or_return!(left.int_value, false);
    let right_num = unwrap_or_return!(right.int_value, false);

    match op {
        "before" => left_num < right_num,
        "after" => left_num > right_num,
        "on" => {
            Duration::milliseconds(left_num).num_days()
                == Duration::milliseconds(right_num).num_days()
        }
        _ => false,
    }
}

#[cfg(test)]
mod tests {
    use crate::evaluation::comparisons::compare_time;
    use crate::DynamicValue;
    use chrono::Utc;

    #[test]
    fn test_compare_before() {
        let now = Utc::now().timestamp_millis();
        let left = DynamicValue::for_timestamp_evaluation(now);
        let right = DynamicValue::for_timestamp_evaluation(now + 1);

        assert!(compare_time(&left, &right, "before"))
    }

    #[test]
    fn test_compare_after() {
        let now = Utc::now().timestamp_millis();
        let left = DynamicValue::for_timestamp_evaluation(now + 1);
        let right = DynamicValue::for_timestamp_evaluation(now);

        assert!(compare_time(&left, &right, "after"))
    }
}