# Testing

Documentation for testing utilities for Manifolds.jl. The function test_manifold can be used to verify that your manifold correctly implements the Manifolds.jl interface. Similarly test_group and test_action can be used to verify implementation of groups and group actions.

Manifolds.ManifoldTests.test_manifoldMethod
test_manifold(
M::Manifold,
pts::AbstractVector;
args,
)

Test general properties of manifold M, given at least three different points that lie on it (contained in pts).

Arguments

• basis_has_specialized_diagonalizing_get = false: if true, assumes that DiagonalizingOrthonormalBasis given in basis_types has get_coordinates and get_vector that work without caching.
• basis_types_to_from = (): basis types that will be tested based on get_coordinates and get_vector.
• basis_types_vecs = () : basis types that will be tested based on get_vectors.
• default_inverse_retraction_method = ManifoldsBase.LogarithmicInverseRetraction(): default method for inverse retractions (log).
• default_retraction_method = ManifoldsBase.ExponentialRetraction(): default method for retractions (exp).
• exp_log_atol_multiplier = 0: change absolute tolerance of exp/log tests (0 use default, i.e. deactivate atol and use rtol).
• exp_log_rtol_multiplier = 1: change the relative tolerance of exp/log tests (1 use default). This is deactivated if the exp_log_atol_multiplier is nonzero.
• expected_dimension_type = Integer: expected type of value returned by manifold_dimension.
• inverse_retraction_methods = []: inverse retraction methods that will be tested.
• is_mutating = true: whether mutating variants of functions should be tested.
• is_point_atol_multiplier = 0: determines atol of is_manifold_point checks.
• is_tangent_atol_multiplier = 0: determines atol of is_tangent_vector checks.
• mid_point12 = test_exp_log ? shortest_geodesic(M, pts[1], pts[2], 0.5) : nothing: if not nothing, then check that mid_point(M, pts[1], pts[2]) is approximately equal to mid_point12. This is by default set to nothing if text_exp_log is set to false.
• point_distributions = [] : point distributions to test.
• rand_tvector_atol_multiplier = 0 : chage absolute tolerance in testing random vectors (0 use default, i.e. deactivate atol and use rtol) random tangent vectors are tangent vectors.
• retraction_atol_multiplier = 0: change absolute tolerance of (inverse) retraction tests (0 use default, i.e. deactivate atol and use rtol).
• retraction_rtol_multiplier = 1: change the relative tolerance of (inverse) retraction tests (1 use default). This is deactivated if the exp_log_atol_multiplier is nonzero.
• retraction_methods = []: retraction methods that will be tested.
• test_exp_log = true: if true, checkthat exp is the inverse of log.
• test_forward_diff = true: if true, automatic differentiation using ForwardDiff is tested.
• test_injectivity_radius = true: whether implementation of injectivity_radius should be tested.
• test_is_tangent: if true check that the default_inverse_retraction_method actually returns valid tangent vectors.
• test_musical_isomorphisms = false : test musical isomorphisms.
• test_mutating_rand = false : test the mutating random function for points on manifolds.
• test_project_point = false: test projections onto the manifold.
• test_project_tangent = false : test projections on tangent spaces.
• test_representation_size = true : test repersentation size of points/tvectprs.
• test_reverse_diff = true: if true, automatic differentiation using ReverseDiff is tested.
• test_tangent_vector_broadcasting = true : test boradcasting operators on TangentSpace.
• test_vector_spaces = true : test Vector bundle of this manifold.
• test_default_vector_transport = false : test the default vector transport (usually parallel transport).
• test_vee_hat = false: test vee and hat functions.
• tvector_distributions = [] : tangent vector distributions to test.
• vector_transport_methods = []: vector transport methods that should be tested.
• vector_transport_inverse_retractions = [default_inverse_retraction_method for _ in 1:length(vector_transport_methods)] inverse retractions to use with the vector transport method (especially the differentiated ones)
• vector_transport_to = [ true for _ in 1:length(vector_transport_methods)]: whether to check the to variant of vector transport
• vector_transport_direction = [ true for _ in 1:length(vector_transport_methods)]: whether to check the direction variant of vector transport
source
Manifolds.ManifoldTests.test_actionFunction
test_action(
A::AbstractGroupAction,
a_pts::AbstractVector,
m_pts::AbstractVector,
v_pts = [];
atol = 1e-10,
atol_ident_compose = 0,
test_optimal_alignment = false,
test_mutating = true,
test_diff = false,
test_switch_direction = true,
)

Tests general properties of the action A, given at least three different points that lie on it (contained in a_pts) and three different point that lie on the manifold it acts upon (contained in m_pts).

Arguments

• atol_ident_compose = 0: absolute tolerance for the test that composition with identity doesn't change the group element.
source
Manifolds.ManifoldTests.test_groupFunction
test_group(
G,
g_pts::AbstractVector,
v_pts::AbstractVector = [],
ve_pts::AbstractVector = [];
atol = 1e-10,
test_mutating = true,
test_group_exp_log = true,
test_diff = false,
test_invariance = false,
diff_convs = [(), (LeftAction(),), (RightAction(),)],
)

Tests general properties of the group G, given at least three different points elements of it (contained in g_pts). Optionally, specify test_diff to test differentials of translation, using v_pts, which must contain at least one tangent vector at g_pts[1], and the direction conventions specified in diff_convs. If the group is equipped with an invariant metric, test_invariance` indicates that the invariance should be checked for the provided points.

source