   @doc """
   Defines a callback to be run before each test in a case.
 
-  Pass a block or name of a unary function as atom, or list of such
-  atoms.
-
-  Can return values to be merged into the context, to set up state for
+  Accepts a block or the name of a one-arity function in the form of an atom,
+  or a list of such atoms.
+
+  Can return values to be merged into the context, to set up the state for
   tests. For more details, see the "Context" section shown above.
 
   ## Examples

      end

  """
  defmacro setup(var, block) do
    do_setup(var, block)
  end

  defp do_setup(var, block) do
    quote bind_quoted: [var: escape(var), block: escape(block)] do
      name = :"__ex_unit_setup_#{length(@ex_unit_setup)}"
      defp unquote(name)(unquote(var)), unquote(block)
      @ex_unit_setup [{name, @ex_unit_describe} | @ex_unit_setup]
    end
  end

  @doc """
  Defines a callback to be run before all tests in a case.

  Accepts a block or the name of a one-arity function in the form of an atom,
  or a list of such atoms.

  Can return values to be merged into the `context`, to set up the state for
  tests. For more details, see the "Context" section shown above.

  ## Examples
