| package assertions |
| |
| import ( |
| "testing" |
| |
| "github.com/smartystreets/assertions/internal/unit" |
| ) |
| |
| func TestEqualityFixture(t *testing.T) { |
| unit.Run(new(EqualityFixture), t) |
| } |
| |
| type EqualityFixture struct { |
| *unit.Fixture |
| } |
| |
| func (this *EqualityFixture) TestNilNil() { |
| spec := newEqualityMethodSpecification(nil, nil) |
| this.So(spec.IsSatisfied(), ShouldBeFalse) |
| } |
| |
| func (this *EqualityFixture) TestEligible1() { |
| a := Eligible1{"hi"} |
| b := Eligible1{"hi"} |
| specification := newEqualityMethodSpecification(a, b) |
| this.So(specification.IsSatisfied(), ShouldBeTrue) |
| this.So(specification.AreEqual(), ShouldBeTrue) |
| } |
| |
| func (this *EqualityFixture) TestAreEqual() { |
| a := Eligible1{"hi"} |
| b := Eligible1{"hi"} |
| specification := newEqualityMethodSpecification(a, b) |
| this.So(specification.IsSatisfied(), ShouldBeTrue) |
| this.So(specification.AreEqual(), ShouldBeTrue) |
| } |
| |
| func (this *EqualityFixture) TestAreNotEqual() { |
| a := Eligible1{"hi"} |
| b := Eligible1{"bye"} |
| specification := newEqualityMethodSpecification(a, b) |
| this.So(specification.IsSatisfied(), ShouldBeTrue) |
| this.So(specification.AreEqual(), ShouldBeFalse) |
| } |
| |
| func (this *EqualityFixture) TestEligible2() { |
| a := Eligible2{"hi"} |
| b := Eligible2{"hi"} |
| specification := newEqualityMethodSpecification(a, b) |
| this.So(specification.IsSatisfied(), ShouldBeTrue) |
| } |
| |
| func (this *EqualityFixture) TestEligible1_PointerReceiver() { |
| a := &Eligible1{"hi"} |
| b := Eligible1{"hi"} |
| this.So(a.Equal(b), ShouldBeTrue) |
| specification := newEqualityMethodSpecification(a, b) |
| this.So(specification.IsSatisfied(), ShouldBeTrue) |
| } |
| |
| func (this *EqualityFixture) TestIneligible_PrimitiveTypes() { |
| specification := newEqualityMethodSpecification(1, 1) |
| this.So(specification.IsSatisfied(), ShouldBeFalse) |
| } |
| |
| func (this *EqualityFixture) TestIneligible_DisparateTypes() { |
| a := Eligible1{"hi"} |
| b := Eligible2{"hi"} |
| specification := newEqualityMethodSpecification(a, b) |
| this.So(specification.IsSatisfied(), ShouldBeFalse) |
| } |
| |
| func (this *EqualityFixture) TestIneligible_NoEqualMethod() { |
| a := Ineligible_NoEqualMethod{} |
| b := Ineligible_NoEqualMethod{} |
| specification := newEqualityMethodSpecification(a, b) |
| this.So(specification.IsSatisfied(), ShouldBeFalse) |
| } |
| |
| func (this *EqualityFixture) TestIneligible_EqualMethodReceivesNoInput() { |
| a := Ineligible_EqualMethodNoInputs{} |
| b := Ineligible_EqualMethodNoInputs{} |
| specification := newEqualityMethodSpecification(a, b) |
| this.So(specification.IsSatisfied(), ShouldBeFalse) |
| } |
| |
| func (this *EqualityFixture) TestIneligible_EqualMethodReceivesTooManyInputs() { |
| a := Ineligible_EqualMethodTooManyInputs{} |
| b := Ineligible_EqualMethodTooManyInputs{} |
| specification := newEqualityMethodSpecification(a, b) |
| this.So(specification.IsSatisfied(), ShouldBeFalse) |
| } |
| |
| func (this *EqualityFixture) TestIneligible_EqualMethodReceivesWrongInput() { |
| a := Ineligible_EqualMethodWrongInput{} |
| b := Ineligible_EqualMethodWrongInput{} |
| specification := newEqualityMethodSpecification(a, b) |
| this.So(specification.IsSatisfied(), ShouldBeFalse) |
| } |
| |
| func (this *EqualityFixture) TestIneligible_EqualMethodReturnsNoOutputs() { |
| a := Ineligible_EqualMethodNoOutputs{} |
| b := Ineligible_EqualMethodNoOutputs{} |
| specification := newEqualityMethodSpecification(a, b) |
| this.So(specification.IsSatisfied(), ShouldBeFalse) |
| } |
| |
| func (this *EqualityFixture) TestIneligible_EqualMethodReturnsTooManyOutputs() { |
| a := Ineligible_EqualMethodTooManyOutputs{} |
| b := Ineligible_EqualMethodTooManyOutputs{} |
| specification := newEqualityMethodSpecification(a, b) |
| this.So(specification.IsSatisfied(), ShouldBeFalse) |
| } |
| |
| func (this *EqualityFixture) TestIneligible_EqualMethodReturnsWrongOutputs() { |
| a := Ineligible_EqualMethodWrongOutput{} |
| b := Ineligible_EqualMethodWrongOutput{} |
| specification := newEqualityMethodSpecification(a, b) |
| this.So(specification.IsSatisfied(), ShouldBeFalse) |
| } |
| |
| func (this *EqualityFixture) TestEligibleAsymmetric_EqualMethodResultDiffersWhenArgumentsInverted() { |
| a := EligibleAsymmetric{a: 0} |
| b := EligibleAsymmetric{a: 1} |
| specification := newEqualityMethodSpecification(a, b) |
| this.So(specification.IsSatisfied(), ShouldBeTrue) |
| this.So(specification.AreEqual(), ShouldBeFalse) |
| } |
| |
| /**************************************************************************/ |
| |
| type ( |
| Eligible1 struct{ a string } |
| Eligible2 struct{ a string } |
| EligibleAsymmetric struct{ a int } |
| Ineligible_NoEqualMethod struct{} |
| Ineligible_EqualMethodNoInputs struct{} |
| Ineligible_EqualMethodNoOutputs struct{} |
| Ineligible_EqualMethodTooManyInputs struct{} |
| Ineligible_EqualMethodTooManyOutputs struct{} |
| Ineligible_EqualMethodWrongInput struct{} |
| Ineligible_EqualMethodWrongOutput struct{} |
| ) |
| |
| func (this Eligible1) Equal(that Eligible1) bool { return this.a == that.a } |
| func (this Eligible2) Equal(that Eligible2) bool { return this.a == that.a } |
| func (this EligibleAsymmetric) Equal(that EligibleAsymmetric) bool { |
| return this.a == 0 |
| } |
| func (this Ineligible_EqualMethodNoInputs) Equal() bool { return true } |
| func (this Ineligible_EqualMethodNoOutputs) Equal(that Ineligible_EqualMethodNoOutputs) {} |
| func (this Ineligible_EqualMethodTooManyInputs) Equal(a, b bool) bool { return true } |
| func (this Ineligible_EqualMethodTooManyOutputs) Equal(bool) (bool, bool) { return true, true } |
| func (this Ineligible_EqualMethodWrongInput) Equal(a string) bool { return true } |
| func (this Ineligible_EqualMethodWrongOutput) Equal(Ineligible_EqualMethodWrongOutput) int { return 0 } |