ExMatch (exmatch v0.8.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> ExMatch.match([10, eleven, _], [Decimal.new("10"), 11, 12], [{Decimal, [:match_integer]}])
iex> eleven == 11
true
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

Link to this macro

match(left, right)

(macro)

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

Link to this macro

match(left, right, opts)

(macro)
Link to this macro

options(item)

(macro)