Current section
Files
Jump to
Current section
Files
lib/agent/properties/ex_unit.ex
# defmodule Kvasir.Agent.Properties.ExUnit do
# alias ExUnit.AssertionError
# @doc ~S"""
# Sets up an `ExUnit.Case` module for property-based testing.
# """
# defmacro __using__(_opts \\ []) do
# quote do
# import unquote(__MODULE__)
# end
# end
# defmacro property(message, context \\ quote(do: _), contents) do
# ExUnit.plural_rule("property", "properties")
# contents =
# case contents do
# [do: block] ->
# quote do
# unquote(block)
# :ok
# end
# _ ->
# quote do
# try(unquote(contents))
# :ok
# end
# end
# context = Macro.escape(context)
# contents = Macro.escape(contents, unquote: true)
# quote bind_quoted: [context: context, contents: contents, message: message] do
# name = ExUnit.Case.register_test(__ENV__, :property, message, [:property])
# def unquote(name)(unquote(context)), do: unquote(contents)
# end
# end
# end