Skip to content

Instantly share code, notes, and snippets.

@bigbeno37
Created December 17, 2015 06:16
Show Gist options
  • Save bigbeno37/7ef0a99116c2a89da234 to your computer and use it in GitHub Desktop.
Save bigbeno37/7ef0a99116c2a89da234 to your computer and use it in GitHub Desktop.
First time using TDD
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
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