1- namespace ValueObjectCore . Tests ;
2-
3- public class ValueObjectTests
1+ namespace ValueObjectCore . UnitTests
42{
5- [ Fact ]
6- public void Equals_WhenCalledWithNull_ReturnsFalse ( )
7- {
8- // Arrange
9- var valueObject = new SampleValueObject ( ) ;
10-
11- // Act
12- var result = valueObject . Equals ( null ) ;
13-
14- // Assert
15- Assert . False ( result ) ;
16- }
17-
18- [ Fact ]
19- public void Equals_WhenCalledWithSameInstance_ReturnsTrue ( )
20- {
21- // Arrange
22- var valueObject = new SampleValueObject ( ) ;
23-
24- // Act
25- var result = valueObject . Equals ( valueObject ) ;
26-
27- // Assert
28- Assert . True ( result ) ;
29- }
30-
31- [ Fact ]
32- public void Equals_WhenCalledWithEqualValueObjects_ReturnsTrue ( )
33- {
34- // Arrange
35- var valueObject1 = new SampleValueObject ( ) ;
36- var valueObject2 = new SampleValueObject ( ) ;
37-
38- // Act
39- var result = valueObject1 . Equals ( valueObject2 ) ;
40-
41- // Assert
42- Assert . True ( result ) ;
43- }
44-
45- [ Fact ]
46- public void Equals_WhenCalledWithDifferentValueObjects_ReturnsFalse ( )
47- {
48- // Arrange
49- var valueObject1 = new SampleValueObject ( ) ;
50- var valueObject2 = new SampleValueObject { PropertyOne = "Different" } ;
51-
52- // Act
53- var result = valueObject1 . Equals ( valueObject2 ) ;
54-
55- // Assert
56- Assert . False ( result ) ;
57- }
58-
59- [ Fact ]
60- public void GetHashCode_WhenCalled_ReturnsHashCode ( )
61- {
62- // Arrange
63- var valueObject = new SampleValueObject ( ) ;
64-
65- // Act
66- var result = valueObject . GetHashCode ( ) ;
67-
68- // Assert
69- Assert . Equal ( valueObject . GetAtomicValues ( ) . Aggregate ( 0 , ( x , y ) => HashCode . Combine ( x , y ) ) , result ) ;
70- }
71- }
72-
73- internal sealed class SampleValueObject : ValueObject
74- {
75- public string PropertyOne { get ; set ; } = "PropertyOne" ;
76-
77- public int PropertyTwo { get ; set ; } = 2 ;
78-
79- public override IEnumerable < object > GetAtomicValues ( )
3+ public class ValueObjectTests
804 {
81- yield return PropertyOne ;
82- yield return PropertyTwo ;
5+ private class TestValueObject ( IEnumerable < object ? > values ) : ValueObject
6+ {
7+ public override IEnumerable < object ? > GetAtomicValues ( )
8+ {
9+ return values ;
10+ }
11+ }
12+
13+ [ Fact ]
14+ public void Equals_ReturnsTrue_ForEqualValueObjects ( )
15+ {
16+ var valueObject1 = new TestValueObject ( [ 1 , "test" , null ] ) ;
17+ var valueObject2 = new TestValueObject ( [ 1 , "test" , null ] ) ;
18+
19+ Assert . True ( valueObject1 . Equals ( valueObject2 ) ) ;
20+ }
21+
22+ [ Fact ]
23+ public void Equals_ReturnsFalse_ForDifferentValueObjects ( )
24+ {
25+ var valueObject1 = new TestValueObject ( [ 1 , "test" , null ] ) ;
26+ var valueObject2 = new TestValueObject ( [ 2 , "test" , null ] ) ;
27+
28+ Assert . False ( valueObject1 . Equals ( valueObject2 ) ) ;
29+ }
30+
31+ [ Fact ]
32+ public void Equals_ReturnsFalse_WhenOtherIsNull ( )
33+ {
34+ var valueObject = new TestValueObject ( [ 1 , "test" , null ] ) ;
35+
36+ Assert . False ( valueObject . Equals ( null ) ) ;
37+ }
38+
39+ [ Fact ]
40+ public void GetHashCode_ReturnsSameHashCode_ForEqualValueObjects ( )
41+ {
42+ var valueObject1 = new TestValueObject ( [ 1 , "test" , null ] ) ;
43+ var valueObject2 = new TestValueObject ( [ 1 , "test" , null ] ) ;
44+
45+ Assert . Equal ( valueObject1 . GetHashCode ( ) , valueObject2 . GetHashCode ( ) ) ;
46+ }
47+
48+ [ Fact ]
49+ public void GetHashCode_ReturnsDifferentHashCode_ForDifferentValueObjects ( )
50+ {
51+ var valueObject1 = new TestValueObject ( [ 1 , "test" , null ] ) ;
52+ var valueObject2 = new TestValueObject ( [ 2 , "test" , null ] ) ;
53+
54+ Assert . NotEqual ( valueObject1 . GetHashCode ( ) , valueObject2 . GetHashCode ( ) ) ;
55+ }
56+
57+ [ Fact ]
58+ public void Equals_ReturnsFalse_ForDifferentTypes ( )
59+ {
60+ var valueObject = new TestValueObject ( [ 1 , "test" , null ] ) ;
61+ var differentTypeObject = new object ( ) ;
62+
63+ Assert . False ( valueObject . Equals ( differentTypeObject ) ) ;
64+ }
8365 }
84- }
66+ }
0 commit comments