1
+ using System ;
1
2
using FluentAssertions ;
2
3
using Xer . DomainDriven . Tests . Entities ;
3
4
using Xunit ;
@@ -6,10 +7,10 @@ namespace Xer.DomainDriven.Tests
6
7
{
7
8
public class ValueObjectTests
8
9
{
9
- public class EqualsMethod
10
+ public class Equality
10
11
{
11
12
[ Fact ]
12
- public void ShouldBeTrueIfValueObjectsMatchByValue ( )
13
+ public void EqualityOperatorShouldBeTrueIfValueObjectsMatchByValue ( )
13
14
{
14
15
TestValueObject valueObject1 = new TestValueObject ( "Test" , 123 ) ;
15
16
TestValueObject valueObject2 = new TestValueObject ( "Test" , 123 ) ;
@@ -18,7 +19,16 @@ public void ShouldBeTrueIfValueObjectsMatchByValue()
18
19
}
19
20
20
21
[ 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 ( )
22
32
{
23
33
TestValueObject valueObject1 = new TestValueObject ( "Test" , 123 ) ;
24
34
TestValueObject valueObject2 = new TestValueObject ( "Test2" , 1234 ) ;
@@ -27,13 +37,95 @@ public void ShouldNotBeTrueIfValueObjectsDoNotMatchByValue()
27
37
}
28
38
29
39
[ Fact ]
30
- public void ShouldNotBeTrueIfComparedWithNull ( )
40
+ public void EqualityOperatorShouldBeFalseIfComparedWithNull ( )
31
41
{
32
42
TestValueObject valueObject1 = new TestValueObject ( "Test" , 123 ) ;
33
43
TestValueObject valueObject2 = null ;
34
44
35
45
( valueObject1 == valueObject2 ) . Should ( ) . BeFalse ( ) ;
36
46
}
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
+ }
37
129
}
38
130
39
131
public class GetHashCodeMethod
0 commit comments