| package gstruct_test |
| |
| import ( |
| . "github.com/onsi/ginkgo" |
| . "github.com/onsi/gomega" |
| . "github.com/onsi/gomega/gstruct" |
| ) |
| |
| var _ = Describe("Struct", func() { |
| allFields := struct{ A, B string }{"a", "b"} |
| missingFields := struct{ A string }{"a"} |
| extraFields := struct{ A, B, C string }{"a", "b", "c"} |
| emptyFields := struct{ A, B string }{} |
| |
| It("should strictly match all fields", func() { |
| m := MatchAllFields(Fields{ |
| "B": Equal("b"), |
| "A": Equal("a"), |
| }) |
| Ω(allFields).Should(m, "should match all fields") |
| Ω(missingFields).ShouldNot(m, "should fail with missing fields") |
| Ω(extraFields).ShouldNot(m, "should fail with extra fields") |
| Ω(emptyFields).ShouldNot(m, "should fail with empty fields") |
| |
| m = MatchAllFields(Fields{ |
| "A": Equal("a"), |
| "B": Equal("fail"), |
| }) |
| Ω(allFields).ShouldNot(m, "should run nested matchers") |
| }) |
| |
| It("should handle empty structs", func() { |
| m := MatchAllFields(Fields{}) |
| Ω(struct{}{}).Should(m, "should handle empty structs") |
| Ω(allFields).ShouldNot(m, "should fail with extra fields") |
| }) |
| |
| It("should ignore missing fields", func() { |
| m := MatchFields(IgnoreMissing, Fields{ |
| "B": Equal("b"), |
| "A": Equal("a"), |
| }) |
| Ω(allFields).Should(m, "should match all fields") |
| Ω(missingFields).Should(m, "should ignore missing fields") |
| Ω(extraFields).ShouldNot(m, "should fail with extra fields") |
| Ω(emptyFields).ShouldNot(m, "should fail with empty fields") |
| }) |
| |
| It("should ignore extra fields", func() { |
| m := MatchFields(IgnoreExtras, Fields{ |
| "B": Equal("b"), |
| "A": Equal("a"), |
| }) |
| Ω(allFields).Should(m, "should match all fields") |
| Ω(missingFields).ShouldNot(m, "should fail with missing fields") |
| Ω(extraFields).Should(m, "should ignore extra fields") |
| Ω(emptyFields).ShouldNot(m, "should fail with empty fields") |
| }) |
| |
| It("should ignore missing and extra fields", func() { |
| m := MatchFields(IgnoreMissing|IgnoreExtras, Fields{ |
| "B": Equal("b"), |
| "A": Equal("a"), |
| }) |
| Ω(allFields).Should(m, "should match all fields") |
| Ω(missingFields).Should(m, "should ignore missing fields") |
| Ω(extraFields).Should(m, "should ignore extra fields") |
| Ω(emptyFields).ShouldNot(m, "should fail with empty fields") |
| |
| m = MatchFields(IgnoreMissing|IgnoreExtras, Fields{ |
| "A": Equal("a"), |
| "B": Equal("fail"), |
| }) |
| Ω(allFields).ShouldNot(m, "should run nested matchers") |
| }) |
| }) |