summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/magiconair/properties/assert
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/magiconair/properties/assert')
-rw-r--r--vendor/github.com/magiconair/properties/assert/assert.go90
-rw-r--r--vendor/github.com/magiconair/properties/assert/assert_test.go55
2 files changed, 145 insertions, 0 deletions
diff --git a/vendor/github.com/magiconair/properties/assert/assert.go b/vendor/github.com/magiconair/properties/assert/assert.go
new file mode 100644
index 000000000..cb1097baa
--- /dev/null
+++ b/vendor/github.com/magiconair/properties/assert/assert.go
@@ -0,0 +1,90 @@
+// Copyright 2017 Frank Schroeder. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Package assert provides helper functions for testing.
+package assert
+
+import (
+ "fmt"
+ "path/filepath"
+ "reflect"
+ "regexp"
+ "runtime"
+ "strings"
+ "testing"
+)
+
+// skip defines the default call depth
+const skip = 2
+
+// Equal asserts that got and want are equal as defined by
+// reflect.DeepEqual. The test fails with msg if they are not equal.
+func Equal(t *testing.T, got, want interface{}, msg ...string) {
+ if x := equal(2, got, want, msg...); x != "" {
+ fmt.Println(x)
+ t.Fail()
+ }
+}
+
+func equal(skip int, got, want interface{}, msg ...string) string {
+ if !reflect.DeepEqual(got, want) {
+ return fail(skip, "got %v want %v %s", got, want, strings.Join(msg, " "))
+ }
+ return ""
+}
+
+// Panic asserts that function fn() panics.
+// It assumes that recover() either returns a string or
+// an error and fails if the message does not match
+// the regular expression in 'matches'.
+func Panic(t *testing.T, fn func(), matches string) {
+ if x := doesPanic(2, fn, matches); x != "" {
+ fmt.Println(x)
+ t.Fail()
+ }
+}
+
+func doesPanic(skip int, fn func(), expr string) (err string) {
+ defer func() {
+ r := recover()
+ if r == nil {
+ err = fail(skip, "did not panic")
+ return
+ }
+ var v string
+ switch r.(type) {
+ case error:
+ v = r.(error).Error()
+ case string:
+ v = r.(string)
+ }
+ err = matches(skip, v, expr)
+ }()
+ fn()
+ return ""
+}
+
+// Matches asserts that a value matches a given regular expression.
+func Matches(t *testing.T, value, expr string) {
+ if x := matches(2, value, expr); x != "" {
+ fmt.Println(x)
+ t.Fail()
+ }
+}
+
+func matches(skip int, value, expr string) string {
+ ok, err := regexp.MatchString(expr, value)
+ if err != nil {
+ return fail(skip, "invalid pattern %q. %s", expr, err)
+ }
+ if !ok {
+ return fail(skip, "got %s which does not match %s", value, expr)
+ }
+ return ""
+}
+
+func fail(skip int, format string, args ...interface{}) string {
+ _, file, line, _ := runtime.Caller(skip)
+ return fmt.Sprintf("\t%s:%d: %s\n", filepath.Base(file), line, fmt.Sprintf(format, args...))
+}
diff --git a/vendor/github.com/magiconair/properties/assert/assert_test.go b/vendor/github.com/magiconair/properties/assert/assert_test.go
new file mode 100644
index 000000000..dcef73dfc
--- /dev/null
+++ b/vendor/github.com/magiconair/properties/assert/assert_test.go
@@ -0,0 +1,55 @@
+// Copyright 2017 Frank Schroeder. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package assert
+
+import "testing"
+
+func TestEqualEquals(t *testing.T) {
+ if got, want := equal(2, "a", "a"), ""; got != want {
+ t.Fatalf("got %q want %q", got, want)
+ }
+}
+
+func TestEqualFails(t *testing.T) {
+ if got, want := equal(2, "a", "b"), "\tassert_test.go:16: got a want b \n"; got != want {
+ t.Fatalf("got %q want %q", got, want)
+ }
+}
+
+func TestPanicPanics(t *testing.T) {
+ if got, want := doesPanic(2, func() { panic("foo") }, ""), ""; got != want {
+ t.Fatalf("got %q want %q", got, want)
+ }
+}
+
+func TestPanicPanicsAndMatches(t *testing.T) {
+ if got, want := doesPanic(2, func() { panic("foo") }, "foo"), ""; got != want {
+ t.Fatalf("got %q want %q", got, want)
+ }
+}
+
+func TestPanicPanicsAndDoesNotMatch(t *testing.T) {
+ if got, want := doesPanic(2, func() { panic("foo") }, "bar"), "\tassert.go:62: got foo which does not match bar\n"; got != want {
+ t.Fatalf("got %q want %q", got, want)
+ }
+}
+
+func TestPanicPanicsAndDoesNotPanic(t *testing.T) {
+ if got, want := doesPanic(2, func() {}, "bar"), "\tassert.go:65: did not panic\n"; got != want {
+ t.Fatalf("got %q want %q", got, want)
+ }
+}
+
+func TestMatchesMatches(t *testing.T) {
+ if got, want := matches(2, "aaa", "a"), ""; got != want {
+ t.Fatalf("got %q want %q", got, want)
+ }
+}
+
+func TestMatchesDoesNotMatch(t *testing.T) {
+ if got, want := matches(2, "aaa", "b"), "\tassert_test.go:52: got aaa which does not match b\n"; got != want {
+ t.Fatalf("got %q want %q", got, want)
+ }
+}