def asserts(*what, &definition)
      new_assertion("asserts", *what, &definition)
    end
Makes an assertion.

In the most basic form, an assertion requires a descriptive name and a block.

asserts("#size is equals to 2") { topic.size == 2 }

However, several shortcuts are available. Assertion macros can be added to the
end, automating a number of common assertion patterns, e.g.

asserts("#size") { topic.size }.equals(2)

Furthermore, the pattern of testing an attribute on the topic is codified as

asserts(:size).equals(2)

Or with arguments:

asserts(:foo,1,2).equals(3)

Passing a Symbol to +asserts+ enables this behaviour. For more information on
assertion macros, see {Riot::AssertionMacro}.

@param [String, Symbol] what description of test or property to inspect on the topic
@return [Riot::Assertion]