def test_vmf_rvs():
    mu, kappa = random_pars()
    n_pts = int(1e4)
    tolerance = 0.1
    #... acceptable angular deviation between set mean and sample mean
    P_i = vmf_rvs(mu, kappa, n_pts)
    sample_mean = mean_dir(P_i)
    angle_between = np.arccos(np.dot(mu, sample_mean))
    assert(angle_between < tolerance)
def test_estimate_kappa():
    mus = [[0., 0., 1.],[0., 1., 0.], [1., 0., 0.]]
    kappas = [1.,]
    for mu, kappa in zip(mus, kappas):
        n_pts = int(1e4)
        tolerance = 0.1
        # acceptable deviation between set kappa (hopefully),
        # and estimated kappa.
        # Could really do with a way to define a
        # set of points with an established kappa.
        P_i = vmf_rvs(mu, kappa, n_pts)
        khat = estimate_kappa(P_i, mu=mu)
        diff = np.abs(khat - kappa)
        assert(diff < tolerance)