@@ -77,83 +77,59 @@ impl Language {
7777#[ cfg( test) ]
7878mod 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