# test_stringfun.py
# Walker M. White (wmw2)
# October 15, 2015
"""Unit test for recursive string functions."""
import cornelltest
import stringfun

def test_length():
    """Test the function length"""
    cornelltest.assert_equals(0,  stringfun.length(''))
    cornelltest.assert_equals(1,  stringfun.length('e'))
    cornelltest.assert_equals(7,  stringfun.length('ceceddd'))
    cornelltest.assert_equals(15, stringfun.length('*0;jh=52y;jh=`5'))


def test_num_e():
    """Test the function num_e"""
    cornelltest.assert_equals(0,  stringfun.num_e(''))
    cornelltest.assert_equals(1,  stringfun.num_e('e'))
    cornelltest.assert_equals(0,  stringfun.num_e('c'))
    cornelltest.assert_equals(2,  stringfun.num_e('ceceddd'))
    cornelltest.assert_equals(0,  stringfun.num_e('asdfasdfadsf'))


def test_deblank():
    """Test the function deblank"""
    cornelltest.assert_equals('',   stringfun.deblank(''));
    cornelltest.assert_equals('',   stringfun.deblank(' '));
    cornelltest.assert_equals('B',  stringfun.deblank('B'));
    cornelltest.assert_equals('BG', stringfun.deblank('B G'));
    cornelltest.assert_equals('',   stringfun.deblank('         '));


def test_depunct():
    """Test the function depunct"""
    cornelltest.assert_equals('',    stringfun.depunct('(@$*&@'));
    cornelltest.assert_equals('foo', stringfun.depunct('  f,o**o!!!'));
    cornelltest.assert_equals('foo', stringfun.depunct('f  (!*@&,.<>:\'  oo'));


def test_reverse():
    """Test the function reverse"""
    cornelltest.assert_equals('',        stringfun.reverse(''));
    cornelltest.assert_equals('esrever', stringfun.reverse('reverse'));
    cornelltest.assert_equals('amanaplanacanalpanama',
                              stringfun.reverse('amanaplanacanalpanama'));
    cornelltest.assert_equals('a man a plan a canal panama',
                              stringfun.reverse('amanap lanac a nalp a nam a'));


# Application Code
if __name__ == '__main__':
    test_length()
    test_num_e()
    test_deblank()
    test_depunct()
    test_reverse()
    print 'Module stringfun is working properly'