1: [TestClass]
2: public class EqualityTests
3: {
4: [TestMethod]
5: public void EqualsWithTwoNullObjectsReturnsTrue()
6: {
7: const SimpleDomainObject obj1 = null;
8: const SimpleDomainObject obj2 = null;
9:
10: var equality = Equals(obj1, obj2);
11:
12: Assert.AreEqual(true, equality);
13: }
14:
15: [TestMethod]
16: public void EqualsWithNullObjectReturnsFalse()
17: {
18: const SimpleDomainObject obj1 = null;
19: var obj2 = new SimpleDomainObject();
20:
21: var equality = Equals(obj1, obj2);
22:
23: Assert.AreEqual(false, equality);
24: }
25:
26: [TestMethod]
27: public void EqualsWithTransientObjectsReturnsFalse()
28: {
29: var obj1 = new SimpleDomainObject();
30: var obj2 = new SimpleDomainObject();
31:
32: var equality = Equals(obj1, obj2);
33:
34: Assert.AreEqual(false, equality);
35: }
36:
37: [TestMethod]
38: public void EqualsWithOneTransientObjectReturnsFalse()
39: {
40: var obj1 = new SimpleDomainObject();
41: var obj2 = new SimpleDomainObject();
42:
43: obj1.SetId(1);
44:
45: var equality = Equals(obj1, obj2);
46:
47: Assert.AreEqual(false, equality);
48: }
49:
50: [TestMethod]
51: public void EqualsWithDifferentIdsReturnsFalse()
52: {
53: var obj1 = new SimpleDomainObject();
54: var obj2 = new SimpleDomainObject();
55:
56: obj1.SetId(1);
57: obj2.SetId(2);
58:
59: var equality = Equals(obj1, obj2);
60:
61: Assert.AreEqual(false, equality);
62: }
63:
64: [TestMethod]
65: public void EqualsWithSameIdsReturnsTrue()
66: {
67: var obj1 = new SimpleDomainObject();
68: var obj2 = new SimpleDomainObject();
69:
70: obj1.SetId(1);
71: obj2.SetId(1);
72:
73: var equality = Equals(obj1, obj2);
74:
75: Assert.AreEqual(true, equality);
76: }
77:
78: [TestMethod]
79: public void EqualsWithSameIdsInSubclassReturnsTrue()
80: {
81: var obj1 = new SimpleDomainObject();
82: var obj2 = new SubSimpleDomainObject();
83:
84: obj1.SetId(1);
85: obj2.SetId(1);
86:
87: var equality = Equals(obj1, obj2);
88:
89: Assert.AreEqual(true, equality);
90: }
91:
92: [TestMethod]
93: public void EqualsWithDifferentIdsInDisparateClassesReturnsFalse()
94: {
95: var obj1 = new SimpleDomainObject();
96: var obj2 = new OtherSimpleDomainObject();
97:
98: obj1.SetId(1);
99: obj2.SetId(2);
100:
101: var equality = Equals(obj1, obj2);
102:
103: Assert.AreEqual(false, equality);
104: }
105:
106: [TestMethod]
107: public void EqualsWithSameIdsInDisparateClassesReturnsFalse()
108: {
109: var obj1 = new SimpleDomainObject();
110: var obj2 = new OtherSimpleDomainObject();
111:
112: obj1.SetId(1);
113: obj2.SetId(1);
114:
115: var equality = Equals(obj1, obj2);
116:
117: Assert.AreEqual(false, equality);
118: }
119: }
120:
121: public class SimpleDomainObject : DomainObject<SimpleDomainObject,int>
122: {
123: public void SetId(int ident)
124: {
125: id = ident;
126: }
127: }
128:
129: public class SubSimpleDomainObject : SimpleDomainObject{}
130:
131: public class OtherSimpleDomainObject : DomainObject<OtherSimpleDomainObject,int>
132: {
133: public void SetId(int ident)
134: {
135: id = ident;
136: }
137: }