From 6f1edd16f574e91eb2438e99791a5e5ddcef329a Mon Sep 17 00:00:00 2001 From: YATIN KATHURIA <47096348+Yatin-kathuria@users.noreply.github.com> Date: Sun, 28 Nov 2021 13:34:54 +0530 Subject: [PATCH] merge: Add test Case for Palindrome Recursive (#855) * Add test Case for Palindrome Recursive * Update Checks --- Recursive/Palindrome.js | 22 +++++++++++++--------- Recursive/test/palindrome.test.js | 24 ++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 9 deletions(-) create mode 100644 Recursive/test/palindrome.test.js diff --git a/Recursive/Palindrome.js b/Recursive/Palindrome.js index 935713517..7d315aea3 100644 --- a/Recursive/Palindrome.js +++ b/Recursive/Palindrome.js @@ -1,21 +1,25 @@ +/** + * @function Palindrome + * @description Check whether the given string is Palindrome or not. + * @param {String} str - The input string + * @return {Boolean}. + * @see [Palindrome](https://en.wikipedia.org/wiki/Palindrome) + */ -// Check whether the given string is Palindrome or not -export const Palindrome = (str) => { +const palindrome = (str) => { if (typeof str !== 'string') { - str = str.toString() + throw new TypeError('Invalid Input') } - if (str === null || str === undefined) { - return false - } - - if (str.length === 1 || str.length === 0) { + if (str.length <= 1) { return true } if (str[0] !== str[str.length - 1]) { return false } else { - return Palindrome(str.slice(1, str.length - 1)) + return palindrome(str.slice(1, str.length - 1)) } } + +export { palindrome } diff --git a/Recursive/test/palindrome.test.js b/Recursive/test/palindrome.test.js new file mode 100644 index 000000000..dee9b0af2 --- /dev/null +++ b/Recursive/test/palindrome.test.js @@ -0,0 +1,24 @@ +import { palindrome } from '../Palindrome' + +describe('Palindrome', () => { + it('expects to return true for palindrome string', () => { + const isPalindrome = palindrome('madam') + expect(isPalindrome).toBe(true) + }) + + it('expects to return true for Empty String', () => { + const isPalindrome = palindrome('') + expect(isPalindrome).toBe(true) + }) + + it('expects to return false for non-palindrome string', () => { + const isPalindrome = palindrome('foobar') + expect(isPalindrome).toBe(false) + }) + + it('Throw Error for Invalid Input', () => { + expect(() => palindrome(123)).toThrow('Invalid Input') + expect(() => palindrome(null)).toThrow('Invalid Input') + expect(() => palindrome(undefined)).toThrow('Invalid Input') + }) +})