README.md

# StructAssert

A useful tool for testing sturct and map in Elixir.

## Examples

```elixir

  defmodule MyStruct do
    defstruct a: 1, b: 1, z: 10
  end

  defmodule Example
    use ExUnit.Case
    use StructAssert

    test "example" do
      assert_subset(%MyStruct{}, [a: 1, b: 2])
      # code:  assert_subset(%MyStruct{}, [a: 1, b: 2])
      # left:  %{a: 1, b: 1, z: 10}
      # right: %{a: 1, b: 2, z: 10}

      assert_subset(%MyStruct{}, [a: 1, b: &is_atom(&1)])
      # code:  assert_subset(%MyStruct{}, [a: 1, b: &(is_atom(&1))])
      # left:  %{a: 1, z: 10, b: 1}
      # right: %{a: 1, z: 10, b: &:erlang.is_atom/1}
    end

  end

```

## Installation

If [available in Hex](https://hex.pm/docs/publish), the package can be installed
by adding `struct_assert` to your list of dependencies in `mix.exs`:

```elixir
def deps do
  [{:struct_assert, ">= 0.0.0"}]
end
```

Documentation can be generated with [ExDoc](https://github.com/elixir-lang/ex_doc)
and published on [HexDocs](https://hexdocs.pm). Once published, the docs can
be found at [https://hexdocs.pm/struct_assert](https://hexdocs.pm/struct_assert).