

Task

Using a well-known testing-specific library/module/suite for your language, write some tests for your language's entry in Palindrome.

If your language does not have a testing specific library well known to the language's community then state this or omit the language.



// Taken from the Lasso entry in Palindrome page
define isPalindrome(text::string) => {
 
    local(_text = string(#text)) // need to make copy to get rid of reference issues
 
    #_text -> replace(regexp(`(?:$|\W)+`), -ignorecase)
 
    local(reversed = string(#_text))
    #reversed -> reverse
 
    return #_text == #reversed
}
 
// The tests
describe(::isPalindrome) => {
    it(`throws an error when not passed a string`) => {
        expect->error =>{
            isPalindrome(43)
        }
    }
 
    it(`returns true if the string is the same forward and backwords`) => {
        expect(isPalindrome('abba'))
    }
 
    it(`returns false if the string is different forward and backwords`) => {
        expect(not isPalindrome('aab'))
    }
 
    it(`ignores spaces and punctuation`) => {
        expect(isPalindrome(`Madam, I'm Adam`))
    }
}
 
// Run the tests and get the summary
// (This normally isn't in the code as the test suite is run via command-line.)
lspec->stop