3
3
import unittest
4
4
from typing import List
5
5
6
+
6
7
def next_letter_greater (letters : List [str ], target : str ) -> str :
7
8
if not letters :
8
9
raise ValueError ("The input list 'letters' cannot be empty." )
@@ -22,35 +23,36 @@ def next_letter_greater(letters: List[str], target: str) -> str:
22
23
23
24
return letters [left % n ]
24
25
26
+
25
27
class TestNextLetterGreater (unittest .TestCase ):
26
28
def test_single_element (self ):
27
- self .assertEqual (next_letter_greater (['c' ], 'a' ), 'c' )
28
- self .assertEqual (next_letter_greater (['c' ], 'c' ), 'c' )
29
+ self .assertEqual (next_letter_greater (["c" ], "a" ), "c" )
30
+ self .assertEqual (next_letter_greater (["c" ], "c" ), "c" )
29
31
30
32
def test_basic_cases (self ):
31
- self .assertEqual (next_letter_greater (['c' , 'f' , 'j' ], 'a' ), 'c' )
32
- self .assertEqual (next_letter_greater (['c' , 'f' , 'j' ], 'c' ), 'f' )
33
- self .assertEqual (next_letter_greater (['c' , 'f' , 'j' ], 'd' ), 'f' )
34
- self .assertEqual (next_letter_greater (['c' , 'f' , 'j' ], 'g' ), 'j' )
35
- self .assertEqual (next_letter_greater (['c' , 'f' , 'j' ], 'j' ), 'c' )
33
+ self .assertEqual (next_letter_greater (["c" , "f" , "j" ], "a" ), "c" )
34
+ self .assertEqual (next_letter_greater (["c" , "f" , "j" ], "c" ), "f" )
35
+ self .assertEqual (next_letter_greater (["c" , "f" , "j" ], "d" ), "f" )
36
+ self .assertEqual (next_letter_greater (["c" , "f" , "j" ], "g" ), "j" )
37
+ self .assertEqual (next_letter_greater (["c" , "f" , "j" ], "j" ), "c" )
36
38
37
39
def test_wrap_around (self ):
38
- self .assertEqual (next_letter_greater (['c' , 'f' , 'j' ], 'k' ), 'c' )
40
+ self .assertEqual (next_letter_greater (["c" , "f" , "j" ], "k" ), "c" )
39
41
40
42
def test_duplicates (self ):
41
- self .assertEqual (next_letter_greater (['c' , 'c' , 'f' , 'f' , 'j' , 'j' ], 'a' ), 'c' )
42
- self .assertEqual (next_letter_greater (['c' , 'c' , 'f' , 'f' , 'j' , 'j' ], 'c' ), 'f' )
43
- self .assertEqual (next_letter_greater (['c' , 'c' , 'f' , 'f' , 'j' , 'j' ], 'f' ), 'j' )
44
- self .assertEqual (next_letter_greater (['c' , 'c' , 'f' , 'f' , 'j' , 'j' ], 'j' ), 'c' )
43
+ self .assertEqual (next_letter_greater (["c" , "c" , "f" , "f" , "j" , "j" ], "a" ), "c" )
44
+ self .assertEqual (next_letter_greater (["c" , "c" , "f" , "f" , "j" , "j" ], "c" ), "f" )
45
+ self .assertEqual (next_letter_greater (["c" , "c" , "f" , "f" , "j" , "j" ], "f" ), "j" )
46
+ self .assertEqual (next_letter_greater (["c" , "c" , "f" , "f" , "j" , "j" ], "j" ), "c" )
45
47
46
48
def test_large_list (self ):
47
- letters = ['a' , 'b' , 'c' , 'd' , 'e' ]
48
- self .assertEqual (next_letter_greater (letters , 'c' ), 'd' )
49
- self .assertEqual (next_letter_greater (letters , 'e' ), 'a' )
49
+ letters = ["a" , "b" , "c" , "d" , "e" ]
50
+ self .assertEqual (next_letter_greater (letters , "c" ), "d" )
51
+ self .assertEqual (next_letter_greater (letters , "e" ), "a" )
50
52
51
53
def test_edge_cases (self ):
52
54
with self .assertRaises (ValueError ):
53
- next_letter_greater ([], 'a' )
55
+ next_letter_greater ([], "a" )
54
56
55
57
def test_nonexistent_target (self ):
56
- self .assertEqual (next_letter_greater (['a' , 'b' , 'd' , 'e' ], 'c' ), 'd' )
58
+ self .assertEqual (next_letter_greater (["a" , "b" , "d" , "e" ], "c" ), "d" )
0 commit comments