'''
15-110 Check 3
Name:
Andrew ID:
'''

import math

################################################################################

'''
#2 - sumAnglesAsDegrees(angles)
Parameters: list of floats
Returns: int
'''

def sumAnglesAsDegrees(angles):
    return


'''
#3 - onlyOdds(lst)
Parameters: list of ints
Returns: list of ints
'''

def onlyOdds(lst):
    return


'''
#4 - removeEvens(lst)
Parameters: list of ints
Returns: None
'''

def removeEvens(lst):
    return


'''
#5 - recursiveReverse(lst)
Parameters: list of values
Returns: list of values
'''

def recursiveReverse(lst):
    return


################################################################################
''' Test Functions '''

def testSumAnglesAsDegrees():
    print("Testing sumAnglesAsDegrees()...", end="")
    assert(sumAnglesAsDegrees([math.pi/6, math.pi/4, math.pi]) == 255)
    assert(sumAnglesAsDegrees([math.pi/4, math.pi/4, math.pi/4, math.pi/4]) == 180)
    assert(sumAnglesAsDegrees([math.pi/6, math.pi/6]) == 60)
    assert(sumAnglesAsDegrees([math.pi/2]) == 90)
    assert(sumAnglesAsDegrees([math.pi/6, math.pi/3, math.pi/3, math.pi, math.pi/6]) == 360)
    assert(sumAnglesAsDegrees([]) == 0)
    print("... done!")

def testOnlyOdds():
    print("Testing onlyOdds()...", end="")
    lst = [1, 2, 3, 4, 5, 6]
    lstCopy = lst + [ ]
    assert(onlyOdds(lst) == [1, 3, 5])
    assert(lst == lstCopy) # onlyOdds is non-destructive- don't change the parameter!

    assert(onlyOdds([4, 1, 70, 35, -9]) == [1, 35, -9])
    assert(onlyOdds([4, 3, 5]) == [3, 5])
    assert(onlyOdds([1,5,3,7,9,23,45,67]) == [1, 5, 3, 7, 9, 23, 45, 67])
    assert(onlyOdds([2, 4, 6, 12, 92, 104]) == [ ])
    print("... done!")

def testRemoveEvens():
    print("Testing removeEvens()...", end="")
    lst1 = [1,2,3,4,5,6]
    assert(removeEvens(lst1) == None) # removeEvens is destructive- change the parameter instead of returning!
    assert(lst1 == [1, 3, 5])

    lst2 = [4, 1, 70, 35, -9]
    assert(removeEvens(lst2) == None)
    assert(lst2 == [1, 35, -9])

    lst3 = [4, 3, 5]
    assert(removeEvens(lst3) == None)
    assert(lst3 == [3, 5])

    lst4 = [1,5,3,7,9,23,45,67]
    assert(removeEvens(lst4) == None)
    assert(lst4 == [1, 5, 3, 7, 9, 23, 45, 67])

    lst5 = [2, 4, 6, 12, 92, 104]
    assert(removeEvens(lst5) == None)
    assert(lst5 == [ ])

    lst6 = [1, 2, 3, 4, 8, 7, 6, 5, 9, 11, 10, 12]
    assert(removeEvens(lst6) == None)
    assert(lst6 == [1, 3, 7, 5, 9, 11])
    print("... done!")

def testRecursiveReverse():
    print("Testing recursiveReverse()...", end="")
    assert(recursiveReverse([1, 2, 3]) == [3,2,1])
    assert(recursiveReverse([3, 4, 5]) == [5,4,3])
    assert(recursiveReverse([4, 3, 5]) == [5,3,4])
    assert(recursiveReverse([1,2,3,4,5,6]) == [6,5,4,3,2,1])
    assert(recursiveReverse([1,5,3,7,9,23,45,67]) == [67,45,23,9,7,3,5,1])
    assert(recursiveReverse(["dog","cat","bird","bear"]) == ["bear","bird","cat","dog"])
    assert(recursiveReverse(["dog","bird","bird","bear"]) == ["bear","bird","bird","dog"])
    assert(recursiveReverse(["mouse","cat","dog","fox"]) == ["fox","dog","cat","mouse"])
    assert(recursiveReverse([]) == [])
    print("... done!")


def testAll():
    testSumAnglesAsDegrees()
    testOnlyOdds()
    testRemoveEvens()
    testRecursiveReverse()

testAll()