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