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

import math

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

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

def sumAnglesAsDegrees(angles):
    return


'''
#2 - findMultiples(lst, num)
Parameters: list of ints
Returns: list of ints
'''

def findMultiples(lst, num):
    return


'''
#3 - removeMultiples(lst, num)
Parameters: list of ints
Returns: None
'''

def removeMultiples(lst, num):
    return


'''
#4 - 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)
    print("... done!")

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

    assert(findMultiples([4, 1, 70, 35, -94], 2) == [4, 70, -94])
    assert(findMultiples([4, 3, 5], 5) == [5])
    assert(findMultiples([7, 14, 21, 28, 35, 42, 49, 56, 63], 7) == [7, 14, 21, 28, 35, 42, 49, 56, 63])
    assert(findMultiples([2, 4, 6, 12, 92, 104], 11) == [ ])
    assert(findMultiples([2, 4, 6, 12, 92, 104], 1) == [2, 4, 6, 12, 92, 104])
    print("... done!")

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

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

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

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

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

    lst6 = [1, 2, 3, 4, 8, 7, 6, 5, 9, 11, 10, 12]
    assert(removeMultiples(lst6, 2) == 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()
    testFindMultiples()
    testRemoveMultiples()
    testRecursiveReverse()

testAll()