def test_polygonCircle():
	# Corner
	s1c1 = intersections.between(s1, Circle(Vector(0,0), 2))
	assert len(s1c1) == 2
	assert listEqualsInRange(s1c1, \
		[Vector(2,0), Vector(0,2)], .01)
	# Edge
	s1c2 = intersections.between(s1, Circle(Vector(-4,5), 5))
	assert len(s1c2) == 2
	assert listEqualsInRange(s1c2,
		[Vector(0,2), Vector(0,8)], .01)
	# No intersect
	s1c3 = intersections.between(s1, Circle(Vector(-4, 5), 3))
	assert len(s1c3) == 0
def test_polygonPolygon():
	assert len(intersections.between(s0,s0)) == 0
	assert len(intersections.between(s0,s1)) == 0
	s1s1 = intersections.between(s1, s1, pThresh=.001)
	assert len(s1s1) == 4
	assert listEqualsInRange(s1s1, \
		[Vector(5,0), Vector(10,5), Vector(5,10), Vector(0,5)], .001)
	s1s1c = intersections.between(s1.copy().move(Vector(1,1)), s1)
	assert len(s1s1c) == 2
	assert listEqualsInRange(s1s1c, \
		[Vector(10,1), Vector(1,10)], .001)
	
	# Literally a corner case
	s1s2 = intersections.between(s1, s2)
	assert len(s1s2) == 2
	assert listEqualsInRange(s1s2, \
		[Vector(0,5), Vector(5,0)], .001)
def test_circleCircle():
	assert len(intersections.between(c0,c0)) == 0
	assert len(intersections.between(c1,c0)) == 0
	assert len(intersections.between(c1,c1)) == 0
	# Intersections
	c1c2 = intersections.between(c1, c2)
	assert len(c1c2) == 2
	assert listEqualsInRange(c1c2, \
		[Vector(2,4), Vector(2,-4)], .01)
	# Outside
	c1c3 = intersections.between(c1,c3)
	assert len(c1c3) == 0
	# Inside
	c1c4 = intersections.between(c1,c4)
	assert len(c1c4) == 0
	# Angled
	c1c1c = intersections.between( \
		c1, c1.copy().move(Vector(-5, 5)))
	assert len(c1c1c) == 2
	assert listEqualsInRange(c1c1c, \
		[Vector(5,5), Vector(0,0)], .01)