def METHOD_NAME(triplet_snapshot_factory, simulation_factory,
                             angle_cls, angle_args, params, force, energy):
    theta_deg = 60
    theta_rad = theta_deg * (numpy.pi / 180)
    snapshot = triplet_snapshot_factory(theta_deg=theta_deg)
    sim = simulation_factory(snapshot)
    force_array = force * numpy.asarray(
        [numpy.cos(theta_rad / 2),
         numpy.sin(theta_rad / 2), 0])
    potential = angle_cls(**angle_args)
    potential.params['A-A-A'] = params
    sim.operations.integrator = hoomd.md.Integrator(dt=0.005,
                                                    forces=[potential])
    sim.run(0)
    sim_energy = potential.energy
    sim_forces = potential.forces
    if sim.device.communicator.rank == 0:
        assert sim_energy == pytest.approx(energy, rel=1e-2)
        numpy.testing.assert_allclose(sim_forces[0],
                                      force_array,
                                      rtol=1e-2,
                                      atol=1e-5)
        numpy.testing.assert_allclose(sim_forces[1], [0, -1 * force, 0],
                                      rtol=1e-2,
                                      atol=1e-5)
        numpy.testing.assert_allclose(
            sim_forces[2],
            [-1 * force_array[0], force_array[1], force_array[2]],
            rtol=1e-2,
            atol=1e-5)