# README
Package assert
Package assert is a Basic Assertion library used along side native go testing
Installation
Use go get.
go get github.com/go-playground/assert
Then import the assert package into your own code.
import . "github.com/go-playground/assert/v2"
Usage and documentation
Please see http://godoc.org/github.com/go-playground/assert for detailed usage docs.
Example:
package whatever
import (
"errors"
"testing"
. "github.com/go-playground/assert/v2"
)
func AssertCustomErrorHandler(t testing.TB, errs map[string]string, key, expected string) {
val, ok := errs[key]
// using EqualSkip and NotEqualSkip as building blocks for my custom Assert function
EqualSkip(t, 2, ok, true)
NotEqualSkip(t, 2, val, nil)
EqualSkip(t, 2, val, expected)
}
func TestEqual(t *testing.T) {
// error comes from your package/library
err := errors.New("my error")
NotEqual(t, err, nil)
Equal(t, err.Error(), "my error")
err = nil
Equal(t, err, nil)
fn := func() {
panic("omg omg omg!")
}
PanicMatches(t, func() { fn() }, "omg omg omg!")
PanicMatches(t, func() { panic("omg omg omg!") }, "omg omg omg!")
// errs would have come from your package/library
errs := map[string]string{}
errs["Name"] = "User Name Invalid"
errs["Email"] = "User Email Invalid"
AssertCustomErrorHandler(t, errs, "Name", "User Name Invalid")
AssertCustomErrorHandler(t, errs, "Email", "User Email Invalid")
}
How to Contribute
Make a PR.
I strongly encourage everyone whom creates a usefull custom assertion function to contribute them and help make this package even better.
License
Distributed under MIT License, please see license file in code for more details.
# Functions
Equal validates that val1 is equal to val2 and throws an error with line number.
EqualSkip validates that val1 is equal to val2 and throws an error with line number but the skip variable tells EqualSkip how far back on the stack to report the error.
IsEqual returns whether val1 is equal to val2 taking into account Pointers, Interfaces and their underlying types.
MatchRegex validates that value matches the regex, either string or *regex and throws an error with line number.
MatchRegexSkip validates that value matches the regex, either string or *regex and throws an error with line number but the skip variable tells MatchRegexSkip how far back on the stack to report the error.
NotEqual validates that val1 is not equal val2 and throws an error with line number.
NotEqualSkip validates that val1 is not equal to val2 and throws an error with line number but the skip variable tells NotEqualSkip how far back on the stack to report the error.
NotMatchRegex validates that value matches the regex, either string or *regex and throws an error with line number.
NotMatchRegexSkip validates that value matches the regex, either string or *regex and throws an error with line number but the skip variable tells NotMatchRegexSkip how far back on the stack to report the error.
PanicMatches validates that the panic output of running fn matches the supplied string.
PanicMatchesSkip validates that the panic output of running fn matches the supplied string but the skip variable tells PanicMatchesSkip how far back on the stack to report the error.