Additional unit tests

- Added more unit tests to ensure both matching and failure are
  represented
Ensure passing multiple criteria works

- Return the matched criteria on success
- Only return from the loop if we validate; otherwise, delay returning a
  false value to the end of the method.