From 121a4e740af7c29584b27b6979a9f750f80dd720 Mon Sep 17 00:00:00 2001 From: Crow Crowcrow Date: Fri, 12 Jun 2020 19:35:26 +0200 Subject: [PATCH] Add NCmp --- assert.go | 9 +++++++++ assert_test.go | 15 +++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/assert.go b/assert.go index 6c762c3..b89a5f2 100644 --- a/assert.go +++ b/assert.go @@ -156,6 +156,7 @@ func (a Assert) SameElements(expected, actual interface{}, msg ...interface{}) { a.f(false, msg, ``) } +// Cmp assert wrapper for go-cmp func (a Assert) Cmp(expected, actual interface{}, opts ...cmp.Option) { a.t.Helper() diff := cmp.Diff(expected, actual, opts...) @@ -165,3 +166,11 @@ func (a Assert) Cmp(expected, actual interface{}, opts ...cmp.Option) { a.f(false, nil, "\n"+diff) } + +// NCmp assert wrapper for go-cmp but fails when !Equal +func (a Assert) NCmp(expected, actual interface{}, opts ...cmp.Option) { + a.t.Helper() + + ok := cmp.Equal(expected, actual, opts...) + a.f(!ok, nil, `Should not be %#v, but it is`, expected) +} diff --git a/assert_test.go b/assert_test.go index e0a2323..0b31a12 100644 --- a/assert_test.go +++ b/assert_test.go @@ -177,3 +177,18 @@ func TestCmpTimezones(t *testing.T) { fa.Cmp(&A{ti}, &A{ti2}) assert.True(ft.GotError()) } + +func TestNCmp(t *testing.T) { + assert := New(t) + ft, fa := newFakeT() + + type A struct { + S string + } + + fa.NCmp(A{"not"}, A{"equal"}) + assert.False(ft.GotError()) + + fa.NCmp(A{"equal"}, A{"equal"}) + assert.True(ft.GotError()) +}