ExMatch (exmatch v0.9.0)
Assertions for data equivalence.
usage
Usage
The library depends on ExUnit.AssertionError and therefore is meant to be used only in testing.
Notice
The examples below display the output you would see when testing using ExUnit. Using plain IEx environment will use basic struct formatter different from ExUnit.CLIFormatter.
iex> ExMatch.match(%{a: 1, b: 2, c: 3}, %{c: 3, a: 2, b: {1, 0}})
** (ExUnit.AssertionError)
left: %{a: 1, b: 2}
right: %{a: 2, b: {1, 0}}
iex> opts = ExMatch.options([{Decimal, [:match_integer]}])
iex> ExMatch.match([10, eleven, _], [Decimal.new("10"), 11, 12], opts)
iex> eleven == 11
true
iex> eleven = 11
iex> ExMatch.match(%Decimal{coef: ^eleven, exp: 1 - 1, sign: 1}, Decimal.add(1, eleven))
** (ExUnit.AssertionError)
left: %Decimal{coef: ^eleven = 11, exp: 1 - 1 = 0, sign: 1}
right: %Decimal{coef: 12, exp: 0, sign: 1}
iex> alias ExMatchTest.{Dummy, Dummy1}
iex> ExMatch.match(%Dummy{
...> a: %Dummy1{a: 1},
...> b: ~U[2022-02-19 05:10:08.387165Z]
...> }, %Dummy{
...> a: %Dummy{a: 1},
...> b: Timex.parse!("2022-02-19 14:55:08.387165+09:45", "{ISO:Extended}")
...> })
** (ExUnit.AssertionError)
left: %ExMatchTest.Dummy{a: %(ExMatchTest.Dummy1, [])}
right: %ExMatchTest.Dummy{a: %{__struct__: ExMatchTest.Dummy}}
Link to this section Summary
Functions
Raises if the values don't match and displays what exactly was different.
Link to this section Functions
Raises if the values don't match and displays what exactly was different.
iex> ExMatch.match([1, a, 3], [1, 2, 3]) iex> 2 = a