@@ -149,6 +149,58 @@ public OperableObject(int num)
149
149
return new OperableObject ( a . Num ^ b ) ;
150
150
}
151
151
152
+ public static bool operator <= ( int a , OperableObject b )
153
+ {
154
+ return ( a <= b . Num ) ;
155
+ }
156
+ public static bool operator <= ( OperableObject a , OperableObject b )
157
+ {
158
+ return ( a . Num <= b . Num ) ;
159
+ }
160
+ public static bool operator <= ( OperableObject a , int b )
161
+ {
162
+ return ( a . Num <= b ) ;
163
+ }
164
+
165
+ public static bool operator >= ( int a , OperableObject b )
166
+ {
167
+ return ( a >= b . Num ) ;
168
+ }
169
+ public static bool operator >= ( OperableObject a , OperableObject b )
170
+ {
171
+ return ( a . Num >= b . Num ) ;
172
+ }
173
+ public static bool operator >= ( OperableObject a , int b )
174
+ {
175
+ return ( a . Num >= b ) ;
176
+ }
177
+
178
+ public static bool operator < ( int a , OperableObject b )
179
+ {
180
+ return ( a < b . Num ) ;
181
+ }
182
+ public static bool operator < ( OperableObject a , OperableObject b )
183
+ {
184
+ return ( a . Num < b . Num ) ;
185
+ }
186
+ public static bool operator < ( OperableObject a , int b )
187
+ {
188
+ return ( a . Num < b ) ;
189
+ }
190
+
191
+ public static bool operator > ( int a , OperableObject b )
192
+ {
193
+ return ( a > b . Num ) ;
194
+ }
195
+ public static bool operator > ( OperableObject a , OperableObject b )
196
+ {
197
+ return ( a . Num > b . Num ) ;
198
+ }
199
+ public static bool operator > ( OperableObject a , int b )
200
+ {
201
+ return ( a . Num > b ) ;
202
+ }
203
+
152
204
public static OperableObject operator << ( OperableObject a , int offset )
153
205
{
154
206
return new OperableObject ( a . Num << offset ) ;
@@ -161,7 +213,7 @@ public OperableObject(int num)
161
213
}
162
214
163
215
[ Test ]
164
- public void OperatorOverloads ( )
216
+ public void SymmetricalOperatorOverloads ( )
165
217
{
166
218
string name = string . Format ( "{0}.{1}" ,
167
219
typeof ( OperableObject ) . DeclaringType . Name ,
@@ -206,6 +258,18 @@ public void OperatorOverloads()
206
258
207
259
c = a ^ b
208
260
assert c.Num == a.Num ^ b.Num
261
+
262
+ c = a <= b
263
+ assert c == (a.Num <= b.Num)
264
+
265
+ c = a >= b
266
+ assert c == (a.Num >= b.Num)
267
+
268
+ c = a < b
269
+ assert c == (a.Num < b.Num)
270
+
271
+ c = a > b
272
+ assert c == (a.Num > b.Num)
209
273
" ) ;
210
274
}
211
275
@@ -263,6 +327,18 @@ public void ForwardOperatorOverloads()
263
327
264
328
c = a ^ b
265
329
assert c.Num == a.Num ^ b
330
+
331
+ c = a <= b
332
+ assert c == (a.Num <= b)
333
+
334
+ c = a >= b
335
+ assert c == (a.Num >= b)
336
+
337
+ c = a < b
338
+ assert c == (a.Num < b)
339
+
340
+ c = a > b
341
+ assert c == (a.Num > b)
266
342
" ) ;
267
343
}
268
344
@@ -304,6 +380,18 @@ public void ReverseOperatorOverloads()
304
380
305
381
c = a ^ b
306
382
assert c.Num == a ^ b.Num
383
+
384
+ c = a <= b
385
+ assert c == (a <= b.Num)
386
+
387
+ c = a >= b
388
+ assert c == (a >= b.Num)
389
+
390
+ c = a < b
391
+ assert c == (a < b.Num)
392
+
393
+ c = a > b
394
+ assert c == (a > b.Num)
307
395
" ) ;
308
396
309
397
}