|  | 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..." | 
|  | `) |