@@ -28,7 +28,7 @@ def test_domain_extension_is_required(self):
2828 self .assertFalse (is_email ('name@site' ))
2929 self .assertFalse (is_email ('name@site.' ))
3030
31- def test_domain_extension_must_be_letters_only_from_2_to_4_chars (self ):
31+ def test_domain_extension_should_be_letters_only_from_2_to_4_chars (self ):
3232 self .assertFalse (is_email ('me@foo.123' ))
3333 self .assertFalse (is_email ('me@foo.c' ))
3434 self .assertFalse (is_email ('me@foo.!!' ))
@@ -128,15 +128,15 @@ def test_string_cannot_be_empty(self):
128128 def test_string_cannot_contain_letters (self ):
129129 self .assertFalse (is_credit_card ('not a credit card for sure' ))
130130
131- def test_numbers_in_string_must_be_15_at_least (self ):
131+ def test_numbers_in_string_should_be_15_at_least (self ):
132132 self .assertFalse (is_credit_card ('1' * 14 ))
133133
134- def test_must_accept_any_valid_card_number_if_type_is_not_specified (self ):
134+ def test_should_accept_any_valid_card_number_if_type_is_not_specified (self ):
135135 for card_type in self .sample_cards :
136136 for card_number in self .sample_cards [card_type ]:
137137 self .assertTrue (is_credit_card (card_number ), 'Invalid card: %s (%s)' % (card_number , card_type ))
138138
139- def test_must_validate_only_specific_card_type_if_specified (self ):
139+ def test_should_validate_only_specific_card_type_if_specified (self ):
140140 for card_type in self .sample_cards :
141141 for card_number in self .sample_cards [card_type ]:
142142 self .assertTrue (
@@ -156,68 +156,89 @@ def test_cannot_provide_unsupported_card_type(self):
156156
157157
158158class IsCamelCaseTestCase (TestCase ):
159- def test_raises_type_error_if_provided_object_is_not_a_string (self ):
159+ def test_cannot_handle_non_string_objects (self ):
160160 self .assertRaises (TypeError , lambda : is_camel_case (None ))
161161 self .assertRaises (TypeError , lambda : is_camel_case (False ))
162162 self .assertRaises (TypeError , lambda : is_camel_case (0 ))
163163 self .assertRaises (TypeError , lambda : is_camel_case ([]))
164164 self .assertRaises (TypeError , lambda : is_camel_case ({'a' : 1 }))
165165
166- def test_returns_false_for_empty_string (self ):
166+ def test_string_cannot_be_empty (self ):
167167 self .assertFalse (is_camel_case ('' ))
168+ self .assertFalse (is_camel_case (' ' ))
168169
169- def test_returns_false_for_lowercase_string (self ):
170+ def test_string_cannot_be_all_lowercase (self ):
170171 self .assertFalse (is_camel_case ('lowercase' ))
171172
172- def test_returns_false_for_uppercase_string (self ):
173+ def test_string_cannot_be_all_uppercase (self ):
173174 self .assertFalse (is_camel_case ('UPPERCASE' ))
174175
175- def test_returns_false_if_string_has_spaces (self ):
176+ def test_string_cannot_contain_spaces (self ):
176177 self .assertFalse (is_camel_case (' CamelCase ' ))
177178
178- def test_returns_false_if_string_starts_with_number (self ):
179+ def test_string_cannot_start_with_number (self ):
179180 self .assertFalse (is_camel_case ('1000Times' ))
180181
181- def test_returns_false_if_string_contains_invalid_chars (self ):
182+ def test_string_cannot_contain_invalid_chars (self ):
182183 self .assertFalse (is_camel_case ('<#NotCamelCaseHere!?>' ))
183184
184- def test_returns_true_if_camel_case (self ):
185+ def test_should_accept_valid_camel_case_string (self ):
185186 self .assertTrue (is_camel_case ('Camel' ))
186187 self .assertTrue (is_camel_case ('CamelCase' ))
188+ self .assertTrue (is_camel_case ('camelCase' ))
187189 self .assertTrue (is_camel_case ('CamelCaseTOO' ))
188190 self .assertTrue (is_camel_case ('ACamelCaseIsAlsoAStringLikeThis1' ))
189191 self .assertTrue (is_camel_case ('camelCaseStartingLowerEndingUPPER' ))
190192
191193
192194class IsSnakeCaseTestCase (TestCase ):
193- def test_raises_type_error_if_provided_object_is_not_a_string (self ):
195+ def test_cannot_handle_non_string_objects (self ):
194196 self .assertRaises (TypeError , lambda : is_snake_case (None ))
195197 self .assertRaises (TypeError , lambda : is_snake_case (False ))
196198 self .assertRaises (TypeError , lambda : is_snake_case (0 ))
197199 self .assertRaises (TypeError , lambda : is_snake_case ([]))
198200 self .assertRaises (TypeError , lambda : is_snake_case ({'a' : 1 }))
199201
200- def test_returns_true_if_custom_separator_is_used (self ):
201- s = 'snake-string-with-dashes'
202- self .assertFalse (is_snake_case (s ))
203- self .assertTrue (is_snake_case (s , separator = '-' ))
204-
205- def test_returns_false_for_no_snake_string (self ):
202+ def test_string_cannot_be_blank (self ):
206203 self .assertFalse (is_snake_case ('' ))
207- self .assertFalse (is_snake_case ('foo' ))
204+ self .assertFalse (is_snake_case (' ' ))
205+
206+ def test_string_cannot_be_lowercase_letters_only (self ):
207+ self .assertFalse (is_snake_case ('lowercaseonly' ))
208+
209+ def test_string_cannot_be_camel_case (self ):
208210 self .assertFalse (is_snake_case ('Banana' ))
211+
212+ def test_string_cannot_be_all_uppercase (self ):
209213 self .assertFalse (is_snake_case ('HELLO' ))
210- self . assertFalse ( is_snake_case ( 'HELLO_WORLD' ))
211- self . assertFalse ( is_snake_case ( '_hello_world_' ))
214+
215+ def test_string_cannot_contain_bad_signs ( self ):
212216 self .assertFalse (is_snake_case ('1_no_snake' ))
213217 self .assertFalse (is_snake_case ('%_no_snake' ))
218+ self .assertFalse (is_snake_case ('no_snake#' ))
219+
220+ def test_should_consider_single_chars_only_snake_sequence_invalid (self ):
214221 self .assertFalse (is_snake_case ('a_b_c_d_e' ))
222+
223+ def test_snake_string_cannot_be_uppercase (self ):
224+ self .assertFalse (is_snake_case ('HELLO_WORLD' ))
215225
216- def test_returns_true_for_snake_strings (self ):
226+ def test_string_cannot_start_with_underscore (self ):
227+ self .assertFalse (is_snake_case ('_hello_world' ))
228+
229+ def test_string_cannot_end_with_underscore (self ):
230+ self .assertFalse (is_snake_case ('hello_world_' ))
231+
232+ def test_should_accept_valid_snake_strings (self ):
217233 self .assertTrue (is_snake_case ('hello_world' ))
218234 self .assertTrue (is_snake_case ('snake_case_string' ))
219235 self .assertTrue (is_snake_case ('snake_2' ))
220236 self .assertTrue (is_snake_case ('a_snake_string_4_you' ))
237+
238+ def test_should_consider_custom_separator (self ):
239+ s = 'snake-string-with-dashes'
240+ self .assertFalse (is_snake_case (s ))
241+ self .assertTrue (is_snake_case (s , separator = '-' ))
221242
222243
223244class ReverseTestCase (TestCase ):
@@ -231,7 +252,7 @@ def test_returns_reversed_string(self):
231252
232253
233254class CamelCaseToSnakeTestCase (TestCase ):
234- def test_raises_type_error_if_provided_object_is_not_a_string (self ):
255+ def test_cannot_handle_non_string_objects (self ):
235256 self .assertRaises (TypeError , lambda : camel_case_to_snake (None ))
236257 self .assertRaises (TypeError , lambda : camel_case_to_snake (False ))
237258 self .assertRaises (TypeError , lambda : camel_case_to_snake (0 ))
@@ -274,7 +295,7 @@ def test_should_use_provided_separator(self):
274295
275296
276297class SnakeCaseToCamelTestCase (TestCase ):
277- def test_raises_type_error_if_provided_object_is_not_a_string (self ):
298+ def test_cannot_handle_non_string_objects (self ):
278299 self .assertRaises (TypeError , lambda : snake_case_to_camel (None ))
279300 self .assertRaises (TypeError , lambda : snake_case_to_camel (False ))
280301 self .assertRaises (TypeError , lambda : snake_case_to_camel (0 ))
@@ -296,7 +317,7 @@ def test_returns_camel_case_from_correct_snake_case(self):
296317 self .assertEqual (snake_case_to_camel ('the_snake_is_green' ), 'TheSnakeIsGreen' )
297318 self .assertEqual (snake_case_to_camel ('the_number_of_the_beast_is_666' ), 'TheNumberOfTheBeastIs666' )
298319
299- def test_returns_camel_case_for_custom_separator (self ):
320+ def test_should_consider_custom_separator (self ):
300321 s = 'snake-case-using-dashes'
301322 self .assertEqual (snake_case_to_camel (s ), s )
302323 self .assertEqual (snake_case_to_camel (s , separator = '-' ), 'SnakeCaseUsingDashes' )
0 commit comments