loki.tests.test_subroutine
Functions
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Test enrich points to the actual routine and not the symbol declared in an explicit interface. |
|
Tests procedures passed as dummy arguments and declared as EXTERNAL. |
|
Verify array return types are correctly represented with all frontends |
|
Test member subroutine and function |
|
Test that member subroutine scopes get cloned correctly. |
|
Test that member subroutine scopes get cloned correctly. |
|
A simple test to catch and shame mixed declarations. |
|
|
|
Test correct behaviour of |
Test correct behaviour of |
|
|
A set of test to test internalisation and handling of arguments. |
|
Test addition and removal of subroutine arguments. |
|
Test argument declarations with comments interjectected between dummies. |
|
Test argument ordering honours singateu (dummy list) instead of order of apearance in spec declarations. |
|
Test that arrays passed down a subroutine call are treated as arrays. |
|
A simple standard looking routine to test argument declarations. |
|
Test for the forward propagation of derived-type information from a standalone module to a foreign subroutine via the :param typedef: argument. |
|
Test that equivalent names in distinct routines don't cache. |
|
Test local variable addition and removal. |
|
A set of test to ensure matching different dimension and shape expressions against strings and other expressions works as expected. |
Test that !$loki dimension pragmas can be used to verride the conceptual .shape of local and argument variables. |
|
|
Tests the FindVariables utility (not the best place to put this). |
|
Test local variables and types |
Test for the correct identification and forward propagation of variable shapes from the subroutine declaration. |
|
|
|
|
Test that string-equivalence works on relevant components. |
Test that semantic, but no string-equivalence evaluates as not eqal |
|
|
Test that deep-cloning a subroutine actually ensures clean scope separation. |
|
Test auto-generation of an interface block for a given subroutine. |
Test that argument lists for subroutines are correctly captured when the object is made complete. |
|
Test that argument lists for subroutines are correctly captured when the object is made complete. |
|
|
Test that prefixes for functions are correctly captured when the object is made complete. |
|
Test various prefixes that can occur in function/subroutine definitions |
|
Test the rescoping of variables in clone. |
|
Test the rescoping of variables. |
|
Test the correct identification of statement functions |
|
Test that subroutine suffixes are supported and correctly reproduced |
- fixture_here()
- fixture_header_path(here)
- test_routine_simple(tmp_path, frontend)
A simple standard looking routine to test argument declarations.
- test_routine_arguments(tmp_path, frontend)
A set of test to test internalisation and handling of arguments.
- test_routine_arguments_multiline(tmp_path, frontend)
Test argument declarations with comments interjectected between dummies.
- test_routine_arguments_order(frontend)
Test argument ordering honours singateu (dummy list) instead of order of apearance in spec declarations.
- test_routine_arguments_add_remove(frontend)
Test addition and removal of subroutine arguments.
- test_routine_variables_local(tmp_path, frontend)
Test local variables and types
- test_routine_variable_caching(frontend)
Test that equivalent names in distinct routines don’t cache.
- test_routine_variables_add_remove(frontend)
Test local variable addition and removal.
- test_routine_variables_find(frontend)
Tests the FindVariables utility (not the best place to put this).
- test_routine_variables_dim_shapes(frontend)
A set of test to ensure matching different dimension and shape expressions against strings and other expressions works as expected.
- test_routine_variables_shape_propagation(tmp_path, header_path, frontend)
Test for the correct identification and forward propagation of variable shapes from the subroutine declaration.
- test_routine_variables_dimension_pragmas(frontend)
Test that !$loki dimension pragmas can be used to verride the conceptual .shape of local and argument variables.
- test_routine_type_propagation(header_path, frontend, tmp_path)
Test for the forward propagation of derived-type information from a standalone module to a foreign subroutine via the :param typedef: argument.
- test_routine_call_arrays(header_path, frontend, tmp_path)
Test that arrays passed down a subroutine call are treated as arrays.
- test_call_no_arg(frontend)
- test_call_kwargs(frontend)
- test_call_args_kwargs(frontend)
- test_convert_endian(tmp_path, frontend)
- test_open_newunit(tmp_path, frontend)
- test_empty_spec(frontend)
- test_member_procedures(tmp_path, frontend)
Test member subroutine and function
- test_member_routine_clone(frontend)
Test that member subroutine scopes get cloned correctly.
- test_member_routine_clone_inplace(frontend)
Test that member subroutine scopes get cloned correctly.
- test_external_stmt(tmp_path, frontend)
Tests procedures passed as dummy arguments and declared as EXTERNAL.
- test_subroutine_interface(tmp_path, frontend, header_path)
Test auto-generation of an interface block for a given subroutine.
- test_subroutine_rescope_symbols(frontend)
Test the rescoping of variables.
- test_subroutine_rescope_clone(frontend)
Test the rescoping of variables in clone.
- test_subroutine_stmt_func(tmp_path, frontend)
Test the correct identification of statement functions
- test_mixed_declaration_interface(frontend)
A simple test to catch and shame mixed declarations.
- test_subroutine_prefix(frontend)
Test various prefixes that can occur in function/subroutine definitions
- test_subroutine_suffix(frontend, tmp_path)
Test that subroutine suffixes are supported and correctly reproduced
- test_subroutine_comparison(frontend)
Test that string-equivalence works on relevant components.
- test_subroutine_comparison_case_sensitive(frontend)
Test that semantic, but no string-equivalence evaluates as not eqal
- test_subroutine_lazy_arguments_incomplete1(frontend)
Test that argument lists for subroutines are correctly captured when the object is made complete.
The rationale for this test is that for dummy argument lists with interleaved comments and line breaks, matching is non-trivial and, since we don’t currently need the argument list in the incomplete REGEX-parsed IR, we accept that this information is incomplete initially. tmp_path, we make sure this information is captured correctly after completing the full frontend parse.
- test_subroutine_lazy_arguments_incomplete2(frontend)
Test that argument lists for subroutines are correctly captured when the object is made complete.
The rationale for this test is that for dummy argument lists with interleaved comments and line breaks, matching is non-trivial and, since we don’t currently need the argument list in the incomplete REGEX-parsed IR, we accept that this information is not available initially. tmp_path, we make sure this information is captured correctly after completing the full frontend parse.
- test_subroutine_lazy_prefix(frontend)
Test that prefixes for functions are correctly captured when the object is made complete.
This test represents a case where the REGEX frontend fails to capture these attributes correctly.
The rationale for this test is that we don’t currently need these attributes in the incomplete REGEX-parsed IR and we accept that this information is incomplete initially. tmp_path, we make sure this information is captured correctly after completing the full frontend parse.
- test_subroutine_clone_contained(frontend)
- test_enrich_explicit_interface(frontend)
Test enrich points to the actual routine and not the symbol declared in an explicit interface.
- test_enrich_derived_types(tmp_path, frontend)
- test_subroutine_deep_clone(frontend)
Test that deep-cloning a subroutine actually ensures clean scope separation.
- test_call_args_kwargs_conversion(frontend)
- test_resolve_typebound_var(frontend, tmp_path)
Test correct behaviour of
Scope.resolve_typebound_var
utility
- test_resolve_typebound_var_missing_definition(frontend, tmp_path)
Test correct behaviour of
Scope.resolve_typebound_var
utility in the absence of type information
- test_function_array_return_type(frontend, dim_decl)
Verify array return types are correctly represented with all frontends