From 6f2210b165513d435a11c36ae15cef53ba714a6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Hauspie?= <michael.hauspie@univ-lille.fr> Date: Sun, 31 Mar 2024 13:19:10 +0200 Subject: [PATCH] Add Moins --- src/main.rs | 26 ++++++++++++++++++++------ src/operations.rs | 16 +++++++++++++++- 2 files changed, 35 insertions(+), 7 deletions(-) diff --git a/src/main.rs b/src/main.rs index 24cc811..5af3267 100644 --- a/src/main.rs +++ b/src/main.rs @@ -60,6 +60,13 @@ mod tests { use rocket::uri; use super::*; + fn build_response<'r>(operation: Operation) -> (Status, OperationResult) { + let client = Client::tracked(launch()).expect("valid rocket instance"); + let req = client.post(uri!(super::index)).json(&operation); + let response = req.dispatch(); + (response.status(), response.into_json::<OperationResult>().unwrap()) + } + #[test] fn index() { let client = Client::tracked(launch()).expect("valid rocket instance"); @@ -71,13 +78,20 @@ mod tests { #[test] fn plus() { - let client = Client::tracked(launch()).expect("valid rocket instance"); - let operation = Operation::Plus(3, 8); - let req = client.post(uri!(super::index)).json(&operation); - let response = req.dispatch(); - assert_eq!(response.status(), Status::Ok); + let (status, response) = build_response(Operation::Plus(3, 8)); + assert_eq!(status, Status::Ok); let expected = OperationResult::new("3 + 8", 11); - assert_eq!(response.into_json::<OperationResult>().unwrap(), expected); + assert_eq!(response, expected); + } + + #[test] + fn moins() { + let (status, response) = build_response(Operation::Moins(10, 20)); + assert_eq!(status, Status::Ok); + + let expected = OperationResult::new("10 - 20", -10); + assert_eq!(response, expected); } + } diff --git a/src/operations.rs b/src/operations.rs index 45644e7..e6ee1f0 100644 --- a/src/operations.rs +++ b/src/operations.rs @@ -7,6 +7,7 @@ use serde::{Deserialize, Serialize}; #[derive(Serialize, Deserialize, Copy, Clone, Debug)] pub enum Operation { Plus(i32,i32), + Moins(i32,i32), } #[derive(Deserialize, Serialize, PartialEq, Debug)] @@ -31,7 +32,11 @@ impl From<&Operation> for OperationResult { Operation::Plus(op1, op2) => OperationResult { operation: format!("{op1} + {op2}"), resultat: op1 + op2, - } + }, + Operation::Moins(op1, op2) => OperationResult { + operation: format!("{op1} - {op2}"), + resultat: op1 - op2, + }, } } } @@ -55,5 +60,14 @@ mod tests { assert_eq!(result, expected); } + + #[test] + fn moins() { + let operation = Operation::Moins(4, 5); + let result = OperationResult::from(operation); + let expected = OperationResult::new("4 - 5", -1); + + assert_eq!(result, expected); + } } -- GitLab