Moved operand into action.
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 2s
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 2s
This commit is contained in:
@@ -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),
|
||||
|
||||
Reference in New Issue
Block a user