Skip to content

Commit 986e0a5

Browse files
committed
test defuse
1 parent 90f3964 commit 986e0a5

File tree

2 files changed

+74
-0
lines changed

2 files changed

+74
-0
lines changed
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
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

Comments
 (0)