merge: Add test Case for Palindrome Recursive (#855)

* Add test Case for Palindrome Recursive

* Update Checks
This commit is contained in:
YATIN KATHURIA
2021-11-28 13:34:54 +05:30
committed by GitHub
parent 027c0d6307
commit 6f1edd16f5
2 changed files with 37 additions and 9 deletions

View File

@ -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 }

View File

@ -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')
})
})