diff --git a/src/main.rs b/src/main.rs index 5af326782882b039d5fadcb93e23bb2d0518fd74..ae48b02c656a8d233e23d51bc305ee4b1fcba1e9 100644 --- a/src/main.rs +++ b/src/main.rs @@ -94,4 +94,22 @@ mod tests { assert_eq!(response, expected); } + #[test] + fn fois() { + let (status, response) = build_response(Operation::Fois(10, 20)); + assert_eq!(status, Status::Ok); + + let expected = OperationResult::new("10 x 20", 200); + assert_eq!(response, expected); + } + + #[test] + fn diviser() { + let (status, response) = build_response(Operation::Diviser(10, 20)); + assert_eq!(status, Status::Ok); + + let expected = OperationResult::new("10 / 20", 0); + assert_eq!(response, expected); + } + } diff --git a/src/operations.rs b/src/operations.rs index e6ee1f0595052bb6448163fda133ced520d50bab..383af9d881019b2895c1125c1600da239000cd02 100644 --- a/src/operations.rs +++ b/src/operations.rs @@ -8,6 +8,8 @@ use serde::{Deserialize, Serialize}; pub enum Operation { Plus(i32,i32), Moins(i32,i32), + Fois(i32,i32), + Diviser(i32,i32), } #[derive(Deserialize, Serialize, PartialEq, Debug)] @@ -37,6 +39,14 @@ impl From<&Operation> for OperationResult { operation: format!("{op1} - {op2}"), resultat: op1 - op2, }, + Operation::Fois(op1, op2) => OperationResult { + operation: format!("{op1} x {op2}"), + resultat: op1 * op2, + }, + Operation::Diviser(op1, op2) => OperationResult { + operation: format!("{op1} / {op2}"), + resultat: op1 / op2, + }, } } } @@ -69,5 +79,23 @@ mod tests { assert_eq!(result, expected); } + + #[test] + fn fois() { + let operation = Operation::Fois(4, 5); + let result = OperationResult::from(operation); + let expected = OperationResult::new("4 x 5", 20); + + assert_eq!(result, expected); + } + + #[test] + fn diviser() { + let operation = Operation::Diviser(20, 4); + let result = OperationResult::from(operation); + let expected = OperationResult::new("20 / 4", 5); + + assert_eq!(result, expected); + } }