Created
December 17, 2015 06:16
-
-
Save bigbeno37/7ef0a99116c2a89da234 to your computer and use it in GitHub Desktop.
First time using TDD
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Palindrome(object): | |
def is_palindrome(self, palindrome): | |
if not isinstance(palindrome, str): | |
return False | |
# Define all variables | |
lower_case_palindrome = palindrome.lower().replace(' ', '').replace(',', '').replace('.', '') | |
reversed_palindrome = self.reverse_palindrome(lower_case_palindrome) | |
if reversed_palindrome == lower_case_palindrome: | |
return True | |
return False | |
def reverse_palindrome(self, palindrome): | |
# Cast the input into an array, and reverse the elements | |
reversed_palindrome = list(reversed(palindrome)) | |
reversed_palindrome = "".join(reversed_palindrome) | |
reversed_palindrome = reversed_palindrome.replace(' ', '') | |
return reversed_palindrome | |
def create_palindrome(self, palindrome): | |
if not isinstance(palindrome, str): | |
return None | |
if self.is_palindrome(palindrome): | |
return palindrome | |
# Join the original input with the reversed input | |
created_palindrome = palindrome + "".join(list(reversed(palindrome))) | |
return created_palindrome |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import unittest | |
from Palindrome import Palindrome | |
class TestPalindrome(unittest.TestCase): | |
def test_palindrome_can_be_instantiated(self): | |
self.assertIsInstance(Palindrome(), Palindrome().__class__) | |
def test_palindrome_will_return_true_if_nothing_is_put_in(self): | |
self.assertTrue(Palindrome().is_palindrome('')) | |
def test_palindrome_will_return_false_if_array_is_put_in(self): | |
self.assertFalse(Palindrome().is_palindrome([])) | |
def test_palindrome_will_return_false_if_none_is_put_in(self): | |
self.assertFalse(Palindrome().is_palindrome(None)) | |
def test_palindrome_will_return_false_if_acdefg_is_put_in(self): | |
self.assertFalse(Palindrome().is_palindrome('abcdefg')) | |
def test_palindrome_will_return_true_if_abba_is_put_in(self): | |
self.assertTrue(Palindrome().is_palindrome('abba')) | |
def test_palindrome_will_return_true_if_a_santa_at_nasa_is_put_in(self): | |
self.assertTrue(Palindrome().is_palindrome('A Santa at Nasa')) | |
def test_palindrome_will_return_true_if_a_car_a_man_a_maraca_is_put_in(self): | |
self.assertTrue(Palindrome().is_palindrome('A car, a man, a maraca')) | |
def test_palindrome_will_return_nothing_if_nothing_is_put_into_create(self): | |
self.assertIs(Palindrome().create_palindrome(''), '') | |
def test_palindrome_will_return_none_if_empty_array_is_put_into_create(self): | |
self.assertIsNone(Palindrome().create_palindrome([])) | |
def test_palindrome_will_return_none_if_none_is_put_into_create(self): | |
self.assertIsNone(Palindrome().create_palindrome(None)) | |
def test_palindrome_will_return_abccba_if_acb_is_put_into_create(self): | |
self.assertEqual(Palindrome().create_palindrome('abc'), 'abccba') | |
def test_palindrome_will_return_abba_if_abba_is_put_into_create(self): | |
self.assertEqual(Palindrome().create_palindrome('abba'), 'abba') | |
if __name__ == '__main__': | |
unittest.main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment