11"""
2- ***************************************************************************\n
2+ ***************************************************************************
33test_weather_codes.py is a python unit test for the python module
4- weather_codes\n
5- Author: Michael Oberdorf\n
6- Date: 2025-04-11\n
7- Last modified by: Michael Oberdorf\n
8- Last modified at: 2025-04-12 \n
9- ***************************************************************************\n
4+ weather_codes
5+ Author: Michael Oberdorf
6+ Date: 2025-04-11
7+ Last modified by: Michael Oberdorf
8+ Last modified at: 2026-01-11
9+ ***************************************************************************
1010"""
1111
1212__author__ = "Michael Oberdorf <info@oberdorf-itc.de>"
1313__status__ = "production"
14- __date__ = "2025-04-12 "
15- __version_info__ = ("1" , "0 " , "0" )
14+ __date__ = "2026-01-11 "
15+ __version_info__ = ("1" , "1 " , "0" )
1616__version__ = "." .join (__version_info__ )
1717
1818__all__ = ["TestWeatherCodes" ]
@@ -30,15 +30,48 @@ def test_translate(self):
3030
3131 # Test cases for specific languages (English and German)
3232 self .assertEqual (WeatherCodes (language = "en" ).translate (code = 3 ), "Cloudy" )
33- self .assertEqual (WeatherCodes (language = "en" ).translate (code = 199 ), "Unknown weather code" )
3433 self .assertEqual (WeatherCodes (language = "de" ).translate (code = 45 ), "Nebel" )
3534 self .assertEqual (WeatherCodes (language = "de" ).translate (code = 66 ), "Leichter Eisregen" )
3635 self .assertEqual (WeatherCodes (language = "de" ).translate (code = 81 ), "Regenschauer" )
37- self .assertEqual (WeatherCodes (language = "de" ).translate (code = 199 ), "Unknown weather code" )
3836
3937 # Test case for unsupported language (fallback to English)
4038 self .assertEqual (WeatherCodes (language = "foo" ).translate (code = 77 ), "Snow Grains" )
4139
40+ def test_invalid_code (self ):
41+ # Check if invalid code returns "Unknown weather code"
42+ self .assertEqual (WeatherCodes ().translate (code = 199 ), "Unknown weather code" )
43+ self .assertEqual (WeatherCodes (language = "en" ).translate (code = 199 ), "Unknown weather code" )
44+ self .assertEqual (WeatherCodes (language = "de" ).translate (code = 199 ), "Unknown weather code" )
45+
46+ def test_negative_code (self ):
47+ # Check if negative code returns "Unknown weather code"
48+ self .assertEqual (WeatherCodes ().translate (code = - 1 ), "Unknown weather code" )
49+ self .assertEqual (WeatherCodes (language = "en" ).translate (code = - 5 ), "Unknown weather code" )
50+ self .assertEqual (WeatherCodes (language = "de" ).translate (code = - 10 ), "Unknown weather code" )
51+
52+ def test_large_code (self ):
53+ # Check if excessively large code returns "Unknown weather code"
54+ self .assertEqual (WeatherCodes ().translate (code = 1000 ), "Unknown weather code" )
55+ self .assertEqual (WeatherCodes (language = "en" ).translate (code = 5000 ), "Unknown weather code" )
56+ self .assertEqual (WeatherCodes (language = "de" ).translate (code = 9999 ), "Unknown weather code" )
57+
58+ def float_code (self ):
59+ # Check if float that is an integer returns correct translation
60+ self .assertEqual (WeatherCodes ().translate (code = 2.0 ), "Partly cloudy" )
61+ self .assertEqual (WeatherCodes (language = "en" ).translate (code = 4.0 ), "Overcast" )
62+ self .assertEqual (WeatherCodes (language = "de" ).translate (code = 10.0 ), "Schneefall schwach" )
63+ # Check if float code returns "Unknown weather code"
64+ self .assertEqual (WeatherCodes ().translate (code = 3.5 ), "Unknown weather code" )
65+ self .assertEqual (WeatherCodes (language = "en" ).translate (code = 7.2 ), "Unknown weather code" )
66+ self .assertEqual (WeatherCodes (language = "de" ).translate (code = 12.9 ), "Unknown weather code" )
67+
68+ def test_non_integer_code (self ):
69+ # Check if non-integer code returns "Unknown weather code"
70+ self .assertEqual (WeatherCodes ().translate (code = "abc" ), "Unknown weather code" )
71+ self .assertEqual (WeatherCodes ().translate (code = None ), "Unknown weather code" )
72+ # Check if NaN is handled correctly
73+ self .assertEqual (WeatherCodes ().translate (code = float ("nan" )), "Unknown weather code" )
74+
4275
4376if __name__ == "__main__" :
4477 unittest .main ()
0 commit comments