@@ -24,225 +24,3 @@ def test_add(self):
2424 self .assertEqual (add (- 1 , 1 ), 0 )
2525 self .assertEqual (add (0 , 0 ), 0 )
2626 self .assertEqual (add (5.5 , 4.5 ), 10.0 )
27-
28- def test_subtract (self ):
29- self .assertEqual (subtract (5 , 3 ), 2 )
30- self .assertEqual (subtract (- 1 , 1 ), - 2 )
31- self .assertEqual (subtract (0 , 0 ), 0 )
32- self .assertEqual (subtract (5.5 , 4.5 ), 1.0 )
33-
34- def test_divide (self ):
35- self .assertEqual (divide (6 , 3 ), 2 )
36- self .assertEqual (divide (5 , 2 ), 2.5 )
37- self .assertEqual (divide (0 , 5 ), 0 )
38- with self .assertRaises (ValueError ):
39- divide (5 , 0 )
40-
41-
42- class TestFactorialFunction (unittest .TestCase ):
43- def test_factorial_zero (self ):
44- self .assertEqual (factorial (0 ), 1 )
45-
46- def test_factorial_positive_numbers (self ):
47- self .assertEqual (factorial (1 ), 1 )
48- self .assertEqual (factorial (5 ), 120 )
49- self .assertEqual (factorial (10 ), 3628800 )
50-
51- def test_factorial_negative_number (self ):
52- with self .assertRaises (ValueError ):
53- factorial (- 1 )
54-
55-
56- class TestIsPrimeFunction (unittest .TestCase ):
57- def test_is_prime_negative_and_zero (self ):
58- self .assertFalse (is_prime (- 5 ))
59- self .assertFalse (is_prime (0 ))
60-
61- def test_is_prime_one (self ):
62- self .assertFalse (is_prime (1 ))
63-
64- def test_is_prime_small_primes (self ):
65- self .assertTrue (is_prime (2 ))
66- self .assertTrue (is_prime (3 ))
67- self .assertTrue (is_prime (5 ))
68- self .assertTrue (is_prime (7 ))
69- self .assertTrue (is_prime (11 ))
70- self .assertTrue (is_prime (13 ))
71-
72- def test_is_prime_small_non_primes (self ):
73- self .assertFalse (is_prime (4 ))
74- self .assertFalse (is_prime (6 ))
75- self .assertFalse (is_prime (8 ))
76- self .assertFalse (is_prime (9 ))
77- self .assertFalse (is_prime (10 ))
78-
79- def test_is_prime_larger_numbers (self ):
80- self .assertTrue (is_prime (17 ))
81- self .assertTrue (is_prime (19 ))
82- self .assertTrue (is_prime (23 ))
83- self .assertFalse (is_prime (25 ))
84- self .assertFalse (is_prime (100 ))
85-
86-
87- class TestFibonacciFunction (unittest .TestCase ):
88- def test_fibonacci_negative (self ):
89- with self .assertRaises (ValueError ):
90- fibonacci (- 1 )
91-
92- def test_fibonacci_zero_and_one (self ):
93- self .assertEqual (fibonacci (0 ), 0 )
94- self .assertEqual (fibonacci (1 ), 1 )
95-
96- def test_fibonacci_sequence (self ):
97- self .assertEqual (fibonacci (2 ), 1 )
98- self .assertEqual (fibonacci (3 ), 2 )
99- self .assertEqual (fibonacci (4 ), 3 )
100- self .assertEqual (fibonacci (5 ), 5 )
101- self .assertEqual (fibonacci (6 ), 8 )
102- self .assertEqual (fibonacci (10 ), 55 )
103-
104-
105- class TestCalculatorClass (unittest .TestCase ):
106- def test_calculator_initialization (self ):
107- calc = Calculator ()
108- self .assertEqual (calc .memory , 0 )
109-
110- def test_calculator_basic_operations (self ):
111- calc = Calculator ()
112- self .assertEqual (calc .add (5 , 3 ), 8 )
113- self .assertEqual (calc .subtract (10 , 4 ), 6 )
114- self .assertEqual (calc .multiply (3 , 4 ), 12 )
115- self .assertEqual (calc .divide (10 , 2 ), 5 )
116-
117- def test_calculator_divide_by_zero (self ):
118- calc = Calculator ()
119- with self .assertRaises (ValueError ):
120- calc .divide (5 , 0 )
121-
122- def test_calculator_memory_operations (self ):
123- calc = Calculator ()
124- calc .store (42 )
125- self .assertEqual (calc .memory , 42 )
126- self .assertEqual (calc .recall (), 42 )
127-
128- calc .store (100 )
129- self .assertEqual (calc .recall (), 100 )
130-
131-
132- class TestStringManipulatorClass (unittest .TestCase ):
133- def test_reverse_string (self ):
134- self .assertEqual (StringManipulator .reverse_string ("hello" ), "olleh" )
135- self .assertEqual (StringManipulator .reverse_string ("" ), "" )
136- self .assertEqual (StringManipulator .reverse_string ("a" ), "a" )
137- self .assertEqual (StringManipulator .reverse_string ("12345" ), "54321" )
138-
139- def test_is_palindrome (self ):
140- self .assertTrue (StringManipulator .is_palindrome ("racecar" ))
141- self .assertTrue (StringManipulator .is_palindrome ("A man, a plan, a canal: Panama" ))
142- self .assertTrue (StringManipulator .is_palindrome ("" ))
143- self .assertTrue (StringManipulator .is_palindrome ("a" ))
144- self .assertFalse (StringManipulator .is_palindrome ("hello" ))
145- self .assertFalse (StringManipulator .is_palindrome ("Python" ))
146-
147-
148- class TestDataProcessorClass (unittest .TestCase ):
149- def test_data_processor_initialization (self ):
150- processor = DataProcessor ([1 , 2 , 3 , 4 , 5 ])
151- self .assertEqual (processor .data , [1 , 2 , 3 , 4 , 5 ])
152-
153- with self .assertRaises (ValueError ):
154- DataProcessor ([])
155-
156- def test_get_mean (self ):
157- processor = DataProcessor ([1 , 2 , 3 , 4 , 5 ])
158- self .assertEqual (processor .get_mean (), 3.0 )
159-
160- processor = DataProcessor ([10 , 20 , 30 ])
161- self .assertEqual (processor .get_mean (), 20.0 )
162-
163- def test_get_variance (self ):
164- processor = DataProcessor ([1 , 2 , 3 , 4 , 5 ])
165- self .assertEqual (processor .get_variance (), 2.5 )
166-
167- with self .assertRaises (ValueError ):
168- DataProcessor ([5 ]).get_variance ()
169-
170- def test_normalize (self ):
171- processor = DataProcessor ([1 , 2 , 3 , 4 , 5 ])
172- normalized = processor .normalize ()
173- expected = [- 1.264911064067352 , - 0.6324555320336759 , 0.0 , 0.6324555320336759 , 1.264911064067352 ]
174-
175- # Check each value with a small tolerance for floating point precision
176- for actual , expected_val in zip (normalized , expected ):
177- self .assertAlmostEqual (actual , expected_val , places = 10 )
178-
179- # Test error case with zero standard deviation
180- processor = DataProcessor ([5 , 5 , 5 ])
181- with self .assertRaises (ValueError ):
182- processor .normalize ()
183-
184-
185- class TestDateParsingFunction (unittest .TestCase ):
186- def test_parse_date_default_format (self ):
187- date_str = "2023-10-15"
188- expected = datetime (2023 , 10 , 15 )
189- self .assertEqual (parse_date (date_str ), expected )
190-
191- def test_parse_date_custom_format (self ):
192- date_str = "15/10/2023"
193- custom_format = "%d/%m/%Y"
194- expected = datetime (2023 , 10 , 15 )
195- self .assertEqual (parse_date (date_str , custom_format ), expected )
196-
197- def test_parse_date_invalid_format (self ):
198- date_str = "not-a-date"
199- with self .assertRaises (ValueError ):
200- parse_date (date_str )
201-
202-
203- class TestSafeListAccessFunction (unittest .TestCase ):
204- def test_safe_list_access_valid_index (self ):
205- lst = [10 , 20 , 30 , 40 , 50 ]
206- self .assertEqual (safe_list_access (lst , 0 ), 10 )
207- self .assertEqual (safe_list_access (lst , 2 ), 30 )
208- self .assertEqual (safe_list_access (lst , 4 ), 50 )
209-
210- def test_safe_list_access_invalid_index (self ):
211- lst = [10 , 20 , 30 ]
212- self .assertIsNone (safe_list_access (lst , 5 ))
213- self .assertIsNone (safe_list_access (lst , - 5 ))
214-
215- def test_safe_list_access_with_default (self ):
216- lst = [10 , 20 , 30 ]
217- self .assertEqual (safe_list_access (lst , 5 , "default" ), "default" )
218- self .assertEqual (safe_list_access (lst , - 5 , 999 ), 999 )
219-
220-
221- class TestMergeDictsFunction (unittest .TestCase ):
222- def test_merge_dicts_basic (self ):
223- dict1 = {"a" : 1 , "b" : 2 }
224- dict2 = {"c" : 3 , "d" : 4 }
225- result = merge_dicts (dict1 , dict2 )
226- self .assertEqual (result , {"a" : 1 , "b" : 2 , "c" : 3 , "d" : 4 })
227-
228- def test_merge_dicts_with_overwrite (self ):
229- dict1 = {"a" : 1 , "b" : 2 }
230- dict2 = {"b" : 3 , "c" : 4 }
231- result = merge_dicts (dict1 , dict2 )
232- self .assertEqual (result , {"a" : 1 , "b" : 3 , "c" : 4 })
233-
234- def test_merge_dicts_with_nested_dicts (self ):
235- dict1 = {"a" : 1 , "b" : {"x" : 10 , "y" : 20 }}
236- dict2 = {"c" : 3 , "b" : {"y" : 30 , "z" : 40 }}
237- result = merge_dicts (dict1 , dict2 )
238- self .assertEqual (result , {"a" : 1 , "b" : {"x" : 10 , "y" : 30 , "z" : 40 }, "c" : 3 })
239-
240- def test_merge_dicts_with_nested_non_dict_overwrite (self ):
241- dict1 = {"a" : 1 , "b" : {"x" : 10 }}
242- dict2 = {"b" : 20 }
243- result = merge_dicts (dict1 , dict2 )
244- self .assertEqual (result , {"a" : 1 , "b" : 20 })
245-
246-
247- if __name__ == "__main__" :
248- unittest .main ()
0 commit comments