def testPointNotInXY(self): assertThrows(lambda: Ray({"x": 0, "z": 0}, 0, 1), ValueError)
def testEmptyConstructor(self): assertThrows(lambda: Ray(), Exception)
def testAngleLessThan0(self): assertThrows(lambda: Ray({"x": 0, "y": 0}, -0.1, 1), ValueError)
def testDistanceCantBeLessThanZero(self): assertThrows(lambda: Ray({"x": 0, "y": 0}, 1, -1), ValueError)
def testTooManyVariablesThrows(self): assertThrows(lambda: Ray({"x": 0, "y": 0, "z": 0}, 0, 1), ValueError)
def testAngleGreaterThan2pi(self): assertThrows(lambda: Ray({"x": 0, "y": 0}, 2 * pi, 1), ValueError)
def testSingleVariableRayThrows(self): assertThrows(lambda: Ray({"x": 0}, 0, 1), ValueError)
def testInvalidConstructorInteger(self): assertThrows(lambda: TropicalCurve(2), TypeError)
def testTooManyVariables(self): x = Variable("x") y = Variable("y") z = Variable("z") assertThrows(lambda: TropicalCurve(x + y + z), ValueError)
def testNotEnoughVariables(self): x = Variable("x") assertThrows(lambda: TropicalCurve(Polynomial(input=x)), ValueError)
def testInvalidConstructorVariable(self): x = Variable("x") assertThrows(lambda: TropicalCurve(x), TypeError)