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:

`test/unit/math/mix/mat/util/autodiff_tester.hpp`

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
`rev`

or`fwd`

? - 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. `*/mat/`

:

```
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 `*/scal/`

For all other cases, a function needs to have a test in `prim`

, `fwd`

, `rev`

, and `mix`

Have I missed anything?