@@ -121,6 +121,58 @@ public OperableObject(int num)
121
121
return new OperableObject ( a . Num ^ b ) ;
122
122
}
123
123
124
+ public static bool operator <= ( int a , OperableObject b )
125
+ {
126
+ return ( a <= b . Num ) ;
127
+ }
128
+ public static bool operator <= ( OperableObject a , OperableObject b )
129
+ {
130
+ return ( a . Num <= b . Num ) ;
131
+ }
132
+ public static bool operator <= ( OperableObject a , int b )
133
+ {
134
+ return ( a . Num <= b ) ;
135
+ }
136
+
137
+ public static bool operator >= ( int a , OperableObject b )
138
+ {
139
+ return ( a >= b . Num ) ;
140
+ }
141
+ public static bool operator >= ( OperableObject a , OperableObject b )
142
+ {
143
+ return ( a . Num >= b . Num ) ;
144
+ }
145
+ public static bool operator >= ( OperableObject a , int b )
146
+ {
147
+ return ( a . Num >= b ) ;
148
+ }
149
+
150
+ public static bool operator < ( int a , OperableObject b )
151
+ {
152
+ return ( a < b . Num ) ;
153
+ }
154
+ public static bool operator < ( OperableObject a , OperableObject b )
155
+ {
156
+ return ( a . Num < b . Num ) ;
157
+ }
158
+ public static bool operator < ( OperableObject a , int b )
159
+ {
160
+ return ( a . Num < b ) ;
161
+ }
162
+
163
+ public static bool operator > ( int a , OperableObject b )
164
+ {
165
+ return ( a > b . Num ) ;
166
+ }
167
+ public static bool operator > ( OperableObject a , OperableObject b )
168
+ {
169
+ return ( a . Num > b . Num ) ;
170
+ }
171
+ public static bool operator > ( OperableObject a , int b )
172
+ {
173
+ return ( a . Num > b ) ;
174
+ }
175
+
124
176
public static OperableObject operator << ( OperableObject a , int offset )
125
177
{
126
178
return new OperableObject ( a . Num << offset ) ;
@@ -133,7 +185,7 @@ public OperableObject(int num)
133
185
}
134
186
135
187
[ Test ]
136
- public void OperatorOverloads ( )
188
+ public void SymmetricalOperatorOverloads ( )
137
189
{
138
190
string name = string . Format ( "{0}.{1}" ,
139
191
typeof ( OperableObject ) . DeclaringType . Name ,
@@ -165,6 +217,18 @@ public void OperatorOverloads()
165
217
166
218
c = a ^ b
167
219
assert c.Num == a.Num ^ b.Num
220
+
221
+ c = a <= b
222
+ assert c == (a.Num <= b.Num)
223
+
224
+ c = a >= b
225
+ assert c == (a.Num >= b.Num)
226
+
227
+ c = a < b
228
+ assert c == (a.Num < b.Num)
229
+
230
+ c = a > b
231
+ assert c == (a.Num > b.Num)
168
232
" ) ;
169
233
}
170
234
[ Test ]
@@ -200,6 +264,18 @@ public void ForwardOperatorOverloads()
200
264
201
265
c = a ^ b
202
266
assert c.Num == a.Num ^ b
267
+
268
+ c = a <= b
269
+ assert c == (a.Num <= b)
270
+
271
+ c = a >= b
272
+ assert c == (a.Num >= b)
273
+
274
+ c = a < b
275
+ assert c == (a.Num < b)
276
+
277
+ c = a > b
278
+ assert c == (a.Num > b)
203
279
" ) ;
204
280
}
205
281
@@ -235,6 +311,18 @@ public void ReverseOperatorOverloads()
235
311
236
312
c = a ^ b
237
313
assert c.Num == a ^ b.Num
314
+
315
+ c = a <= b
316
+ assert c == (a <= b.Num)
317
+
318
+ c = a >= b
319
+ assert c == (a >= b.Num)
320
+
321
+ c = a < b
322
+ assert c == (a < b.Num)
323
+
324
+ c = a > b
325
+ assert c == (a > b.Num)
238
326
" ) ;
239
327
240
328
}