def test_rescale_to_fit(mocker): mocker.spy(mobject.mobject.Mobject, 'length_over_dim') mocker.patch.object(mobject.mobject.Mobject, 'stretch') mocker.patch.object(mobject.mobject.Mobject, 'scale') mock_dim = 1 mock_length = 3 points = np.random.rand(10, 3) m = Mobject() m.points = points m.rescale_to_fit(mock_length, mock_dim, stretch=True) m.length_over_dim.assert_called_once() assert m.length_over_dim.call_args == call(m, mock_dim) length = m.length_over_dim(mock_dim) m.stretch.assert_called_once_with(mock_length / length, mock_dim)
def test_replace(): m1_points = np.random.rand(10, 3) m1 = Mobject() m1.points = m1_points.copy() m2_points = np.random.rand(10, 3) m2 = Mobject() m2.points = m2_points.copy() def get_ratio(mob): return mob.length_over_dim(0) / mob.length_over_dim(1) m1_orig_ratio = get_ratio(m1) assert m1.length_over_dim(0) != m2.length_over_dim(0) assert (not np.allclose(m1.get_center(), m2.get_center())) m1.replace(m2) assert get_ratio(m1) == approx(m1_orig_ratio) assert m1.length_over_dim(0) == approx(m2.length_over_dim(0)) assert np.allclose(m1.get_center(), m2.get_center()) m1.points = m1_points.copy() m1.replace(m2, stretch=True) assert get_ratio(m1) != approx(m1_orig_ratio) assert m1.length_over_dim(0) == approx(m2.length_over_dim(0)) assert np.allclose(m1.get_center(), m2.get_center())