def test_strafe_solve_speedxi_zero_x(): K = motion.strafe_K(30, 0.001, 320, 10) with raises(ValueError): motion.strafe_solve_speedxi(0, K, 0, 1, 800) with raises(ValueError): motion.strafe_solve_speedxi(40, K, 0, 2, 800) assert motion.strafe_solve_speedxi(40, K, 0, 1, 800) == approx(0)
def test_strafe_solve_speedxi_pos_z(): K = motion.strafe_K(30, 0.001, 320, 10) assert motion.strafe_solve_speedxi(1000, K, 100, 400, 800) == approx(0) with raises(ValueError): motion.strafe_solve_speedxi(1000, K, 100, 700, 800) with raises(ValueError): motion.strafe_solve_speedxi(0, K, 100, 700, 800)
def test_strafe_solve_speedxi_curve_shape(): K = motion.strafe_K(30, 0.001, 320, 10) xs = range(1, 10000, 500) zs = range(1, 601, 100) for x, z in itertools.product(xs, zs): vix = motion.strafe_solve_speedxi(1000, K, x, z, 800) tx = motion.strafe_time(x, vix, K) tz = motion.gravity_time_speediz_z(1000, z, 800) if not math.isclose(tx, tz[0], abs_tol=1e-6): assert tx <= tz[0]
def test_strafe_solve_speedxi_neg_z(): K = motion.strafe_K(30, 0.001, 320, 10) assert motion.strafe_solve_speedxi(0, K, 100, -18, 800) == approx(450.6474498822009) assert motion.strafe_solve_speedxi(0, K, 100, -100, 800) == approx(0) assert motion.strafe_solve_speedxi(163.23541222592047, K, 100, -18, 800) == approx(0) assert motion.strafe_solve_speedxi(200, K, 100, -18, 800) == approx(0) assert motion.strafe_solve_speedxi(0, K, 100, -1e-3, 800) == approx(63245.55095141193) assert motion.strafe_solve_speedxi(-10000, K, 100, -100, 800) == approx(10003.952996977921) assert motion.strafe_solve_speedxi(-100, K, 200, -200, 800) == approx(248.98914739139963)
def test_strafe_solve_speedxi_impossible(): K = motion.strafe_K(30, 0.001, 320, 10) assert math.isnan(motion.strafe_solve_speedxi(-100, K, 0, 2, 800)) assert math.isnan(motion.strafe_solve_speedxi(-100, K, 10, 2, 800)) with raises(ValueError): motion.strafe_solve_speedxi(0, K, 10, 2, 800)
def test_strafe_solve_speedxi_zero_z(): K = motion.strafe_K(30, 0.001, 320, 10) assert motion.strafe_solve_speedxi(1000, K, 1, 0, 800) == math.inf assert motion.strafe_solve_speedxi(0, K, 0, 0, 800) == approx(0) assert motion.strafe_solve_speedxi(0, K, 100, 0, 800) == math.inf assert motion.strafe_solve_speedxi(0, K, 1e-5, 0, 800) == math.inf
def test_strafe_solve_speedxi(): K = motion.strafe_K(30, 0.001, 320, 10) with raises(ValueError): motion.strafe_solve_speedxi(10, -K, 400, -200, 800)