Moved operand into action.
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 2s

This commit is contained in:
2026-02-08 12:57:29 -05:00
parent 3f16284682
commit eca86a53b9
8 changed files with 88 additions and 429 deletions

View File

@@ -1,9 +1,85 @@
use super::{Field, FieldType};
use crate::{message::wrapper::Operand, mtterror::MTTError};
use crate::mtterror::MTTError;
use chrono::{DateTime, Utc};
use std::time::Duration;
use uuid::Uuid;
#[derive(Clone, Debug)]
pub enum Operand {
Add,
Equal,
GreaterThan,
GreaterThanEqual,
LessThan,
LessThanEqual,
}
impl Operand {
pub fn validate(&self, x: &Field, y: &Field) -> bool {
match self {
Self::Equal => x == y,
Self::GreaterThan => x > y,
Self::GreaterThanEqual => x >= y,
Self::LessThan => x < y,
Self::LessThanEqual => x <= y,
_ => false,
}
}
}
#[cfg(test)]
mod operands {
use super::*;
#[test]
fn equals_true() {
let data: Field = Uuid::new_v4().into();
assert!(Operand::Equal.validate(&data, &data));
}
#[test]
fn equals_false() {
let x: Field = Uuid::new_v4().into();
let mut y: Field = Uuid::new_v4().into();
while x == y {
y = Uuid::new_v4().into();
}
assert!(!Operand::Equal.validate(&x, &y));
}
#[test]
fn does_greater() {
let data: Vec<Field> = vec![1.into(), 2.into(), 3.into()];
assert!(!Operand::GreaterThan.validate(&data[0], &data[1]));
assert!(!Operand::GreaterThan.validate(&data[1], &data[1]));
assert!(Operand::GreaterThan.validate(&data[2], &data[1]));
}
#[test]
fn does_greater_equal() {
let data: Vec<Field> = vec![1.into(), 2.into(), 3.into()];
assert!(!Operand::GreaterThanEqual.validate(&data[0], &data[1]));
assert!(Operand::GreaterThanEqual.validate(&data[1], &data[1]));
assert!(Operand::GreaterThanEqual.validate(&data[2], &data[1]));
}
#[test]
fn does_lesser() {
let data: Vec<Field> = vec![1.into(), 2.into(), 3.into()];
assert!(Operand::LessThan.validate(&data[0], &data[1]));
assert!(!Operand::LessThan.validate(&data[1], &data[1]));
assert!(!Operand::LessThan.validate(&data[2], &data[1]));
}
#[test]
fn does_lesser_equal() {
let data: Vec<Field> = vec![1.into(), 2.into(), 3.into()];
assert!(Operand::LessThanEqual.validate(&data[0], &data[1]));
assert!(Operand::LessThanEqual.validate(&data[1], &data[1]));
assert!(!Operand::LessThanEqual.validate(&data[2], &data[1]));
}
}
#[derive(Clone, Debug)]
pub enum CalcValue {
Calculate(Calculation),

View File

@@ -45,7 +45,7 @@ impl Query {
#[cfg(test)]
mod queries {
use super::*;
use crate::{document::field::Field, message::wrapper::Operand, name::Name};
use crate::{action::{Field, Operand}, name::Name};
use uuid::Uuid;
#[test]