79 lines
2.9 KiB
Go
79 lines
2.9 KiB
Go
|
package matchers_test
|
||
|
|
||
|
import (
|
||
|
"errors"
|
||
|
"strings"
|
||
|
|
||
|
. "github.com/onsi/ginkgo"
|
||
|
. "github.com/onsi/gomega"
|
||
|
. "github.com/onsi/gomega/matchers"
|
||
|
)
|
||
|
|
||
|
var _ = Describe("Equal", func() {
|
||
|
Context("when asserting that nil equals nil", func() {
|
||
|
It("should error", func() {
|
||
|
success, err := (&EqualMatcher{Expected: nil}).Match(nil)
|
||
|
|
||
|
Ω(success).Should(BeFalse())
|
||
|
Ω(err).Should(HaveOccurred())
|
||
|
})
|
||
|
})
|
||
|
|
||
|
Context("When asserting equality between objects", func() {
|
||
|
It("should do the right thing", func() {
|
||
|
Ω(5).Should(Equal(5))
|
||
|
Ω(5.0).Should(Equal(5.0))
|
||
|
|
||
|
Ω(5).ShouldNot(Equal("5"))
|
||
|
Ω(5).ShouldNot(Equal(5.0))
|
||
|
Ω(5).ShouldNot(Equal(3))
|
||
|
|
||
|
Ω("5").Should(Equal("5"))
|
||
|
Ω([]int{1, 2}).Should(Equal([]int{1, 2}))
|
||
|
Ω([]int{1, 2}).ShouldNot(Equal([]int{2, 1}))
|
||
|
Ω(map[string]string{"a": "b", "c": "d"}).Should(Equal(map[string]string{"a": "b", "c": "d"}))
|
||
|
Ω(map[string]string{"a": "b", "c": "d"}).ShouldNot(Equal(map[string]string{"a": "b", "c": "e"}))
|
||
|
Ω(errors.New("foo")).Should(Equal(errors.New("foo")))
|
||
|
Ω(errors.New("foo")).ShouldNot(Equal(errors.New("bar")))
|
||
|
|
||
|
Ω(myCustomType{s: "foo", n: 3, f: 2.0, arr: []string{"a", "b"}}).Should(Equal(myCustomType{s: "foo", n: 3, f: 2.0, arr: []string{"a", "b"}}))
|
||
|
Ω(myCustomType{s: "foo", n: 3, f: 2.0, arr: []string{"a", "b"}}).ShouldNot(Equal(myCustomType{s: "bar", n: 3, f: 2.0, arr: []string{"a", "b"}}))
|
||
|
Ω(myCustomType{s: "foo", n: 3, f: 2.0, arr: []string{"a", "b"}}).ShouldNot(Equal(myCustomType{s: "foo", n: 2, f: 2.0, arr: []string{"a", "b"}}))
|
||
|
Ω(myCustomType{s: "foo", n: 3, f: 2.0, arr: []string{"a", "b"}}).ShouldNot(Equal(myCustomType{s: "foo", n: 3, f: 3.0, arr: []string{"a", "b"}}))
|
||
|
Ω(myCustomType{s: "foo", n: 3, f: 2.0, arr: []string{"a", "b"}}).ShouldNot(Equal(myCustomType{s: "foo", n: 3, f: 2.0, arr: []string{"a", "b", "c"}}))
|
||
|
})
|
||
|
})
|
||
|
|
||
|
Describe("failure messages", func() {
|
||
|
It("shows the two strings simply when they are short", func() {
|
||
|
subject := EqualMatcher{Expected: "eric"}
|
||
|
|
||
|
failureMessage := subject.FailureMessage("tim")
|
||
|
Ω(failureMessage).To(BeEquivalentTo(expectedShortStringFailureMessage))
|
||
|
})
|
||
|
|
||
|
It("shows the exact point where two long strings differ", func() {
|
||
|
stringWithB := "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||
|
stringWithZ := "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||
|
|
||
|
subject := EqualMatcher{Expected: stringWithZ}
|
||
|
|
||
|
failureMessage := subject.FailureMessage(stringWithB)
|
||
|
Ω(failureMessage).To(BeEquivalentTo(expectedLongStringFailureMessage))
|
||
|
})
|
||
|
})
|
||
|
})
|
||
|
|
||
|
var expectedShortStringFailureMessage = strings.TrimSpace(`
|
||
|
Expected
|
||
|
<string>: tim
|
||
|
to equal
|
||
|
<string>: eric
|
||
|
`)
|
||
|
var expectedLongStringFailureMessage = strings.TrimSpace(`
|
||
|
Expected
|
||
|
<string>: "...aaaaabaaaaa..."
|
||
|
to equal |
|
||
|
<string>: "...aaaaazaaaaa..."
|
||
|
`)
|