def test_intersect_circles_numerical():
    assert_equal(
        intersect_circles(
            (-27.073924841728974, 65.92689560740814), -1.25,
            (0.5, 0.5), -72.25000000000001,
        ),
        [(-27.55938126499886, 67.07877757232733)],
    )
def test_intersect_circles_numerical():
    assert_equal(
        intersect_circles(
            (-27.073924841728974, 65.92689560740814),
            -1.25,
            (0.5, 0.5),
            -72.25000000000001,
        ),
        [(-27.55938126499886, 67.07877757232733)],
    )
def test_intersect_circles():
    # Coincident circles, no single intersection point.
    assert_equal(
        intersect_circles(
            (0, 0), 1,
            (0, 0), 1,
        ),
        [],
    )
    # No intersection, separated circles.
    assert_equal(
        intersect_circles(
            (0, 0), 1,
            (5, 0), 1,
        ),
        [],
    )
    # No intersection, concentric circles.
    assert_equal(
        intersect_circles(
            (0, 0), 1,
            (0, 0), 2,
        ),
        [],
    )
    # One point, exterior tangent.
    assert_equal(
        intersect_circles(
            (0, 0), 1,
            (2, 0), 1,
        ),
        [(1, 0)],
    )
    # One point, interior tangent.
    assert_equal(
        intersect_circles(
            (0, 0), 2,
            (1, 0), 1,
        ),
        [(2, 0)],
    )
    assert_equal(
        intersect_circles(
            (0, 1), 1.5,
            (0, 0), 2.5,
        ),
        [(0, 2.5)],
    )
    # Two points, same size circles.
    assert_equal(
        intersect_circles(
            (-1, 0), sqrt2,
            (1, 0), sqrt2,
        ),
        [(0, 1), (0, -1)],
    )
    # Two points, different size circles.
    p1, p2 = intersect_circles(
        (0, 0), sqrt2,
        (1, 0), 1,
    )
    assert_points_equal(p1, (1, 1))
    assert_points_equal(p2, (1, -1))
def test_intersect_circles():
    # Coincident circles, no single intersection point.
    assert_equal(
        intersect_circles(
            (0, 0),
            1,
            (0, 0),
            1,
        ),
        [],
    )
    # No intersection, separated circles.
    assert_equal(
        intersect_circles(
            (0, 0),
            1,
            (5, 0),
            1,
        ),
        [],
    )
    # No intersection, concentric circles.
    assert_equal(
        intersect_circles(
            (0, 0),
            1,
            (0, 0),
            2,
        ),
        [],
    )
    # One point, exterior tangent.
    assert_equal(
        intersect_circles(
            (0, 0),
            1,
            (2, 0),
            1,
        ),
        [(1, 0)],
    )
    # One point, interior tangent.
    assert_equal(
        intersect_circles(
            (0, 0),
            2,
            (1, 0),
            1,
        ),
        [(2, 0)],
    )
    assert_equal(
        intersect_circles(
            (0, 1),
            1.5,
            (0, 0),
            2.5,
        ),
        [(0, 2.5)],
    )
    # Two points, same size circles.
    assert_equal(
        intersect_circles(
            (-1, 0),
            sqrt2,
            (1, 0),
            sqrt2,
        ),
        [(0, 1), (0, -1)],
    )
    # Two points, different size circles.
    p1, p2 = intersect_circles(
        (0, 0),
        sqrt2,
        (1, 0),
        1,
    )
    assert_points_equal(p1, (1, 1))
    assert_points_equal(p2, (1, -1))