1+ import unittest
2+ from typing import List
3+ from defuse import Solution
4+
5+ class TestDecrypt (unittest .TestCase ):
6+ def setUp (self ):
7+ self .s = Solution ()
8+
9+ # Example test cases
10+ def test_example1 (self ):
11+ self .assertEqual (self .s .decrypt ([5 ,7 ,1 ,4 ], 3 ), [12 ,10 ,16 ,13 ])
12+
13+ def test_example2 (self ):
14+ self .assertEqual (self .s .decrypt ([1 ,2 ,3 ,4 ], 0 ), [0 ,0 ,0 ,0 ])
15+
16+ def test_example3 (self ):
17+ self .assertEqual (self .s .decrypt ([2 ,4 ,9 ,3 ], - 2 ), [12 ,5 ,6 ,13 ])
18+
19+ # Edge cases - k = 0
20+ def test_k_zero_single_element (self ):
21+ self .assertEqual (self .s .decrypt ([5 ], 0 ), [0 ])
22+
23+ def test_k_zero_multiple_elements (self ):
24+ self .assertEqual (self .s .decrypt ([1 ,2 ,3 ,4 ,5 ], 0 ), [0 ,0 ,0 ,0 ,0 ])
25+
26+ # Edge cases - single element array
27+ def test_single_element_k_positive (self ):
28+ # Note: k can't be >= n, but k=0 is valid
29+ # Based on constraints: -(n-1) <= k <= n-1
30+ # For n=1: -0 <= k <= 0, so only k=0 is valid
31+ pass # Covered by test_k_zero_single_element
32+
33+ # Positive k cases
34+ def test_positive_k_no_wrap (self ):
35+ self .assertEqual (self .s .decrypt ([1 ,2 ,3 ,4 ,5 ], 2 ), [5 ,7 ,9 ,6 ,3 ])
36+
37+ def test_positive_k_full_wrap (self ):
38+ self .assertEqual (self .s .decrypt ([1 ,2 ,3 ], 2 ), [5 ,4 ,3 ])
39+
40+ def test_positive_k_equals_n_minus_1 (self ):
41+ self .assertEqual (self .s .decrypt ([1 ,2 ,3 ,4 ], 3 ), [9 ,8 ,7 ,6 ])
42+
43+ def test_positive_k_equals_1 (self ):
44+ self .assertEqual (self .s .decrypt ([5 ,7 ,1 ,4 ], 1 ), [7 ,1 ,4 ,5 ])
45+
46+ def test_negative_k_full_wrap (self ):
47+ self .assertEqual (self .s .decrypt ([1 ,2 ,3 ], - 2 ), [5 ,4 ,3 ])
48+
49+ def test_negative_k_equals_minus_n_minus_1 (self ):
50+ self .assertEqual (self .s .decrypt ([1 ,2 ,3 ,4 ], - 3 ), [9 ,8 ,7 ,6 ])
51+
52+ def test_negative_k_equals_minus_1 (self ):
53+ self .assertEqual (self .s .decrypt ([5 ,7 ,1 ,4 ], - 1 ), [4 ,5 ,7 ,1 ])
54+
55+ # Two element array
56+ def test_two_elements_k_positive (self ):
57+ self .assertEqual (self .s .decrypt ([3 ,5 ], 1 ), [5 ,3 ])
58+
59+ def test_two_elements_k_negative (self ):
60+ self .assertEqual (self .s .decrypt ([3 ,5 ], - 1 ), [5 ,3 ])
61+
62+ # Large values
63+ def test_large_values (self ):
64+ self .assertEqual (self .s .decrypt ([100 ,100 ,100 ,100 ], 2 ), [200 ,200 ,200 ,200 ])
65+
66+ # All same values
67+ def test_all_same_values_positive_k (self ):
68+ self .assertEqual (self .s .decrypt ([7 ,7 ,7 ,7 ,7 ], 2 ), [14 ,14 ,14 ,14 ,14 ])
69+
70+ def test_all_same_values_negative_k (self ):
71+ self .assertEqual (self .s .decrypt ([7 ,7 ,7 ,7 ,7 ], - 2 ), [14 ,14 ,14 ,14 ,14 ])
72+
73+ if __name__ == "__main__" :
74+ unittest .main ()
0 commit comments