1+ using System ;
12using FluentAssertions ;
23using Xer . DomainDriven . Tests . Entities ;
34using Xunit ;
@@ -6,10 +7,10 @@ namespace Xer.DomainDriven.Tests
67{
78 public class ValueObjectTests
89 {
9- public class EqualsMethod
10+ public class Equality
1011 {
1112 [ Fact ]
12- public void ShouldBeTrueIfValueObjectsMatchByValue ( )
13+ public void EqualityOperatorShouldBeTrueIfValueObjectsMatchByValue ( )
1314 {
1415 TestValueObject valueObject1 = new TestValueObject ( "Test" , 123 ) ;
1516 TestValueObject valueObject2 = new TestValueObject ( "Test" , 123 ) ;
@@ -18,7 +19,16 @@ public void ShouldBeTrueIfValueObjectsMatchByValue()
1819 }
1920
2021 [ Fact ]
21- public void ShouldNotBeTrueIfValueObjectsDoNotMatchByValue ( )
22+ public void EqualityOperatorShouldBeTrueIfValueObjectsAreTheSameReference ( )
23+ {
24+ TestValueObject valueObject1 = new TestValueObject ( "Test" , 123 ) ;
25+ TestValueObject sameReference = valueObject1 ;
26+
27+ ( valueObject1 == sameReference ) . Should ( ) . BeTrue ( ) ;
28+ }
29+
30+ [ Fact ]
31+ public void EqualityOperatorShouldBeFalseIfValueObjectsDoNotMatchByValue ( )
2232 {
2333 TestValueObject valueObject1 = new TestValueObject ( "Test" , 123 ) ;
2434 TestValueObject valueObject2 = new TestValueObject ( "Test2" , 1234 ) ;
@@ -27,13 +37,95 @@ public void ShouldNotBeTrueIfValueObjectsDoNotMatchByValue()
2737 }
2838
2939 [ Fact ]
30- public void ShouldNotBeTrueIfComparedWithNull ( )
40+ public void EqualityOperatorShouldBeFalseIfComparedWithNull ( )
3141 {
3242 TestValueObject valueObject1 = new TestValueObject ( "Test" , 123 ) ;
3343 TestValueObject valueObject2 = null ;
3444
3545 ( valueObject1 == valueObject2 ) . Should ( ) . BeFalse ( ) ;
3646 }
47+
48+ [ Fact ]
49+ public void EqualsShouldBeTrueIfValueObjectsMatchByValue ( )
50+ {
51+ TestValueObject valueObject1 = new TestValueObject ( "Test" , 123 ) ;
52+ TestValueObject valueObject2 = new TestValueObject ( "Test" , 123 ) ;
53+
54+ valueObject1 . Equals ( valueObject2 ) . Should ( ) . BeTrue ( ) ;
55+ }
56+
57+ [ Fact ]
58+ public void EqualsShouldBeTrueIfValueObjectsAreTheSameReference ( )
59+ {
60+ TestValueObject valueObject1 = new TestValueObject ( "Test" , 123 ) ;
61+ TestValueObject sameReference = valueObject1 ;
62+
63+ valueObject1 . Equals ( sameReference ) . Should ( ) . BeTrue ( ) ;
64+ }
65+
66+ [ Fact ]
67+ public void EqualsShouldNotBeTrueIfValueObjectsDoNotMatchByValue ( )
68+ {
69+ TestValueObject valueObject1 = new TestValueObject ( "Test" , 123 ) ;
70+ TestValueObject valueObject2 = new TestValueObject ( "Test2" , 1234 ) ;
71+
72+ valueObject1 . Equals ( valueObject2 ) . Should ( ) . BeFalse ( ) ;
73+ }
74+
75+ [ Fact ]
76+ public void EqualsOperatorShouldNotBeTrueIfComparedWithNull ( )
77+ {
78+ TestValueObject valueObject1 = new TestValueObject ( "Test" , 123 ) ;
79+ TestValueObject valueObject2 = null ;
80+
81+ valueObject1 . Equals ( valueObject2 ) . Should ( ) . BeFalse ( ) ;
82+ }
83+
84+ [ Fact ]
85+ public void ObjectEqualsShouldBeTrueIfValueObjectsMatchByValue ( )
86+ {
87+ TestValueObject valueObject1 = new TestValueObject ( "Test" , 123 ) ;
88+ TestValueObject valueObject2 = new TestValueObject ( "Test" , 123 ) ;
89+
90+ valueObject1 . Equals ( ( object ) valueObject2 ) . Should ( ) . BeTrue ( ) ;
91+ }
92+
93+ [ Fact ]
94+ public void ObjectEqualsShouldBeTrueIfValueObjectsAreTheSameReference ( )
95+ {
96+ TestValueObject valueObject1 = new TestValueObject ( "Test" , 123 ) ;
97+ TestValueObject sameReference = valueObject1 ;
98+
99+ valueObject1 . Equals ( ( object ) sameReference ) . Should ( ) . BeTrue ( ) ;
100+ }
101+
102+ [ Fact ]
103+ public void ObjectEqualsShouldNotBeTrueIfValueObjectsDoNotMatchByValue ( )
104+ {
105+ TestValueObject valueObject1 = new TestValueObject ( "Test" , 123 ) ;
106+ TestValueObject valueObject2 = new TestValueObject ( "Test2" , 1234 ) ;
107+
108+ valueObject1 . Equals ( ( object ) valueObject2 ) . Should ( ) . BeFalse ( ) ;
109+ }
110+
111+ [ Fact ]
112+ public void ObjectEqualsOperatorShouldNotBeTrueIfComparedWithNull ( )
113+ {
114+ TestValueObject valueObject1 = new TestValueObject ( "Test" , 123 ) ;
115+ TestValueObject valueObject2 = null ;
116+
117+ valueObject1 . Equals ( ( object ) valueObject2 ) . Should ( ) . BeFalse ( ) ;
118+ }
119+
120+ [ Fact ]
121+ public void ShouldNotBeEqualIfValueObjectsMatchByValueButDifferentType ( )
122+ {
123+ var valueObject1 = new TestValueObject ( "Test" , 123 ) ;
124+ var valueObject2 = new TestValueObjectSecond ( "Test" , 123 ) ;
125+
126+ // Same value, should be equal.
127+ valueObject1 . Should ( ) . NotBe ( valueObject2 ) ;
128+ }
37129 }
38130
39131 public class GetHashCodeMethod
0 commit comments