71 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			71 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Go
		
	
	
	
| package testutil
 | |
| 
 | |
| import (
 | |
| 	. "github.com/onsi/ginkgo/v2"
 | |
| 	. "github.com/onsi/gomega"
 | |
| )
 | |
| 
 | |
| var _ = Describe("Options Gomega Matcher", func() {
 | |
| 	type TestOptions struct {
 | |
| 		Foo  string
 | |
| 		Bar  int
 | |
| 		List []string
 | |
| 
 | |
| 		// unexported fields should be ignored
 | |
| 		unexported string
 | |
| 		another    string
 | |
| 	}
 | |
| 
 | |
| 	Context("two empty option structs are equal", func() {
 | |
| 		Expect(EqualOpts(TestOptions{}).Match(TestOptions{})).To(BeTrue())
 | |
| 	})
 | |
| 
 | |
| 	Context("two options with the same content should be equal", func() {
 | |
| 		opt1 := TestOptions{Foo: "foo", Bar: 1}
 | |
| 		opt2 := TestOptions{Foo: "foo", Bar: 1}
 | |
| 		Expect(EqualOpts(opt1).Match(opt2)).To(BeTrue())
 | |
| 	})
 | |
| 
 | |
| 	Context("when two options have different content", func() {
 | |
| 		opt1 := TestOptions{Foo: "foo", Bar: 1}
 | |
| 		opt2 := TestOptions{Foo: "foo", Bar: 2}
 | |
| 		Expect(EqualOpts(opt1).Match(opt2)).To(BeFalse())
 | |
| 	})
 | |
| 
 | |
| 	Context("when two options have different types they are not equal", func() {
 | |
| 		opt1 := TestOptions{Foo: "foo", Bar: 1}
 | |
| 		opt2 := struct {
 | |
| 			Foo string
 | |
| 			Bar int
 | |
| 		}{
 | |
| 			Foo: "foo",
 | |
| 			Bar: 1,
 | |
| 		}
 | |
| 		Expect(EqualOpts(opt1).Match(opt2)).To(BeFalse())
 | |
| 	})
 | |
| 
 | |
| 	Context("when two options have different unexported fields they are equal", func() {
 | |
| 		opts1 := TestOptions{Foo: "foo", Bar: 1, unexported: "unexported", another: "another"}
 | |
| 		opts2 := TestOptions{Foo: "foo", Bar: 1, unexported: "unexported2"}
 | |
| 		Expect(EqualOpts(opts1).Match(opts2)).To(BeTrue())
 | |
| 	})
 | |
| 
 | |
| 	Context("when two options have different list content they are not equal", func() {
 | |
| 		opt1 := TestOptions{List: []string{"foo", "bar"}}
 | |
| 		opt2 := TestOptions{List: []string{"foo", "baz"}}
 | |
| 		Expect(EqualOpts(opt1).Match(opt2)).To(BeFalse())
 | |
| 	})
 | |
| 
 | |
| 	Context("when two options have different list lengths they are not equal", func() {
 | |
| 		opt1 := TestOptions{List: []string{"foo", "bar"}}
 | |
| 		opt2 := TestOptions{List: []string{"foo", "bar", "baz"}}
 | |
| 		Expect(EqualOpts(opt1).Match(opt2)).To(BeFalse())
 | |
| 	})
 | |
| 
 | |
| 	Context("when one options has a list of length 0 and the other is nil they are equal", func() {
 | |
| 		otp1 := TestOptions{List: []string{}}
 | |
| 		opt2 := TestOptions{}
 | |
| 		Expect(EqualOpts(otp1).Match(opt2)).To(BeTrue())
 | |
| 	})
 | |
| })
 |