README.md

# ExUnitParametrize
![tests](https://github.com/rciorba/yapara/actions/workflows/test.yaml/badge.svg?branch=master)

Parameterized tests for ExUnit.

Examples:

```elixir
defmodule ParameterizedTest do
  use ExUnit.Case
  import ExUnitParametrize

  parameterized_test "basic test", [
    [a: 1, b: 1, expected: 2],                # basic test[a:1, b:1, expected:2]
    one_plus_two: [a: 1, b: 2, expected: 3],  # basic test[one_plus_two]
    failing_case: [a: 1, b: 2, expected: 4]   # basic test[failing_case]
  ] do
    assert a + b == expected
  end
end

```

## Test naming

By default the string representation of the params will be appended to the test name, unless you
provide an explicit name.

For the example above the test names would be:
  * basic test[a: 1, b: 1, expected: 2]
  * basic test[one_plus_two]
  * basic test[failing_case]

In case the name would be longer than the max atom size, the 1-based index will be used.

### Note on spelling
Unfortunately, parameterize has many spellings, and there's no one single
"correct" one. I've picked parameterize over parameterise, parametrize or parametrise, simply
because it seems to be slightly more popular globally.

## Installation

ExUnitParametrize can be installed by adding `ex_unit_parameterize` to your list of dependencies in `mix.exs`:

```elixir
def deps do
  [
    {:ex_unit_parameterize, "~> 0.1.0"}
  ]
end
```

The docs can be found at [https://hexdocs.pm/ex_unit_parameterize](https://hexdocs.pm/ex_unit_parameterize).