Skip to content

Commit d616933

Browse files
committed
test: Move unit tests for Language into models.rs
1 parent ca12b14 commit d616933

File tree

3 files changed

+105
-90
lines changed

3 files changed

+105
-90
lines changed

src/file_manager/models.rs

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,3 +112,108 @@ impl Language {
112112
}
113113
}
114114
}
115+
116+
#[cfg(test)]
117+
mod tests {
118+
use super::*;
119+
120+
#[test]
121+
fn test_language_from_filename_success() {
122+
assert_eq!(
123+
Language::from_filename("solution.py").unwrap(),
124+
Language::Python
125+
);
126+
assert_eq!(
127+
Language::from_filename("test.PY").unwrap(),
128+
Language::Python
129+
);
130+
131+
assert_eq!(
132+
Language::from_filename("Solution.java").unwrap(),
133+
Language::Java
134+
);
135+
136+
assert_eq!(Language::from_filename("code.cpp").unwrap(), Language::Cpp);
137+
138+
assert_eq!(
139+
Language::from_filename("input.in").unwrap(),
140+
Language::Input
141+
);
142+
143+
assert_eq!(
144+
Language::from_filename("output.out").unwrap(),
145+
Language::Output
146+
);
147+
}
148+
149+
#[test]
150+
fn test_language_from_filename_errors() {
151+
assert_eq!(
152+
Language::from_filename(".java").unwrap_err(),
153+
LanguageError::InvalidFilename
154+
);
155+
156+
assert_eq!(
157+
Language::from_filename("py").unwrap_err(),
158+
LanguageError::InvalidFilename
159+
);
160+
161+
assert_eq!(
162+
Language::from_filename("file.").unwrap_err(),
163+
LanguageError::InvalidFilename
164+
);
165+
166+
assert_eq!(
167+
Language::from_filename("run.exe").unwrap_err(),
168+
LanguageError::UnsupportedExtension("exe".to_string())
169+
);
170+
171+
assert_eq!(
172+
Language::from_filename("").unwrap_err(),
173+
LanguageError::InvalidFilename
174+
);
175+
}
176+
177+
#[test]
178+
fn test_language_from_extension_success() {
179+
assert_eq!(Language::from_extension("py").unwrap(), Language::Python);
180+
assert_eq!(Language::from_extension("rs").unwrap(), Language::Rust);
181+
assert_eq!(Language::from_extension("java").unwrap(), Language::Java);
182+
assert_eq!(Language::from_extension("cpp").unwrap(), Language::Cpp);
183+
assert_eq!(
184+
Language::from_extension("js").unwrap(),
185+
Language::Javascript
186+
);
187+
assert_eq!(
188+
Language::from_extension("ts").unwrap(),
189+
Language::Typescript
190+
);
191+
assert_eq!(Language::from_extension("c").unwrap(), Language::C);
192+
assert_eq!(Language::from_extension("cs").unwrap(), Language::Csharp);
193+
assert_eq!(Language::from_extension("go").unwrap(), Language::Go);
194+
assert_eq!(Language::from_extension("kt").unwrap(), Language::Kotlin);
195+
assert_eq!(Language::from_extension("rb").unwrap(), Language::Ruby);
196+
assert_eq!(Language::from_extension("php").unwrap(), Language::Php);
197+
assert_eq!(Language::from_extension("pl").unwrap(), Language::Perl);
198+
assert_eq!(Language::from_extension("pas").unwrap(), Language::Pascal);
199+
assert_eq!(Language::from_extension("ml").unwrap(), Language::Ocaml);
200+
assert_eq!(Language::from_extension("scala").unwrap(), Language::Scala);
201+
assert_eq!(Language::from_extension("d").unwrap(), Language::D);
202+
assert_eq!(Language::from_extension("txt").unwrap(), Language::Text);
203+
assert_eq!(Language::from_extension("md").unwrap(), Language::Markdown);
204+
assert_eq!(Language::from_extension("in").unwrap(), Language::Input);
205+
assert_eq!(Language::from_extension("out").unwrap(), Language::Output);
206+
}
207+
208+
#[test]
209+
fn test_language_from_extension_errors() {
210+
assert_eq!(
211+
Language::from_extension("").unwrap_err(),
212+
LanguageError::UnsupportedExtension("".to_string())
213+
);
214+
assert_eq!(
215+
Language::from_extension("no").unwrap_err(),
216+
LanguageError::UnsupportedExtension("no".to_string())
217+
);
218+
}
219+
}

tests/file_manager/language.rs

Lines changed: 0 additions & 89 deletions
This file was deleted.

tests/file_manager/mod.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1 @@
11
pub mod handlers;
2-
pub mod language;

0 commit comments

Comments
 (0)