Just need a bit of help making sure that I understand how the math tests are structured, or how they should be structured in an ideal world, plus a couple of questions. Let me know if I’m completely off here (obvious questions may follow).
Based on the guide in the wiki:
Implements the reverse, forward, and mixed autodiff tests for a 1- or 2-parameter function. But still requires a test in
test/unit/math/prim to test that the correct values are returned by the function.
- If a function has a test specified with this framework, does that mean they don’t need tests in
- If the function has analytic derivatives, does that change whether/how this testing framework is used?
- Are there limitations on the kinds of functions that can use this framework?
Next there are the frameworks for testing the vectorized versions of unary functions (i.e.
test/unit/math/prim/mat/vectorize/prim_scalar_unary_test.hpp test/unit/math/rev/mat/vectorize/rev_scalar_unary_test.hpp test/unit/math/fwd/mat/vectorize/fwd_scalar_unary_test.hpp test/unit/math/mix/mat/vectorize/mix_scalar_unary_test.hpp
These only test whether the vectorization process has affected the function in some way, and still requires tests for the function in
For all other cases, a function needs to have a test in
Have I missed anything?