Skip to content

Commit 785fcf9

Browse files
authored
Merge pull request #46 from Coduck-Team/43-replace-with-rstest
Refactor some unit test code with 'rstest'
2 parents adefc69 + 11551a9 commit 785fcf9

File tree

2 files changed

+45
-68
lines changed

2 files changed

+45
-68
lines changed

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,4 @@ tokio = { version = "1.45.1", features = ["full"] }
2121
uuid = { version = "1.17.0", features = ["v4"] }
2222

2323
[dev-dependencies]
24+
rstest = "0.25.0"

src/file_manager/models.rs

Lines changed: 44 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -77,83 +77,59 @@ impl Language {
7777
#[cfg(test)]
7878
mod tests {
7979
use super::*;
80-
81-
#[test]
82-
fn can_parse_language_from_valid_filename() {
83-
assert_eq!(
84-
Language::from_filename("solution.py").unwrap(),
85-
Language::Python
86-
);
87-
assert_eq!(
88-
Language::from_filename("test.PY").unwrap(),
89-
Language::Python
90-
);
91-
92-
assert_eq!(
93-
Language::from_filename("Solution.java").unwrap(),
94-
Language::Java
95-
);
96-
97-
assert_eq!(Language::from_filename("code.cpp").unwrap(), Language::Cpp);
98-
99-
assert_eq!(
100-
Language::from_filename("input.in").unwrap(),
101-
Language::Input
102-
);
103-
104-
assert_eq!(
105-
Language::from_filename("output.out").unwrap(),
106-
Language::Output
107-
);
80+
use rstest::rstest;
81+
82+
#[rstest]
83+
#[case("solution.py", Language::Python)]
84+
#[case("test.PY", Language::Python)]
85+
#[case("Solution.java", Language::Java)]
86+
#[case("code.cpp", Language::Cpp)]
87+
#[case("input.in", Language::Input)]
88+
#[case("output.out", Language::Output)]
89+
fn can_parse_language_from_valid_filename(#[case] filename: &str, #[case] expected: Language) {
90+
assert_eq!(Language::from_filename(filename).unwrap(), expected);
10891
}
10992

110-
#[test]
111-
fn fails_to_parse_language_from_invalid_filename() {
93+
#[rstest]
94+
#[case(".java", LanguageError::InvalidFilename)]
95+
#[case("py", LanguageError::InvalidFilename)]
96+
#[case("file.", LanguageError::InvalidFilename)]
97+
#[case("run.exe", LanguageError::UnsupportedExtension("exe".to_string()))]
98+
#[case("", LanguageError::InvalidFilename)]
99+
fn fail_to_parse_language_from_invalid_filename(
100+
#[case] filename: &str,
101+
#[case] expected_error: LanguageError,
102+
) {
112103
assert_eq!(
113-
Language::from_filename(".java").unwrap_err(),
114-
LanguageError::InvalidFilename
115-
);
116-
117-
assert_eq!(
118-
Language::from_filename("py").unwrap_err(),
119-
LanguageError::InvalidFilename
120-
);
121-
122-
assert_eq!(
123-
Language::from_filename("file.").unwrap_err(),
124-
LanguageError::InvalidFilename
125-
);
126-
127-
assert_eq!(
128-
Language::from_filename("run.exe").unwrap_err(),
129-
LanguageError::UnsupportedExtension("exe".to_string())
130-
);
131-
132-
assert_eq!(
133-
Language::from_filename("").unwrap_err(),
134-
LanguageError::InvalidFilename
104+
Language::from_filename(filename).unwrap_err(),
105+
expected_error
135106
);
136107
}
137108

138-
#[test]
139-
fn can_parse_language_from_valid_extension() {
140-
assert_eq!(Language::from_extension("py").unwrap(), Language::Python);
141-
assert_eq!(Language::from_extension("java").unwrap(), Language::Java);
142-
assert_eq!(Language::from_extension("cpp").unwrap(), Language::Cpp);
143-
assert_eq!(Language::from_extension("txt").unwrap(), Language::Text);
144-
assert_eq!(Language::from_extension("in").unwrap(), Language::Input);
145-
assert_eq!(Language::from_extension("out").unwrap(), Language::Output);
109+
#[rstest]
110+
#[case("py", Language::Python)]
111+
#[case("java", Language::Java)]
112+
#[case("cpp", Language::Cpp)]
113+
#[case("txt", Language::Text)]
114+
#[case("in", Language::Input)]
115+
#[case("out", Language::Output)]
116+
fn can_parse_language_from_valid_extension(
117+
#[case] extension: &str,
118+
#[case] expected: Language,
119+
) {
120+
assert_eq!(Language::from_extension(extension).unwrap(), expected);
146121
}
147122

148-
#[test]
149-
fn fails_to_parse_language_from_invalid_extension() {
150-
assert_eq!(
151-
Language::from_extension("").unwrap_err(),
152-
LanguageError::UnsupportedExtension("".to_string())
153-
);
123+
#[rstest]
124+
#[case("", LanguageError::UnsupportedExtension("".to_string()))]
125+
#[case("no", LanguageError::UnsupportedExtension("no".to_string()))]
126+
fn fail_to_parse_language_from_invalid_extension(
127+
#[case] extension: &str,
128+
#[case] expected_error: LanguageError,
129+
) {
154130
assert_eq!(
155-
Language::from_extension("no").unwrap_err(),
156-
LanguageError::UnsupportedExtension("no".to_string())
131+
Language::from_extension(extension).unwrap_err(),
132+
expected_error
157133
);
158134
}
159135
}

0 commit comments

Comments
 (0)