From 0dcbb4622a5d8bf165a7ed8a49332ea3aac354e2 Mon Sep 17 00:00:00 2001 From: Chris Ohk Date: Sun, 20 Jul 2025 21:01:42 +0900 Subject: [PATCH 1/5] test: Add crate 'rstest' --- Cargo.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/Cargo.toml b/Cargo.toml index a0e4c60..46e41a9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -21,3 +21,4 @@ tokio = { version = "1.45.1", features = ["full"] } uuid = { version = "1.17.0", features = ["v4"] } [dev-dependencies] +rstest = "0.25.0" From 0074c8113a9e29b0c28d213c3b10a7c5fd0faec1 Mon Sep 17 00:00:00 2001 From: Chris Ohk Date: Sun, 20 Jul 2025 21:03:49 +0900 Subject: [PATCH 2/5] test: Refactor function 'can_parse_language_from_valid_filename' --- src/file_manager/models.rs | 39 +++++++++++--------------------------- 1 file changed, 11 insertions(+), 28 deletions(-) diff --git a/src/file_manager/models.rs b/src/file_manager/models.rs index ea1747a..cecf564 100644 --- a/src/file_manager/models.rs +++ b/src/file_manager/models.rs @@ -77,34 +77,17 @@ impl Language { #[cfg(test)] mod tests { use super::*; - - #[test] - fn can_parse_language_from_valid_filename() { - assert_eq!( - Language::from_filename("solution.py").unwrap(), - Language::Python - ); - assert_eq!( - Language::from_filename("test.PY").unwrap(), - Language::Python - ); - - assert_eq!( - Language::from_filename("Solution.java").unwrap(), - Language::Java - ); - - assert_eq!(Language::from_filename("code.cpp").unwrap(), Language::Cpp); - - assert_eq!( - Language::from_filename("input.in").unwrap(), - Language::Input - ); - - assert_eq!( - Language::from_filename("output.out").unwrap(), - Language::Output - ); + use rstest::rstest; + + #[rstest] + #[case("solution.py", Language::Python)] + #[case("test.PY", Language::Python)] + #[case("Solution.java", Language::Java)] + #[case("code.cpp", Language::Cpp)] + #[case("input.in", Language::Input)] + #[case("output.out", Language::Output)] + fn can_parse_language_from_valid_filename(#[case] filename: &str, #[case] expected: Language) { + assert_eq!(Language::from_filename(filename).unwrap(), expected); } #[test] From ac014ad79533174bce27c2772132d8ba41c9aecc Mon Sep 17 00:00:00 2001 From: Chris Ohk Date: Sun, 20 Jul 2025 21:05:14 +0900 Subject: [PATCH 3/5] test: Refactor function 'fails_to_parse_language_from_invalid_filename' --- src/file_manager/models.rs | 36 ++++++++++++------------------------ 1 file changed, 12 insertions(+), 24 deletions(-) diff --git a/src/file_manager/models.rs b/src/file_manager/models.rs index cecf564..a7a54fd 100644 --- a/src/file_manager/models.rs +++ b/src/file_manager/models.rs @@ -90,31 +90,19 @@ mod tests { assert_eq!(Language::from_filename(filename).unwrap(), expected); } - #[test] - fn fails_to_parse_language_from_invalid_filename() { - assert_eq!( - Language::from_filename(".java").unwrap_err(), - LanguageError::InvalidFilename - ); - - assert_eq!( - Language::from_filename("py").unwrap_err(), - LanguageError::InvalidFilename - ); - - assert_eq!( - Language::from_filename("file.").unwrap_err(), - LanguageError::InvalidFilename - ); - - assert_eq!( - Language::from_filename("run.exe").unwrap_err(), - LanguageError::UnsupportedExtension("exe".to_string()) - ); - + #[rstest] + #[case(".java", LanguageError::InvalidFilename)] + #[case("py", LanguageError::InvalidFilename)] + #[case("file.", LanguageError::InvalidFilename)] + #[case("run.exe", LanguageError::UnsupportedExtension("exe".to_string()))] + #[case("", LanguageError::InvalidFilename)] + fn fails_to_parse_language_from_invalid_filename( + #[case] filename: &str, + #[case] expected_error: LanguageError, + ) { assert_eq!( - Language::from_filename("").unwrap_err(), - LanguageError::InvalidFilename + Language::from_filename(filename).unwrap_err(), + expected_error ); } From f642851ba2676e5bdbd349be6695d940ed7d3ea8 Mon Sep 17 00:00:00 2001 From: Chris Ohk Date: Sun, 20 Jul 2025 21:07:51 +0900 Subject: [PATCH 4/5] test: Refactor function 'can_parse_language_from_valid_extension' --- src/file_manager/models.rs | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/src/file_manager/models.rs b/src/file_manager/models.rs index a7a54fd..d9c972b 100644 --- a/src/file_manager/models.rs +++ b/src/file_manager/models.rs @@ -96,7 +96,7 @@ mod tests { #[case("file.", LanguageError::InvalidFilename)] #[case("run.exe", LanguageError::UnsupportedExtension("exe".to_string()))] #[case("", LanguageError::InvalidFilename)] - fn fails_to_parse_language_from_invalid_filename( + fn fail_to_parse_language_from_invalid_filename( #[case] filename: &str, #[case] expected_error: LanguageError, ) { @@ -106,14 +106,18 @@ mod tests { ); } - #[test] - fn can_parse_language_from_valid_extension() { - assert_eq!(Language::from_extension("py").unwrap(), Language::Python); - assert_eq!(Language::from_extension("java").unwrap(), Language::Java); - assert_eq!(Language::from_extension("cpp").unwrap(), Language::Cpp); - assert_eq!(Language::from_extension("txt").unwrap(), Language::Text); - assert_eq!(Language::from_extension("in").unwrap(), Language::Input); - assert_eq!(Language::from_extension("out").unwrap(), Language::Output); + #[rstest] + #[case("py", Language::Python)] + #[case("java", Language::Java)] + #[case("cpp", Language::Cpp)] + #[case("txt", Language::Text)] + #[case("in", Language::Input)] + #[case("out", Language::Output)] + fn can_parse_language_from_valid_extension( + #[case] extension: &str, + #[case] expected: Language, + ) { + assert_eq!(Language::from_extension(extension).unwrap(), expected); } #[test] From 11551a9977669a9e63121dde9410123249f28115 Mon Sep 17 00:00:00 2001 From: Chris Ohk Date: Sun, 20 Jul 2025 21:09:38 +0900 Subject: [PATCH 5/5] test: Refactor function 'fail_to_parse_language_from_invalid_extension' --- src/file_manager/models.rs | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/file_manager/models.rs b/src/file_manager/models.rs index d9c972b..eb1161f 100644 --- a/src/file_manager/models.rs +++ b/src/file_manager/models.rs @@ -120,15 +120,16 @@ mod tests { assert_eq!(Language::from_extension(extension).unwrap(), expected); } - #[test] - fn fails_to_parse_language_from_invalid_extension() { - assert_eq!( - Language::from_extension("").unwrap_err(), - LanguageError::UnsupportedExtension("".to_string()) - ); + #[rstest] + #[case("", LanguageError::UnsupportedExtension("".to_string()))] + #[case("no", LanguageError::UnsupportedExtension("no".to_string()))] + fn fail_to_parse_language_from_invalid_extension( + #[case] extension: &str, + #[case] expected_error: LanguageError, + ) { assert_eq!( - Language::from_extension("no").unwrap_err(), - LanguageError::UnsupportedExtension("no".to_string()) + Language::from_extension(extension).unwrap_err(), + expected_error ); } }