README.md

# Criterion

A library to write ExUnit tests BDD style

## Installation

The package can be installed
by adding `criterion` to your list of dependencies in `mix.exs`:

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

## Usage

```elixir
defmodule CriterionTest do
  use ExUnit.Case
  import Criterion

  scenario "Square" do
    step "Given a number 2" do
      number = 2
      %{number: number}
    end

    step "When the number is multiplied by it self", %{number: number} do
      result = number * number
      %{result: result}
    end

    step "Then the result is 4", %{result: result} do
      assert result == 4
      %{result: result}
    end
  end
end

```

### Shared Steps

```elixir
defmodule Criterion.SharedSteps do
  import Criterion

  step "Given a number 2", _context do
    %{number: 2}
  end
end
```

```elixir
defmodule CriterionTest do
  use ExUnit.Case
  import Criterion
  import Criterion.SharedSteps

  scenario "Square" do
    step("Given a number 2")
    step "When the number is multiplied by it self", %{number: number} do
      result = number * number
      %{result: result}
    end

    step "Then the result is 4", %{result: result, number: number} do
      assert result == 4
      assert result / number == number
      %{result: result}
    end
  end
end
```