From 1a7fa810b9bd8ecd6b058a1e046393e08d1feeaa Mon Sep 17 00:00:00 2001 From: Lukasz Balcerzak Date: Thu, 21 Jan 2016 13:52:12 +0100 Subject: [PATCH] Added IsNil and IsNotNil assertions --- assertions.go | 14 ++++++++++++++ assertions_test.go | 40 ++++++++++++++++++++++++++++++++++++++++ goblin_test.go | 31 +++++++++++++++++++++++++++++++ 3 files changed, 85 insertions(+) diff --git a/assertions.go b/assertions.go index 5ccae7d..fbcce06 100644 --- a/assertions.go +++ b/assertions.go @@ -57,3 +57,17 @@ func (a *Assertion) IsFalse(messages ...string) { a.fail(message) } } + +func (a *Assertion) IsNil(messages ...string) { + if !objectsAreEqual(a.src, nil) { + message := fmt.Sprintf("%v %s%s", a.src, "expected to be nil", formatMessages(messages...)) + a.fail(message) + } +} + +func (a *Assertion) IsNotNil(messages ...string) { + if objectsAreEqual(a.src, nil) { + message := fmt.Sprintf("%s%s", "expected not to be nil", formatMessages(messages...)) + a.fail(message) + } +} diff --git a/assertions_test.go b/assertions_test.go index ea2550f..d283cb2 100644 --- a/assertions_test.go +++ b/assertions_test.go @@ -99,3 +99,43 @@ func TestIsTrueWithMessage(t *testing.T) { verifier.Verify(t) verifier.VerifyMessage(t, "false expected false to be truthy, true is not false") } + +func TestIsNil(t *testing.T) { + verifier := AssertionVerifier{ShouldPass: true} + a := Assertion{src: nil, fail: verifier.FailFunc} + a.IsNil() + verifier.Verify(t) + + verifier = AssertionVerifier{ShouldPass: false} + a = Assertion{src: 102, fail: verifier.FailFunc} + a.IsNil() + verifier.Verify(t) +} + +func TestIsNilWithMessage(t *testing.T) { + verifier := AssertionVerifier{ShouldPass: false} + a := Assertion{src: 300, fail: verifier.FailFunc} + a.IsNil("foobar") + verifier.Verify(t) + verifier.VerifyMessage(t, "300 expected to be nil, foobar") +} + +func TestIsNotNil(t *testing.T) { + verifier := AssertionVerifier{ShouldPass: true} + a := Assertion{src: 103, fail: verifier.FailFunc} + a.IsNotNil() + verifier.Verify(t) + + verifier = AssertionVerifier{ShouldPass: false} + a = Assertion{src: nil, fail: verifier.FailFunc} + a.IsNotNil() + verifier.Verify(t) +} + +func TestIsNotNilWithMessage(t *testing.T) { + verifier := AssertionVerifier{ShouldPass: false} + a := Assertion{src: nil, fail: verifier.FailFunc} + a.IsNotNil("foobar") + verifier.Verify(t) + verifier.VerifyMessage(t, "expected not to be nil, foobar") +} diff --git a/goblin_test.go b/goblin_test.go index 04fe4f8..fded7e0 100644 --- a/goblin_test.go +++ b/goblin_test.go @@ -294,3 +294,34 @@ func TestTimeout(t *testing.T) { t.Fatal("Failed") } } + +func TestNils(t *testing.T) { + fakeTest := testing.T{} + g := Goblin(&fakeTest) + + g.Describe("Test IsNil and IsNotNil assertions", func() { + g.It("IsNil should work fine for nil value", func() { + g.Assert(nil).IsNil() + }) + g.It("IsNotNil should work fine for not-nil value", func() { + g.Assert(102).IsNotNil() + }) + }) + + if fakeTest.Failed() { + t.Fatal("Failed") + } + + g.Describe("Test IsNil and IsNotNil assertions with wrong values", func() { + g.It("IsNil should fail for not-nil value", func() { + g.Assert(102).IsNil() + }) + g.It("IsNotNil should fail for nil value", func() { + g.Assert(nil).IsNotNil() + }) + }) + + if !fakeTest.Failed() { + t.Fatal("Failed") + } +}