1Imports System
2Imports Microsoft.VisualBasic.CompilerServices
3Imports NUnit.Framework
4<TestFixture()> _
5Public Class OperatorsTests
6    Sub New()
7        Helper.SetThreadCulture()
8    End Sub
9
10    <Test()> _
11    Sub TestOperatorsCompareEqual1()
12        Assert.IsTrue(Operators.CompareObjectEqual("True", True, False), """True"" = True")
13        Assert.IsTrue(Operators.CompareObjectEqual(True, "True", False), "True = ""True""")
14        Assert.IsTrue(Operators.CompareObjectEqual("False", False, False), """False"" = False")
15        Assert.IsTrue(Operators.CompareObjectEqual(False, "False", False), "False = ""False""")
16
17        Assert.IsFalse(Operators.CompareObjectEqual("True", False, False), """True"" = False")
18        Assert.IsFalse(Operators.CompareObjectEqual(False, "True", False), "False = ""True""")
19        Assert.IsFalse(Operators.CompareObjectEqual("False", True, False), """False"" = True")
20        Assert.IsFalse(Operators.CompareObjectEqual(True, "False", False), "True = ""False""")
21    End Sub
22
23    <Test(), ExpectedException(GetType(InvalidCastException))> _
24    Sub TestOperatorsCompareEqual2()
25        Assert.IsTrue(Operators.CompareObjectEqual("Truez", True, False), """Truez"" = True")
26    End Sub
27
28    <Test()> _
29    Sub TestOperatorsConcatenate1()
30        Dim o1, o2, o3 As Object
31        o1 = "a"
32        o2 = "b"
33        o3 = Operators.ConcatenateObject(o1, o2)
34        Assert.AreEqual(o3, "ab")
35    End Sub
36
37    <Test()> _
38    Sub TestOperatorsConcatenate2()
39        Dim o1, o2, o3 As Object
40        o1 = "d"
41        o2 = 1
42        o3 = Operators.ConcatenateObject(o1, o2)
43        Assert.AreEqual(o3, "d1")
44    End Sub
45
46    <Test()> _
47    Sub TestOperatorsConcatenate3()
48        Dim o1, o2, o3 As Object
49        o1 = "1"
50        o2 = 1
51        o3 = Operators.ConcatenateObject(o1, o2)
52        Assert.AreEqual(o3, "11")
53    End Sub
54
55    <Test()> _
56    Sub TestOperatorsConcatenate4()
57        Dim o1, o2, o3 As Object
58        o1 = 1
59        o2 = 1
60        o3 = Operators.ConcatenateObject(o1, o2)
61        Assert.AreEqual(o3, "11")
62    End Sub
63
64    <Test()> _
65    Sub TestOperatorsConcatenate5()
66        Dim o1, o2, o3 As Object
67        o1 = 1.1
68        o2 = 1
69        o3 = Operators.ConcatenateObject(o1, o2)
70        Assert.AreEqual(o3, "1.11")
71    End Sub
72
73    <Test()> _
74    Sub TestOperatorsConcatenate6()
75        Dim o1, o2, o3 As Object
76        o1 = DateTime.Now
77        o2 = DateTime.Now
78        o3 = Operators.ConcatenateObject(o1, o2)
79        Assert.AreEqual(o3, String.Concat(o1.ToString(), o2.ToString()))
80    End Sub
81
82    <Test()> _
83    Sub TestOperatorsConcatenate7()
84        Dim o1, o2, o3 As Object
85        o1 = "a"c
86        o2 = "b"c
87        o3 = Operators.ConcatenateObject(o1, o2)
88        Assert.AreEqual(o3, "ab")
89    End Sub
90
91    <Test()> _
92    Sub TestOperatorsConcatenate8()
93        Dim o1, o2, o3, o4, o5, o6 As Object
94        o1 = "b"c
95        o2 = Nothing
96        o3 = Operators.ConcatenateObject(o1, o2)
97        o4 = "b"c
98        o5 = DBNull.Value
99        o6 = Operators.ConcatenateObject(o1, o2)
100        Assert.AreEqual(o3, o6)
101    End Sub
102
103    <Test()> _
104    Sub TestOperatorsConcatenate9()
105        Dim o1, o2, o3 As Object
106        o1 = Nothing
107        o2 = 1
108        o3 = Operators.ConcatenateObject(o1, o2)
109        Assert.AreEqual(o3, "1")
110    End Sub
111
112    <Test()> _
113    Sub TestOperatorsConcatenate10()
114        Dim o1, o2, o3 As Object
115        o1 = Nothing
116        o2 = Nothing
117        o3 = Operators.ConcatenateObject(o1, o2)
118        Assert.AreEqual(o3, "")
119    End Sub
120
121    <Test()> _
122    Sub TestOperatorsConcatenate11()
123        Dim o1, o2, o3 As Object
124        o1 = New OperatorsImplementer()
125        o2 = "abc"
126        o3 = Operators.ConcatenateObject(o1, o2)
127        Assert.AreEqual(o3, "ok&")
128    End Sub
129
130    <Test()> _
131    Sub TestOperatorsConcatenate12()
132        Dim o1, o2, o3 As Object
133        o1 = "abc"
134        o2 = New OperatorsImplementer()
135        Try
136            o3 = Operators.ConcatenateObject(o1, o2)
137        Catch ex As InvalidCastException
138            Return
139        End Try
140        Assert.Fail()
141    End Sub
142
143    <Test()> _
144    Sub TestOperatorsNegate1()
145        Dim o1, o2 As Object
146        o1 = True
147        o2 = Operators.NegateObject(o1)
148        If (TypeOf o2 Is Short) Then
149            Assert.AreEqual(CType(o2, Short), 1S)
150        Else
151            Assert.Fail()
152        End If
153    End Sub
154
155    <Test()> _
156    Sub TestOperatorsNegate2()
157        Dim o1, o2 As Object
158        o1 = Nothing
159        o2 = Operators.NegateObject(o1)
160        If (TypeOf o2 Is Integer) Then
161            Assert.AreEqual(CType(o2, Integer), 0)
162        Else
163            Assert.Fail()
164        End If
165    End Sub
166
167    <Test()> _
168    Sub TestOperatorsNegate3()
169        Dim o1, o2 As Object
170        o1 = Nothing
171        o2 = Operators.NegateObject(o1)
172        If (TypeOf o2 Is Integer) Then
173            Assert.AreEqual(CType(o2, Integer), 0)
174        Else
175            Assert.Fail()
176        End If
177    End Sub
178
179    <Test()> _
180    Sub TestOperatorsNegate4()
181        Dim o1, o2 As Object
182        o1 = CType(2, Byte)
183        o2 = Operators.NegateObject(o1)
184        If (TypeOf o2 Is Short) Then
185            Assert.AreEqual(CType(o2, Short), -2)
186        Else
187            Assert.Fail()
188        End If
189    End Sub
190
191    <Test()> _
192    Sub TestOperatorsNegate5()
193        Dim o1, o2 As Object
194        o1 = CType(0, Byte)
195        o2 = Operators.NegateObject(o1)
196        If (TypeOf o2 Is Short) Then
197            Assert.AreEqual(CType(o2, Short), 0)
198        Else
199            Assert.Fail()
200        End If
201    End Sub
202
203    <Test()> _
204    Sub TestOperatorsNegate6()
205        Dim o1, o2 As Object
206        o1 = "1"c
207        Try
208            o2 = Operators.NegateObject(o1)
209        Catch ex As InvalidCastException
210            Return
211        End Try
212        Assert.Fail()
213    End Sub
214
215    <Test()> _
216    Sub TestOperatorsNegate7()
217        Dim o1 As DateTime = DateTime.Now
218        Dim o2 As Object
219        Try
220            o2 = Operators.NegateObject(o1)
221        Catch ex As InvalidCastException
222            Return
223        End Try
224        Assert.Fail()
225    End Sub
226
227    <Test()> _
228    Sub TestOperatorsNegate8()
229        Dim o1, o2 As Object
230        o1 = CType(-1, Decimal)
231        o2 = Operators.NegateObject(o1)
232        If (TypeOf o2 Is Decimal) Then
233            Assert.AreEqual(CType(o2, Decimal), 1)
234        Else
235            Assert.Fail()
236        End If
237    End Sub
238
239    <Test()> _
240    Sub TestOperatorsNegate9()
241        Dim o1, o2 As Object
242        o1 = CType(-1, Double)
243        o2 = Operators.NegateObject(o1)
244        If (TypeOf o2 Is Double) Then
245            Assert.AreEqual(CType(o2, Double), 1)
246        Else
247            Assert.Fail()
248        End If
249    End Sub
250
251    <Test()> _
252    Sub TestOperatorsNegate10()
253        Dim o1, o2 As Object
254        o1 = CType(Int16.MinValue, Int16)
255        o2 = Operators.NegateObject(o1)
256        If (TypeOf o2 Is Int32) Then
257            Assert.AreEqual(CType(o2, Int32), Int16.MaxValue + 1)
258        Else
259            Assert.Fail()
260        End If
261    End Sub
262
263    <Test()> _
264    Sub TestOperatorsNegate11()
265        Dim o1, o2 As Object
266        o1 = "1L"
267        Try
268            o2 = Operators.NegateObject(o1)
269        Catch ex As InvalidCastException
270            Return
271        End Try
272        Assert.Fail()
273    End Sub
274
275    <Test()> _
276    Sub TestOperatorsNegate12()
277        Dim o1, o2 As Object
278        o1 = "1"
279        o2 = Operators.NegateObject(o1)
280        If (TypeOf o2 Is Double) Then
281            Assert.AreEqual(CType(o2, Double), -1)
282        Else
283            Assert.Fail()
284        End If
285    End Sub
286
287    <Test()> _
288    Sub TestOperatorsNegate13()
289        Dim o1, o2 As Object
290        o1 = 3US
291        o2 = Operators.NegateObject(o1)
292        If (TypeOf o2 Is Integer) Then
293            Assert.AreEqual(CType(o2, Integer), -3)
294        Else
295            Assert.Fail()
296        End If
297    End Sub
298
299    <Test()> _
300    Sub TestOperatorsNegate14()
301        Dim o1, o2 As Object
302        o1 = New OperatorsImplementer()
303        o2 = Operators.NegateObject(o1)
304        Assert.AreEqual(o2, "-ok")
305    End Sub
306
307    <Test()> _
308    Sub TestOperatorsNegate15()
309        Dim o1, o2 As Object
310        o1 = 3UL
311        o2 = Operators.NegateObject(o1)
312        If (TypeOf o2 Is Decimal) Then
313            Assert.AreEqual(CType(o2, Decimal), -3)
314        Else
315            Assert.Fail()
316        End If
317    End Sub
318
319    <Test()> _
320    Sub TestOperatorsPlus1()
321        Dim o1, o2 As Object
322        o1 = True
323        o2 = Operators.PlusObject(o1)
324        If (TypeOf o2 Is Short) Then
325            Assert.AreEqual(CType(o2, Short), -1S)
326        Else
327            Assert.Fail()
328        End If
329    End Sub
330
331    <Test()> _
332    Sub TestOperatorsPlus2()
333        Dim o1, o2 As Object
334        o1 = Nothing
335        o2 = Operators.PlusObject(o1)
336        If (TypeOf o2 Is Integer) Then
337            Assert.AreEqual(CType(o2, Integer), 0)
338        Else
339            Assert.Fail()
340        End If
341    End Sub
342
343    <Test()> _
344    Sub TestOperatorsPlus3()
345        Dim o1, o2 As Object
346        o1 = DBNull.Value
347        Try
348            o2 = Operators.PlusObject(o1)
349        Catch ex As InvalidCastException
350            Return
351        End Try
352        Assert.Fail()
353    End Sub
354
355    <Test()> _
356    Sub TestOperatorsPlus4()
357        Dim o1, o2 As Object
358        o1 = CType(2, Byte)
359        o2 = Operators.PlusObject(o1)
360        If (TypeOf o2 Is Byte) Then
361            Assert.AreEqual(CType(o2, Byte), 2)
362        Else
363            Assert.Fail()
364        End If
365    End Sub
366
367    <Test()> _
368    Sub TestOperatorsPlus5()
369        Dim o1, o2 As Object
370        o1 = CType(0, Byte)
371        o2 = Operators.PlusObject(o1)
372        If (TypeOf o2 Is Byte) Then
373            Assert.AreEqual(CType(o2, Byte), 0)
374        Else
375            Assert.Fail()
376        End If
377    End Sub
378
379    <Test()> _
380    Sub TestOperatorsPlus6()
381        Dim o1, o2 As Object
382        o1 = "1"c
383        Try
384            o2 = Operators.PlusObject(o1)
385        Catch ex As InvalidCastException
386            Return
387        End Try
388        Assert.Fail()
389    End Sub
390
391    <Test()> _
392    Sub TestOperatorsPlus7()
393        Dim o2 As Object
394        Dim o1 As DateTime = DateTime.Now
395        Try
396            o2 = Operators.PlusObject(o1)
397        Catch ex As InvalidCastException
398            Return
399        End Try
400        Assert.Fail()
401    End Sub
402
403    <Test()> _
404    Sub TestOperatorsPlus8()
405        Dim o1, o2 As Object
406        o1 = CType(-1, Decimal)
407        o2 = Operators.PlusObject(o1)
408        If (TypeOf o2 Is Decimal) Then
409            Assert.AreEqual(CType(o2, Decimal), -1)
410        Else
411            Assert.Fail()
412        End If
413    End Sub
414
415
416    <Test()> _
417    Sub TestOperatorsPlus9()
418        Dim o1, o2 As Object
419        o1 = CType(-1, Double)
420        o2 = Operators.PlusObject(o1)
421        If (TypeOf o2 Is Double) Then
422            Assert.AreEqual(CType(o2, Double), -1)
423        Else
424            Assert.Fail()
425        End If
426    End Sub
427
428    <Test()> _
429    Sub TestOperatorsPlus10()
430        Dim o1, o2 As Object
431        o1 = CType(Int16.MinValue, Int16)
432        o2 = Operators.PlusObject(o1)
433        If (TypeOf o2 Is Short) Then
434            Assert.AreEqual(CType(o2, Int32), Int16.MinValue)
435        Else
436            Assert.Fail()
437        End If
438    End Sub
439
440    <Test()> _
441    Sub TestOperatorsPlus11()
442        Dim o1, o2 As Object
443        o1 = "1L"
444
445        Try
446            o2 = Operators.PlusObject(o1)
447        Catch ex As InvalidCastException
448            Return
449        End Try
450        Assert.Fail()
451    End Sub
452
453    <Test()> _
454    Sub TestOperatorsPlus12()
455        Dim o1, o2 As Object
456        o1 = "1"
457        o2 = Operators.PlusObject(o1)
458        If (TypeOf o2 Is Double) Then
459            Assert.AreEqual(CType(o2, Double), 1)
460        Else
461            Assert.Fail()
462        End If
463    End Sub
464
465    <Test()> _
466    Sub TestOperatorsPlus13()
467        Dim o1, o2 As Object
468        o1 = 3US
469        o2 = Operators.PlusObject(o1)
470        If (TypeOf o2 Is UShort) Then
471            Assert.AreEqual(CType(o2, Integer), 3)
472        Else
473            Assert.Fail()
474        End If
475    End Sub
476
477    <Test()> _
478    Sub TestOperatorsPlus14()
479        Dim o1, o2 As Object
480        o1 = New OperatorsImplementer()
481        o2 = Operators.PlusObject(o1)
482        Assert.AreEqual(o2, "+ok")
483    End Sub
484
485    <Test()> _
486    Sub TestOperatorsNot1()
487        Dim o1, o2 As Object
488        o1 = True
489        o2 = Operators.NotObject(o1)
490        If (TypeOf o2 Is Boolean) Then
491            Assert.AreEqual(CType(o2, Boolean), False)
492        Else
493            Assert.Fail()
494        End If
495    End Sub
496
497    <Test()> _
498    Sub TestOperatorsNot2()
499        Dim o1, o2 As Object
500        o1 = Nothing
501        o2 = Operators.NotObject(o1)
502        If (TypeOf o2 Is Integer) Then
503            Assert.AreEqual(CType(o2, Integer), -1)
504        Else
505            Assert.Fail()
506        End If
507    End Sub
508
509    <Test()> _
510    Sub TestOperatorsNot3()
511        Dim o1, o2 As Object
512        o1 = DBNull.Value
513        Try
514            o2 = Operators.NotObject(o1)
515        Catch ex As InvalidCastException
516            Return
517        End Try
518        Assert.Fail()
519    End Sub
520
521    <Test()> _
522    Sub TestOperatorsNot4()
523        Dim o1, o2 As Object
524        o1 = CType(2, Byte)
525        o2 = Operators.NotObject(o1)
526        If (TypeOf o2 Is Byte) Then
527            Assert.AreEqual(CType(o2, Byte), (Not CType(o1, Byte)))
528        Else
529            Assert.Fail()
530        End If
531    End Sub
532
533    <Test()> _
534    Sub TestOperatorsNot5()
535        Dim o1, o2 As Object
536        o1 = CType(0, Byte)
537        o2 = Operators.NotObject(o1)
538        If (TypeOf o2 Is Byte) Then
539            Assert.AreEqual(CType(o2, Byte), (Not CType(o1, Byte)))
540        Else
541            Assert.Fail()
542        End If
543    End Sub
544
545    <Test()> _
546    Sub TestOperatorsNot6()
547        Dim o1, o2 As Object
548        o1 = "1"c
549        Try
550            o2 = Operators.NotObject(o1)
551        Catch ex As InvalidCastException
552            Return
553        End Try
554        Assert.Fail()
555    End Sub
556
557    <Test()> _
558    Sub TestOperatorsNot7()
559        Dim o2 As Object
560        Dim o1 As DateTime = DateTime.Now
561        Try
562            o2 = Operators.NotObject(o1)
563        Catch ex As InvalidCastException
564            Return
565        End Try
566        Assert.Fail()
567    End Sub
568
569    <Test()> _
570    Sub TestOperatorsNot8()
571        Dim o1, o2 As Object
572        o1 = "1.1"
573        o2 = Operators.NotObject(o1)
574        If (TypeOf o2 Is Long) Then
575            Assert.AreEqual(o2, -2L)
576        Else
577            Assert.Fail()
578        End If
579    End Sub
580
581    <Test()> _
582    Sub TestOperatorsNot9()
583        Dim o1, o2 As Object
584        o1 = 1.1
585        o2 = Operators.NotObject(o1)
586        If (TypeOf o2 Is Long) Then
587            Assert.AreEqual(o2, -2L)
588        Else
589            Assert.Fail()
590        End If
591    End Sub
592
593    <Test()> _
594    Sub TestOperatorsNot10()
595        Dim o1, o2 As Object
596        o1 = New OperatorsImplementer()
597        o2 = Operators.NotObject(o1)
598        Assert.AreEqual(o2, "!ok")
599    End Sub
600
601    <Test()> _
602    Sub TestOperatorsRightShiftObject1()
603        Dim o1, o2, o3 As Object
604        o1 = 4
605        o2 = -1
606        o3 = Operators.RightShiftObject(o1, o2)
607        If (TypeOf o3 Is Integer) Then
608            Assert.AreEqual(CType(o3, Integer), (4 >> -1))
609        Else
610            Assert.Fail()
611        End If
612    End Sub
613
614    <Test()> _
615    Sub TestOperatorsRightShiftObject2()
616        Dim o1, o2, o3 As Object
617        o1 = 4
618        o2 = Nothing
619        o3 = Operators.RightShiftObject(o1, o2)
620        If (TypeOf o3 Is Integer) Then
621            Assert.AreEqual(CType(o3, Integer), (4 >> 0))
622        Else
623            Assert.Fail()
624        End If
625    End Sub
626
627    <Test()> _
628    Sub TestOperatorsRightShiftObject3()
629        Dim o1, o2, o3 As Object
630        o1 = Nothing
631        o2 = 1
632        o3 = Operators.RightShiftObject(o1, o2)
633        If (TypeOf o3 Is Integer) Then
634            Assert.AreEqual(CType(o3, Integer), (0 >> 1))
635        Else
636            Assert.Fail()
637        End If
638    End Sub
639
640    <Test()> _
641    Sub TestOperatorsRightShiftObject4()
642        Dim o1, o2, o3 As Object
643        o1 = Nothing
644        o2 = Nothing
645        o3 = Operators.RightShiftObject(o1, o2)
646        If (TypeOf o3 Is Integer) Then
647            Assert.AreEqual(CType(o3, Integer), (0 >> 0))
648        Else
649            Assert.Fail()
650        End If
651    End Sub
652
653    <Test()> _
654    Sub TestOperatorsRightShiftObject5()
655        Dim o1, o2, o3 As Object
656        o1 = Nothing
657        o2 = False
658        o3 = Operators.RightShiftObject(o1, o2)
659        If (TypeOf o3 Is Integer) Then
660            Assert.AreEqual(CType(o3, Integer), (0 >> 0))
661        Else
662            Assert.Fail()
663        End If
664    End Sub
665
666    <Test()> _
667    Sub TestOperatorsRightShiftObject6()
668        Dim o1, o2, o3 As Object
669        o1 = DBNull.Value
670        o2 = 1
671        Try
672            o3 = Operators.RightShiftObject(o1, o2)
673        Catch ex As InvalidCastException
674            Return
675        End Try
676        Assert.Fail()
677    End Sub
678
679    <Test()> _
680    Sub TestOperatorsRightShiftObject7()
681        Dim o1, o2, o3 As Object
682        o1 = 1
683        o2 = DBNull.Value
684        Try
685            o3 = Operators.RightShiftObject(o1, o2)
686        Catch ex As InvalidCastException
687            Return
688        End Try
689        Assert.Fail()
690    End Sub
691
692    <Test()> _
693    Sub TestOperatorsRightShiftObject8()
694        Dim o1, o2, o3 As Object
695        o1 = 1
696        o2 = DateTime.Now
697        Try
698            o3 = Operators.RightShiftObject(o1, o2)
699        Catch ex As InvalidCastException
700            Return
701        End Try
702        Assert.Fail()
703    End Sub
704
705    <Test()> _
706    Sub TestOperatorsRightShiftObject9()
707        Dim o1, o2, o3 As Object
708        o1 = DateTime.Now
709        o2 = 1
710        Try
711            o3 = Operators.RightShiftObject(o1, o2)
712        Catch ex As InvalidCastException
713            Return
714        End Try
715        Assert.Fail()
716    End Sub
717
718    <Test()> _
719    Sub TestOperatorsRightShiftObject10()
720        Dim o1, o2, o3 As Object
721        o1 = 1
722        o2 = DateTime.Now
723        Try
724            o3 = Operators.RightShiftObject(o1, o2)
725        Catch ex As InvalidCastException
726            Return
727        End Try
728        Assert.Fail()
729    End Sub
730
731    <Test()> _
732    Sub TestOperatorsRightShiftObject11()
733        Dim o1, o2, o3 As Object
734        o1 = DateTime.Now
735        o2 = 1
736        Try
737            o3 = Operators.RightShiftObject(o1, o2)
738        Catch ex As InvalidCastException
739            Return
740        End Try
741        Assert.Fail()
742    End Sub
743
744    <Test()> _
745    Sub TestOperatorsRightShiftObject12()
746        Dim o1, o2, o3 As Object
747        o1 = "1"c
748        o2 = 1
749        Try
750            o3 = Operators.RightShiftObject(o1, o2)
751        Catch ex As InvalidCastException
752            Return
753        End Try
754        Assert.Fail()
755    End Sub
756
757    <Test()> _
758    Sub TestOperatorsRightShiftObject13()
759        Dim o1, o2, o3 As Object
760        o1 = 1
761        o2 = "1"c
762        Try
763            o3 = Operators.RightShiftObject(o1, o2)
764        Catch ex As InvalidCastException
765            Return
766        End Try
767        Assert.Fail()
768    End Sub
769
770    <Test()> _
771    Sub TestOperatorsRightShiftObject14()
772        Dim o1, o2, o3 As Object
773        o1 = "4"
774        o2 = 1
775        o3 = Operators.RightShiftObject(o1, o2)
776        If (TypeOf o3 Is Long) Then
777            Assert.AreEqual(CType(o3, Integer), (4 >> 1))
778        Else
779            Assert.Fail()
780        End If
781    End Sub
782
783    <Test()> _
784    Sub TestOperatorsRightShiftObject15()
785        Dim o1, o2, o3 As Object
786        o1 = 4
787        o2 = "1"
788        o3 = Operators.RightShiftObject(o1, o2)
789        If (TypeOf o3 Is Integer) Then
790            Assert.AreEqual(CType(o3, Integer), (4 >> 1))
791        Else
792            Assert.Fail()
793        End If
794    End Sub
795
796    <Test()> _
797    Sub TestOperatorsRightShiftObject16()
798        Dim o1, o2, o3 As Object
799        o1 = True
800        o2 = 1
801        o3 = Operators.RightShiftObject(o1, o2)
802        If (TypeOf o3 Is Short) Then
803            Assert.AreEqual(CType(o3, Short), (-1S >> 1))
804        Else
805            Assert.Fail()
806        End If
807    End Sub
808
809    <Test()> _
810    Sub TestOperatorsRightShiftObject17()
811        Dim o1, o2, o3 As Object
812        o1 = 4D
813        o2 = 1
814        o3 = Operators.RightShiftObject(o1, o2)
815        If (TypeOf o3 Is Long) Then
816            Assert.AreEqual(CType(o3, Long), (4L >> 1))
817        Else
818            Assert.Fail()
819        End If
820    End Sub
821
822    <Test()> _
823    Sub TestOperatorsRightShiftObject18()
824        Dim o1, o2, o3 As Object
825        o1 = 4.4D
826        o2 = 1
827        o3 = Operators.RightShiftObject(o1, o2)
828        If (TypeOf o3 Is Long) Then
829            Assert.AreEqual(CType(o3, Long), (4L >> 1))
830        Else
831            Assert.Fail()
832        End If
833    End Sub
834
835    <Test()> _
836    Sub TestOperatorsRightShiftObject19()
837        Dim o1, o2, o3 As Object
838        o1 = 4
839        o2 = 1
840        o3 = Operators.RightShiftObject(o1, o2)
841        If (TypeOf o3 Is Integer) Then
842            Assert.AreEqual(CType(o3, Integer), (4 >> 1))
843        Else
844            Assert.Fail()
845        End If
846    End Sub
847
848    <Test()> _
849    Sub TestOperatorsRightShiftObject20()
850        Dim o1, o2, o3 As Object
851        o1 = 4
852        o2 = Int32.MinValue + 1
853        o3 = Operators.RightShiftObject(o1, o2)
854        If (TypeOf o3 Is Integer) Then
855            Assert.AreEqual(CType(o3, Integer), (4 >> (Int32.MinValue + 1)))
856        Else
857            Assert.Fail()
858        End If
859    End Sub
860
861    <Test()> _
862    Sub TestOperatorsRightShiftObject21()
863        Dim o1, o3 As Object
864        o1 = New OperatorsImplementer()
865        o3 = Operators.RightShiftObject(o1, 1)
866        Assert.AreEqual(o3, "ok>>")
867    End Sub
868
869    <Test()> _
870    Sub TestOperatorsLeftShiftObject1()
871        Dim o1, o2, o3 As Object
872        o1 = 4
873        o2 = -1
874        o3 = Operators.LeftShiftObject(o1, o2)
875        If (TypeOf o3 Is Integer) Then
876            Assert.AreEqual(CType(o3, Integer), (4 << -1))
877        Else
878            Assert.Fail()
879        End If
880    End Sub
881
882    <Test()> _
883    Sub TestOperatorsLeftShiftObject2()
884        Dim o1, o2, o3 As Object
885        o1 = 4
886        o2 = Nothing
887        o3 = Operators.LeftShiftObject(o1, o2)
888        If (TypeOf o3 Is Integer) Then
889            Assert.AreEqual(CType(o3, Integer), (4 << 0))
890        Else
891            Assert.Fail()
892        End If
893    End Sub
894
895    <Test()> _
896    Sub TestOperatorsLeftShiftObject3()
897        Dim o1, o2, o3 As Object
898        o1 = Nothing
899        o2 = 1
900        o3 = Operators.LeftShiftObject(o1, o2)
901        If (TypeOf o3 Is Integer) Then
902            Assert.AreEqual(CType(o3, Integer), (0 << 1))
903        Else
904            Assert.Fail()
905        End If
906    End Sub
907
908    <Test()> _
909    Sub TestOperatorsLeftShiftObject4()
910        Dim o1, o2, o3 As Object
911        o1 = Nothing
912        o2 = Nothing
913        o3 = Operators.LeftShiftObject(o1, o2)
914        If (TypeOf o3 Is Integer) Then
915            Assert.AreEqual(CType(o3, Integer), (0 << 0))
916        Else
917            Assert.Fail()
918        End If
919    End Sub
920
921    <Test()> _
922    Sub TestOperatorsLeftShiftObject5()
923        Dim o1, o2, o3 As Object
924        o1 = Nothing
925        o2 = False
926        o3 = Operators.LeftShiftObject(o1, o2)
927        If (TypeOf o3 Is Integer) Then
928            Assert.AreEqual(CType(o3, Integer), (0 << 0))
929        Else
930            Assert.Fail()
931        End If
932    End Sub
933
934    <Test()> _
935    Sub TestOperatorsLeftShiftObject6()
936        Dim o1, o2, o3 As Object
937        o1 = DBNull.Value
938        o2 = 1
939        Try
940            o3 = Operators.LeftShiftObject(o1, o2)
941        Catch ex As InvalidCastException
942            Return
943        End Try
944        Assert.Fail()
945    End Sub
946
947    <Test()> _
948    Sub TestOperatorsLeftShiftObject7()
949        Dim o1, o2, o3 As Object
950        o1 = 1
951        o2 = DBNull.Value
952        Try
953            o3 = Operators.LeftShiftObject(o1, o2)
954        Catch ex As InvalidCastException
955            Return
956        End Try
957        Assert.Fail()
958    End Sub
959
960    <Test()> _
961    Sub TestOperatorsLeftShiftObject8()
962        Dim o1, o2, o3 As Object
963        o1 = 1
964        o2 = DateTime.Now
965        Try
966            o3 = Operators.LeftShiftObject(o1, o2)
967        Catch ex As InvalidCastException
968            Return
969        End Try
970        Assert.Fail()
971    End Sub
972
973    <Test()> _
974    Sub TestOperatorsLeftShiftObject9()
975        Dim o1, o2, o3 As Object
976        o1 = DateTime.Now
977        o2 = 1
978        Try
979            o3 = Operators.LeftShiftObject(o1, o2)
980        Catch ex As InvalidCastException
981            Return
982        End Try
983        Assert.Fail()
984    End Sub
985
986    <Test()> _
987    Sub TestOperatorsLeftShiftObject10()
988        Dim o1, o2, o3 As Object
989        o1 = 1
990        o2 = DateTime.Now
991        Try
992            o3 = Operators.LeftShiftObject(o1, o2)
993        Catch ex As InvalidCastException
994            Return
995        End Try
996        Assert.Fail()
997    End Sub
998
999    <Test()> _
1000    Sub TestOperatorsLeftShiftObject11()
1001        Dim o1, o2, o3 As Object
1002        o1 = DateTime.Now
1003        o2 = 1
1004        Try
1005            o3 = Operators.LeftShiftObject(o1, o2)
1006        Catch ex As InvalidCastException
1007            Return
1008        End Try
1009        Assert.Fail()
1010    End Sub
1011
1012    <Test()> _
1013    Sub TestOperatorsLeftShiftObject12()
1014        Dim o1, o2, o3 As Object
1015        o1 = "1"c
1016        o2 = 1
1017        Try
1018            o3 = Operators.LeftShiftObject(o1, o2)
1019        Catch ex As InvalidCastException
1020            Return
1021        End Try
1022        Assert.Fail()
1023    End Sub
1024
1025    <Test()> _
1026    Sub TestOperatorsLeftShiftObject13()
1027        Dim o1, o2, o3 As Object
1028        o1 = 1
1029        o2 = "1"c
1030        Try
1031            o3 = Operators.LeftShiftObject(o1, o2)
1032        Catch ex As InvalidCastException
1033            Return
1034        End Try
1035        Assert.Fail()
1036    End Sub
1037
1038    <Test()> _
1039    Sub TestOperatorsLeftShiftObject14()
1040        Dim o1, o2, o3 As Object
1041        o1 = "4"
1042        o2 = 1
1043        o3 = Operators.LeftShiftObject(o1, o2)
1044        If (TypeOf o3 Is Long) Then
1045            Assert.AreEqual(CType(o3, Integer), (4 << 1))
1046        Else
1047            Assert.Fail()
1048        End If
1049    End Sub
1050
1051    <Test()> _
1052    Sub TestOperatorsLeftShiftObject15()
1053        Dim o1, o2, o3 As Object
1054        o1 = 4
1055        o2 = "1"
1056        o3 = Operators.LeftShiftObject(o1, o2)
1057        If (TypeOf o3 Is Integer) Then
1058            Assert.AreEqual(CType(o3, Integer), (4 << 1))
1059        Else
1060            Assert.Fail()
1061        End If
1062    End Sub
1063
1064    <Test()> _
1065    Sub TestOperatorsLeftShiftObject16()
1066        Dim o1, o2, o3 As Object
1067        o1 = True
1068        o2 = 1
1069        o3 = Operators.LeftShiftObject(o1, o2)
1070        If (TypeOf o3 Is Short) Then
1071            Assert.AreEqual(CType(o3, Short), (-1S << 1))
1072        Else
1073            Assert.Fail()
1074        End If
1075    End Sub
1076
1077    <Test()> _
1078    Sub TestOperatorsLeftShiftObject17()
1079        Dim o1, o2, o3 As Object
1080        o1 = 4D
1081        o2 = 1
1082        o3 = Operators.LeftShiftObject(o1, o2)
1083        If (TypeOf o3 Is Long) Then
1084            Assert.AreEqual(CType(o3, Long), (4L << 1))
1085        Else
1086            Assert.Fail()
1087        End If
1088    End Sub
1089
1090    <Test()> _
1091    Sub TestOperatorsLeftShiftObject18()
1092        Dim o1, o2, o3 As Object
1093        o1 = 4.4D
1094        o2 = 1
1095        o3 = Operators.LeftShiftObject(o1, o2)
1096        If (TypeOf o3 Is Long) Then
1097            Assert.AreEqual(CType(o3, Long), (4L << 1))
1098        Else
1099            Assert.Fail()
1100        End If
1101    End Sub
1102
1103    <Test()> _
1104    Sub TestOperatorsLeftShiftObject19()
1105        Dim o1, o2, o3 As Object
1106        o1 = 4
1107        o2 = 1
1108        o3 = Operators.LeftShiftObject(o1, o2)
1109        If (TypeOf o3 Is Integer) Then
1110            Assert.AreEqual(CType(o3, Integer), (4 << 1))
1111        Else
1112            Assert.Fail()
1113        End If
1114    End Sub
1115
1116    <Test()> _
1117    Sub TestOperatorsLeftShiftObject20()
1118        Dim o1, o2, o3 As Object
1119        o1 = 4
1120        o2 = Int32.MinValue + 1
1121        o3 = Operators.LeftShiftObject(o1, o2)
1122        If (TypeOf o3 Is Integer) Then
1123            Assert.AreEqual(CType(o3, Integer), (4 << (Int32.MinValue + 1)))
1124        Else
1125            Assert.Fail()
1126        End If
1127    End Sub
1128
1129    <Test()> _
1130    Sub TestOperatorsLeftShiftObject21()
1131        Dim o1, o3 As Object
1132        o1 = New OperatorsImplementer()
1133        o3 = Operators.LeftShiftObject(o1, 1)
1134        Assert.AreEqual(o3, "ok<<")
1135    End Sub
1136
1137    <Test()> _
1138    Sub TestOperatorsSubtract1()
1139        Dim o1, o2, o3 As Object
1140        o1 = "a"
1141        o2 = "b"
1142        Try
1143            o3 = Operators.SubtractObject(o1, o2)
1144        Catch ex As InvalidCastException
1145            Return
1146        End Try
1147        Assert.Fail()
1148    End Sub
1149
1150    <Test()> _
1151    Sub TestOperatorsSubtract2()
1152        Dim o1, o2, o3 As Object
1153        o1 = "d"
1154        o2 = 1
1155        Try
1156            o3 = Operators.SubtractObject(o1, o2)
1157        Catch ex As InvalidCastException
1158            Return
1159        End Try
1160        Assert.Fail()
1161    End Sub
1162
1163    <Test()> _
1164    Sub TestOperatorsSubtract3()
1165        Dim o1, o2, o3 As Object
1166        o1 = "1"
1167        o2 = 1
1168        o3 = Operators.SubtractObject(o1, o2)
1169        If (TypeOf o3 Is Double) Then
1170            Assert.AreEqual(CType(o3, Double), 0D)
1171        Else
1172            Assert.Fail()
1173        End If
1174    End Sub
1175
1176    <Test()> _
1177    Sub TestOperatorsSubtract4()
1178        Dim o1, o2, o3 As Object
1179        o1 = 1
1180        o2 = 1
1181        o3 = Operators.SubtractObject(o1, o2)
1182        If (TypeOf o3 Is Integer) Then
1183            Assert.AreEqual(CType(o3, Integer), 0)
1184        Else
1185            Assert.Fail()
1186        End If
1187    End Sub
1188
1189    <Test()> _
1190    Sub TestOperatorsSubtract5()
1191        Dim o1, o2, o3 As Object
1192        o1 = 1.1
1193        o2 = 1.1
1194        o3 = Operators.SubtractObject(o1, o2)
1195        If (TypeOf o3 Is Double) Then
1196            Assert.AreEqual(CType(o3, Double), 0D)
1197        Else
1198            Assert.Fail()
1199        End If
1200    End Sub
1201
1202    <Test()> _
1203    Sub TestOperatorsSubtract6()
1204        Dim o1, o2, o3 As Object
1205        o1 = DateTime.Now
1206        o2 = DateTime.Now
1207        o3 = Operators.SubtractObject(o1, o2)
1208        If (TypeOf o3 Is TimeSpan) Then
1209            Assert.AreEqual(CType(o3, TimeSpan).Ticks, (CType(o1, DateTime).Ticks - CType(o2, DateTime).Ticks))
1210        Else
1211            Assert.Fail()
1212        End If
1213    End Sub
1214
1215    <Test()> _
1216    Sub TestOperatorsSubtract7()
1217        Dim o1, o2, o3 As Object
1218        o1 = "a"c
1219        o2 = "b"c
1220        Try
1221            o3 = Operators.SubtractObject(o1, o2)
1222        Catch ex As InvalidCastException
1223            Return
1224        End Try
1225        Assert.Fail()
1226    End Sub
1227
1228    <Test()> _
1229    Sub TestOperatorsSubtract8()
1230        Dim o1, o2, o3 As Object
1231        o1 = 1
1232        o2 = Nothing
1233        o3 = Operators.SubtractObject(o1, o2)
1234        If (TypeOf o3 Is Integer) Then
1235            Assert.AreEqual(o3, 1)
1236        Else
1237            Assert.Fail()
1238        End If
1239    End Sub
1240
1241    <Test()> _
1242    Sub TestOperatorsSubtract9()
1243        Dim o1, o2, o3 As Object
1244        o1 = Nothing
1245        o2 = 1
1246        o3 = Operators.SubtractObject(o1, o2)
1247        If (TypeOf o3 Is Integer) Then
1248            Assert.AreEqual(o3, -1)
1249        Else
1250            Assert.Fail()
1251        End If
1252    End Sub
1253
1254    <Test()> _
1255    Sub TestOperatorsSubtract10()
1256        Dim o1, o2, o3 As Object
1257        o1 = Nothing
1258        o2 = Nothing
1259        o3 = Operators.SubtractObject(o1, o2)
1260        Assert.AreEqual(o3, 0)
1261    End Sub
1262
1263    <Test()> _
1264    Sub TestOperatorsSubtract11()
1265        Dim o3 As Object
1266        Dim o1, o2 As Integer
1267        o1 = Integer.MaxValue
1268        o2 = Integer.MinValue
1269        o3 = Operators.SubtractObject(o1, o2)
1270        If (TypeOf o3 Is Long) Then
1271            Assert.AreEqual(o3, CType(Integer.MaxValue, Long) - CType(Integer.MinValue, Long))
1272        Else
1273            Assert.Fail()
1274        End If
1275    End Sub
1276
1277    <Test()> _
1278    Sub TestOperatorsSubtract12()
1279        Dim o3 As Object
1280        Dim o1, o2 As Short
1281        o1 = 1
1282        o2 = 1
1283        o3 = Operators.SubtractObject(o1, o2)
1284        If (TypeOf o3 Is Short) Then
1285            Assert.AreEqual(CType(o3, Short), 0)
1286        Else
1287            Assert.Fail()
1288        End If
1289    End Sub
1290
1291    <Test()> _
1292    Sub TestOperatorsSubtract13()
1293        Dim o3 As Object
1294        Dim o1, o2 As Short
1295        o1 = 1
1296        o2 = -1
1297        o3 = Operators.SubtractObject(o1, o2)
1298        If (TypeOf o3 Is Short) Then
1299            Assert.AreEqual(CType(o3, Short), 2)
1300        Else
1301            Assert.Fail()
1302        End If
1303    End Sub
1304
1305    <Test()> _
1306    Sub TestOperatorsSubtract14()
1307        Dim o3 As Object
1308        Dim o1, o2 As UShort
1309        o1 = 1
1310        o2 = 1
1311        o3 = Operators.SubtractObject(o1, o2)
1312        If (TypeOf o3 Is UShort) Then
1313            Assert.AreEqual(CType(o3, UShort), 0)
1314        Else
1315            Assert.Fail()
1316        End If
1317    End Sub
1318
1319    <Test()> _
1320    Sub TestOperatorsSubtract15()
1321        Dim o3 As Object
1322        Dim o1 As Short
1323        Dim o2 As Long
1324        o1 = -2
1325        o2 = 1
1326        o3 = Operators.SubtractObject(o1, o2)
1327        If (TypeOf o3 Is Long) Then
1328            Assert.AreEqual(CType(o3, Long), -3L)
1329        Else
1330            Assert.Fail()
1331        End If
1332    End Sub
1333
1334    <Test()> _
1335    Sub TestOperatorsSubtract16()
1336        Dim o1, o2 As Long
1337        Dim o3 As Object
1338        o1 = 1L
1339        o2 = 1L
1340        o3 = Operators.SubtractObject(o1, o2)
1341        If (TypeOf o3 Is Long) Then
1342            Assert.AreEqual(CType(o3, Long), 0L)
1343        Else
1344            Assert.Fail()
1345        End If
1346    End Sub
1347
1348    <Test()> _
1349    Sub TestOperatorsSubtract17()
1350        Dim o1, o2 As Boolean
1351        Dim o3 As Object
1352        o1 = True
1353        o2 = False
1354        o3 = Operators.SubtractObject(o1, o2)
1355        If (TypeOf o3 Is Short) Then
1356            Assert.AreEqual(CType(o3, Short), -1)
1357        Else
1358            Assert.Fail()
1359        End If
1360    End Sub
1361
1362    <Test()> _
1363    Sub TestOperatorsSubtract18()
1364        Dim o3 As Object
1365        Try
1366            o3 = Operators.SubtractObject(DBNull.Value, DBNull.Value)
1367        Catch ex As InvalidCastException
1368            Return
1369        End Try
1370        Assert.Fail()
1371    End Sub
1372
1373    <Test()> _
1374    Sub TestOperatorsSubtract19()
1375        Dim o1, o2 As Byte
1376        Dim o3 As Object
1377        o1 = 0
1378        o2 = 1
1379        o3 = Operators.SubtractObject(o1, o2)
1380        If (TypeOf o3 Is Short) Then
1381            Assert.AreEqual(CType(o3, Short), -1)
1382        Else
1383            Assert.Fail()
1384        End If
1385    End Sub
1386
1387    <Test()> _
1388    Sub TestOperatorsSubtract20()
1389        Dim o1, o2 As Byte
1390        Dim o3 As Object
1391        o1 = Byte.MaxValue
1392        o2 = 0
1393        o3 = Operators.SubtractObject(o1, o2)
1394        If (TypeOf o3 Is Byte) Then
1395            Assert.AreEqual(CType(o3, Byte), Byte.MaxValue)
1396        Else
1397            Assert.Fail()
1398        End If
1399    End Sub
1400
1401    <Test()> _
1402    Sub TestOperatorsSubtract21()
1403        Dim o1, o2, o3 As Object
1404        o1 = New OperatorsImplementer()
1405        o2 = "abc"
1406        o3 = Operators.SubtractObject(o1, o2)
1407        Assert.AreEqual(o3, "ok-")
1408    End Sub
1409
1410    <Test()> _
1411    Sub TestOperatorsSubtract22()
1412        Dim o1, o2, o3 As Object
1413        o1 = "abc"
1414        o2 = New OperatorsImplementer()
1415        Try
1416            o3 = Operators.SubtractObject(o1, o2)
1417        Catch ex As InvalidCastException
1418            Return
1419        End Try
1420        Assert.Fail()
1421    End Sub
1422
1423    <Test()> _
1424    Sub TestOperatorsAdd1()
1425        Dim o1, o2, o3 As Object
1426        o1 = "a"
1427        o2 = "b"
1428        o3 = Operators.AddObject(o1, o2)
1429        Assert.AreEqual(o3, "ab")
1430    End Sub
1431
1432    <Test()> _
1433    Sub TestOperatorsAdd2()
1434        Dim o1, o2, o3 As Object
1435        o1 = "d"
1436        o2 = 1
1437        Try
1438            o3 = Operators.AddObject(o1, o2)
1439        Catch ex As InvalidCastException
1440            Return
1441        End Try
1442        Assert.Fail()
1443    End Sub
1444
1445    <Test()> _
1446    Sub TestOperatorsAdd3()
1447        Dim o1, o2, o3 As Object
1448        o1 = "1"
1449        o2 = 1
1450        o3 = Operators.AddObject(o1, o2)
1451        If (TypeOf o3 Is Double) Then
1452            Assert.AreEqual(CType(o3, Double), 2D)
1453        Else
1454            Assert.Fail()
1455        End If
1456    End Sub
1457
1458    <Test()> _
1459    Sub TestOperatorsAdd4()
1460        Dim o1, o2, o3 As Object
1461        o1 = 1
1462        o2 = 1
1463        o3 = Operators.AddObject(o1, o2)
1464        If (TypeOf o3 Is Integer) Then
1465            Assert.AreEqual(o3, 2)
1466        Else
1467            Assert.Fail()
1468        End If
1469    End Sub
1470
1471    <Test()> _
1472    Sub TestOperatorsAdd5()
1473        Dim o1, o2, o3 As Object
1474        o1 = 1.1
1475        o2 = 1
1476        o3 = Operators.AddObject(o1, o2)
1477        If (TypeOf o3 Is Double) Then
1478            Assert.AreEqual(o3, 2.1)
1479        Else
1480            Assert.Fail()
1481        End If
1482    End Sub
1483
1484    <Test()> _
1485    Sub TestOperatorsAdd6()
1486        Dim o1, o2, o3 As Object
1487        o1 = DateTime.Now
1488        o2 = DateTime.Now
1489        o3 = Operators.AddObject(o1, o2)
1490        Assert.AreEqual(o3, String.Concat(o1.ToString(), o2.ToString()))
1491    End Sub
1492
1493    <Test()> _
1494    Sub TestOperatorsAdd7()
1495        Dim o1, o2, o3 As Object
1496        o1 = "a"c
1497        o2 = "b"c
1498        o3 = Operators.AddObject(o1, o2)
1499        Assert.AreEqual(o3, "ab")
1500    End Sub
1501
1502    <Test()> _
1503    Sub TestOperatorsAdd8()
1504        Dim o1, o2, o3, o4, o5, o6 As Object
1505        o1 = "b"c
1506        o2 = Nothing
1507        o3 = Operators.AddObject(o1, o2)
1508        o4 = "b"c
1509        o5 = DBNull.Value
1510        o6 = Operators.AddObject(o1, o2)
1511        Assert.AreEqual(o3, o6)
1512    End Sub
1513
1514    <Test()> _
1515    Sub TestOperatorsAdd9()
1516        Dim o1, o2, o3 As Object
1517        o1 = Nothing
1518        o2 = 1
1519        o3 = Operators.AddObject(o1, o2)
1520        Assert.AreEqual(o3, 1)
1521    End Sub
1522
1523    <Test()> _
1524    Sub TestOperatorsAdd10()
1525        Dim o1, o2, o3 As Object
1526        o1 = Nothing
1527        o2 = Nothing
1528        o3 = Operators.AddObject(o1, o2)
1529        Assert.AreEqual(o3, 0)
1530    End Sub
1531
1532    <Test()> _
1533    Sub TestOperatorsAdd11()
1534        Dim o3 As Object
1535        Dim o1, o2 As Integer
1536        o1 = Integer.MaxValue
1537        o2 = Integer.MaxValue
1538        o3 = Operators.AddObject(o1, o2)
1539        If (TypeOf o3 Is Long) Then
1540            Assert.AreEqual(CType(o3, Long), Integer.MaxValue * 2L)
1541        Else
1542            Assert.Fail()
1543        End If
1544    End Sub
1545
1546    <Test()> _
1547    Sub TestOperatorsAdd12()
1548        Dim o3 As Object
1549        Dim o1, o2 As Short
1550        o1 = 1
1551        o2 = 1
1552        o3 = Operators.AddObject(o1, o2)
1553        If (TypeOf o3 Is Short) Then
1554            Assert.AreEqual(CType(o3, Short), 2)
1555        Else
1556            Assert.Fail()
1557        End If
1558    End Sub
1559
1560    <Test()> _
1561    Sub TestOperatorsAdd13()
1562        Dim o3 As Object
1563        Dim o1, o2 As Short
1564        o1 = 1
1565        o2 = 1
1566        o3 = Operators.AddObject(o1, o2)
1567        If (TypeOf o3 Is Short) Then
1568            Assert.AreEqual(CType(o3, Short), 2)
1569        Else
1570            Assert.Fail()
1571        End If
1572    End Sub
1573
1574    <Test()> _
1575    Sub TestOperatorsAdd14()
1576        Dim o3 As Object
1577        Dim o1, o2 As UShort
1578        o1 = 1
1579        o2 = 1
1580        o3 = Operators.AddObject(o1, o2)
1581        If (TypeOf o3 Is UShort) Then
1582            Assert.AreEqual(CType(o3, UShort), 2)
1583        Else
1584            Assert.Fail()
1585        End If
1586    End Sub
1587
1588    <Test()> _
1589    Sub TestOperatorsAdd15()
1590        Dim o3 As Object
1591        Dim o1 As Short
1592        Dim o2 As Long
1593        o1 = -2
1594        o2 = 1
1595        o3 = Operators.AddObject(o1, o2)
1596        If (TypeOf o3 Is Long) Then
1597            Assert.AreEqual(CType(o3, Long), -1L)
1598        Else
1599            Assert.Fail()
1600        End If
1601    End Sub
1602
1603    <Test()> _
1604    Sub TestOperatorsAdd16()
1605        Dim o1, o2 As Long
1606        Dim o3 As Object
1607        o1 = 1L
1608        o2 = 1L
1609        o3 = Operators.AddObject(o1, o2)
1610        If (TypeOf o3 Is Long) Then
1611            Assert.AreEqual(CType(o3, Long), 2L)
1612        Else
1613            Assert.Fail()
1614        End If
1615    End Sub
1616
1617    <Test()> _
1618    Sub TestOperatorsAdd17()
1619        Dim o1, o2 As Boolean
1620        Dim o3 As Object
1621        o1 = True
1622        o2 = False
1623        o3 = Operators.AddObject(o1, o2)
1624        If (TypeOf o3 Is Short) Then
1625            Assert.AreEqual(CType(o3, Short), -1)
1626        Else
1627            Assert.Fail()
1628        End If
1629    End Sub
1630
1631    <Test()> _
1632    Sub TestOperatorsAdd18()
1633        Dim o3 As Object
1634        Try
1635            o3 = Operators.AddObject(DBNull.Value, DBNull.Value)
1636        Catch ex As InvalidCastException
1637            Return
1638        End Try
1639        Assert.Fail()
1640    End Sub
1641
1642    <Test()> _
1643    Sub TestOperatorsAdd19()
1644        Dim o1, o2 As Byte
1645        Dim o3 As Object
1646        o1 = Byte.MaxValue
1647        o2 = Byte.MaxValue
1648        o3 = Operators.AddObject(o1, o2)
1649        If (TypeOf o3 Is Short) Then
1650            Assert.AreEqual(CType(o3, Short), Byte.MaxValue * 2)
1651        Else
1652            Assert.Fail()
1653        End If
1654    End Sub
1655
1656    <Test()> _
1657    Sub TestOperatorsAdd20()
1658        Dim o1, o2 As Byte
1659        Dim o3 As Object
1660        o1 = Byte.MaxValue
1661        o2 = 0
1662        o3 = Operators.AddObject(o1, o2)
1663        If (TypeOf o3 Is Byte) Then
1664            Assert.AreEqual(CType(o3, Byte), Byte.MaxValue)
1665        Else
1666            Assert.Fail()
1667        End If
1668    End Sub
1669
1670    <Test()> _
1671    Sub TestOperatorsAdd21()
1672        Dim o1, o2 As Double
1673        Dim o3 As Object
1674        o1 = Double.MaxValue
1675        o2 = Double.MaxValue
1676        o3 = Operators.AddObject(o1, o2)
1677        If (TypeOf o3 Is Double) Then
1678            Assert.AreEqual(CType(o3, Double), Double.MaxValue * 2)
1679        Else
1680            Assert.Fail()
1681        End If
1682    End Sub
1683
1684    <Test()> _
1685    Sub TestOperatorsAdd22()
1686        Dim o1, o2 As UShort
1687        Dim o3 As Object
1688        o1 = UShort.MaxValue
1689        o2 = UShort.MaxValue
1690        o3 = Operators.AddObject(o1, o2)
1691        If (TypeOf o3 Is Integer) Then
1692            Assert.AreEqual(CType(o3, Integer), UShort.MaxValue * 2)
1693        Else
1694            Assert.Fail()
1695        End If
1696    End Sub
1697
1698    <Test()> _
1699    Sub TestOperatorsAdd23()
1700        Dim o1 As Double
1701        Dim o2 As Decimal
1702        Dim o3 As Object
1703        o1 = 1
1704        o2 = 1
1705        o3 = Operators.AddObject(o1, o2)
1706        If (TypeOf o3 Is Double) Then
1707            Assert.AreEqual(CType(o3, Double), 2)
1708        Else
1709            Assert.Fail()
1710        End If
1711    End Sub
1712
1713    <Test()> _
1714    Sub TestOperatorsAdd24()
1715        Dim o1 As Boolean
1716        Dim o2 As String
1717        Dim o3 As Object
1718        o1 = False
1719        o2 = "1"
1720        o3 = Operators.AddObject(o1, o2)
1721        If (TypeOf o3 Is Double) Then
1722            Assert.AreEqual(CType(o3, Double), 1)
1723        Else
1724            Assert.Fail()
1725        End If
1726    End Sub
1727
1728    <Test()> _
1729    Sub TestOperatorsAdd25()
1730        Dim o1 As Boolean
1731        Dim o2 As Integer
1732        Dim o3 As Object
1733        o1 = False
1734        o2 = 1
1735        o3 = Operators.AddObject(o1, o2)
1736        If (TypeOf o3 Is Integer) Then
1737            Assert.AreEqual(CType(o3, Integer), 1)
1738        Else
1739            Assert.Fail()
1740        End If
1741    End Sub
1742
1743    <Test()> _
1744    Sub TestOperatorsAdd26()
1745        Dim o1 As ULong
1746        Dim o2 As SByte
1747        Dim o3 As Object
1748        o1 = UInteger.MaxValue
1749        o2 = -1
1750        o3 = Operators.AddObject(o1, o2)
1751        If (TypeOf o3 Is Decimal) Then
1752            Assert.AreEqual(CType(o3, Decimal), UInteger.MaxValue - 1)
1753        Else
1754            Assert.Fail()
1755        End If
1756    End Sub
1757
1758    <Test()> _
1759    Sub TestOperatorsAdd27()
1760        Dim o1 As Char
1761        Dim o2 As Integer
1762        Dim o3 As Object
1763        o1 = "1"c
1764        o2 = -1
1765        Try
1766            o3 = Operators.AddObject(o1, o2)
1767        Catch ex As InvalidCastException
1768            Return
1769        End Try
1770        Assert.Fail()
1771    End Sub
1772
1773    <Test()> _
1774    Sub TestOperatorsAdd28()
1775        Dim o1, o2, o3 As Object
1776        o1 = New OperatorsImplementer()
1777        o2 = "abc"
1778        o3 = Operators.AddObject(o1, o2)
1779        Assert.AreEqual(o3, "ok+")
1780    End Sub
1781
1782    <Test()> _
1783    Sub TestOperatorsAdd29()
1784        Dim o1, o2, o3 As Object
1785        o1 = "abc"
1786        o2 = New OperatorsImplementer()
1787        Try
1788            o3 = Operators.AddObject(o1, o2)
1789        Catch ex As InvalidCastException
1790            Return
1791        End Try
1792        Assert.Fail()
1793    End Sub
1794
1795    <Test()> _
1796    Sub TestOperatorsOr1()
1797        Dim o1, o2, o3 As Object
1798        o1 = "1.1"
1799        o2 = "1"
1800        o3 = Operators.OrObject(o1, o2)
1801        If (TypeOf o3 Is Long) Then
1802            Assert.AreEqual(CType(o3, Long), (1L Or 1L))
1803        Else
1804            Assert.Fail()
1805        End If
1806    End Sub
1807
1808    <Test()> _
1809    Sub TestOperatorsOr2()
1810        Dim o1, o2, o3 As Object
1811        o1 = "d"
1812        o2 = 1
1813        Try
1814            o3 = Operators.OrObject(o1, o2)
1815        Catch ex As InvalidCastException
1816            Return
1817        End Try
1818        Assert.Fail()
1819    End Sub
1820
1821    <Test()> _
1822    Sub TestOperatorsOr3()
1823        Dim o1, o2, o3 As Object
1824        o1 = "1.1"
1825        o2 = 1
1826        o3 = Operators.OrObject(o1, o2)
1827        If (TypeOf o3 Is Long) Then
1828            Assert.AreEqual(CType(o3, Long), (1L Or 1L))
1829        Else
1830            Assert.Fail()
1831        End If
1832    End Sub
1833
1834    <Test()> _
1835    Sub TestOperatorsOr4()
1836        Dim o1, o2, o3 As Object
1837        o1 = 52
1838        o2 = 14
1839        o3 = Operators.OrObject(o1, o2)
1840        If (TypeOf o3 Is Integer) Then
1841            Assert.AreEqual(CType(o3, Integer), (52 Or 14))
1842        Else
1843            Assert.Fail()
1844        End If
1845    End Sub
1846
1847    <Test()> _
1848    Sub TestOperatorsOr5()
1849        Dim o1, o2, o3 As Object
1850        o1 = 14134.3124
1851        o2 = 14.59
1852        o3 = Operators.OrObject(o1, o2)
1853        If (TypeOf o3 Is Long) Then
1854            Assert.AreEqual(CType(o3, Long), (14134L Or 15L))
1855        Else
1856            Assert.Fail()
1857        End If
1858    End Sub
1859
1860    <Test()> _
1861    Sub TestOperatorsOr6()
1862        Dim o1, o2, o3 As Object
1863        o1 = DateTime.Now
1864        o2 = DateTime.Now
1865        Try
1866            o3 = Operators.OrObject(o1, o2)
1867        Catch ex As InvalidCastException
1868            Return
1869        End Try
1870        Assert.Fail()
1871    End Sub
1872
1873    <Test()> _
1874    Sub TestOperatorsOr7()
1875        Dim o1, o2, o3 As Object
1876        o1 = "1"c
1877        o2 = "2"c
1878        Try
1879            o3 = Operators.OrObject(o1, o2)
1880        Catch ex As InvalidCastException
1881            Return
1882        End Try
1883        Assert.Fail()
1884    End Sub
1885
1886    <Test()> _
1887    Sub TestOperatorsOr9()
1888        Dim o1, o2, o3 As Object
1889        o1 = Nothing
1890        o2 = 134S
1891        o3 = Operators.OrObject(o1, o2)
1892        If (TypeOf o3 Is Short) Then
1893            Assert.AreEqual(CType(o3, Short), (134S))
1894        Else
1895            Assert.Fail()
1896        End If
1897    End Sub
1898
1899    <Test()> _
1900    Sub TestOperatorsOr10()
1901        Dim o1, o2, o3 As Object
1902        o1 = Nothing
1903        o2 = Nothing
1904        o3 = Operators.OrObject(o1, o2)
1905        Assert.AreEqual(o3, 0)
1906    End Sub
1907
1908    <Test()> _
1909    Sub TestOperatorsOr14()
1910        Dim o3 As Object
1911        Dim o1, o2 As UShort
1912        o1 = 643US
1913        o2 = 24US
1914        o3 = Operators.OrObject(o1, o2)
1915        If (TypeOf o3 Is UShort) Then
1916            Assert.AreEqual(CType(o3, UShort), (24US Or 643US))
1917        Else
1918            Assert.Fail()
1919        End If
1920    End Sub
1921
1922    <Test()> _
1923    Sub TestOperatorsOr15()
1924        Dim o3 As Object
1925        Dim o1 As Short
1926        Dim o2 As Long
1927        o1 = -2
1928        o2 = 1
1929        o3 = Operators.OrObject(o1, o2)
1930        If (TypeOf o3 Is Long) Then
1931            Assert.AreEqual(CType(o3, Long), -1L)
1932        Else
1933            Assert.Fail()
1934        End If
1935    End Sub
1936
1937    <Test()> _
1938    Sub TestOperatorsOr17()
1939        Dim o1, o2 As Object
1940        Dim o3 As Object
1941        o1 = True
1942        o2 = False
1943        o3 = Operators.OrObject(o1, o2)
1944        If (TypeOf o3 Is Boolean) Then
1945            Assert.AreEqual(CType(o3, Boolean), True)
1946        Else
1947            Assert.Fail()
1948        End If
1949    End Sub
1950
1951    <Test()> _
1952    Sub TestOperatorsOr18()
1953        Dim o3 As Object
1954        Try
1955            o3 = Operators.OrObject(DBNull.Value, DBNull.Value)
1956        Catch ex As InvalidCastException
1957            Return
1958        End Try
1959        Assert.Fail()
1960    End Sub
1961
1962    <Test()> _
1963    Sub TestOperatorsOr28()
1964        Dim o1, o2, o3 As Object
1965        o1 = New OperatorsImplementer()
1966        o2 = 1
1967        o3 = Operators.OrObject(o1, o2)
1968        Assert.AreEqual(o3, "ok||")
1969    End Sub
1970
1971    <Test()> _
1972    Sub TestOperatorsXor1()
1973        Dim o1, o2, o3 As Object
1974        o1 = "1.1"
1975        o2 = "1"
1976        o3 = Operators.XorObject(o1, o2)
1977        If (TypeOf o3 Is Long) Then
1978            Assert.AreEqual(CType(o3, Long), (1L Xor 1L))
1979        Else
1980            Assert.Fail()
1981        End If
1982    End Sub
1983
1984    <Test()> _
1985    Sub TestOperatorsXor2()
1986        Dim o1, o2, o3 As Object
1987        o1 = "d"
1988        o2 = 1
1989        Try
1990            o3 = Operators.XorObject(o1, o2)
1991        Catch ex As InvalidCastException
1992            Return
1993        End Try
1994        Assert.Fail()
1995    End Sub
1996
1997    <Test()> _
1998    Sub TestOperatorsXor3()
1999        Dim o1, o2, o3 As Object
2000        o1 = "1.1"
2001        o2 = 1
2002        o3 = Operators.XorObject(o1, o2)
2003        If (TypeOf o3 Is Long) Then
2004            Assert.AreEqual(CType(o3, Long), (1L Xor 1L))
2005        Else
2006            Assert.Fail()
2007        End If
2008    End Sub
2009
2010    <Test()> _
2011    Sub TestOperatorsXor4()
2012        Dim o1, o2, o3 As Object
2013        o1 = 52
2014        o2 = 14
2015        o3 = Operators.XorObject(o1, o2)
2016        If (TypeOf o3 Is Integer) Then
2017            Assert.AreEqual(CType(o3, Integer), (52 Xor 14))
2018        Else
2019            Assert.Fail()
2020        End If
2021    End Sub
2022
2023    <Test()> _
2024    Sub TestOperatorsXor5()
2025        Dim o1, o2, o3 As Object
2026        o1 = 14134.3124
2027        o2 = 14.59
2028        o3 = Operators.XorObject(o1, o2)
2029        If (TypeOf o3 Is Long) Then
2030            Assert.AreEqual(CType(o3, Long), (14134L Xor 15L))
2031        Else
2032            Assert.Fail()
2033        End If
2034    End Sub
2035
2036    <Test()> _
2037    Sub TestOperatorsXor6()
2038        Dim o1, o2, o3 As Object
2039        o1 = DateTime.Now
2040        o2 = DateTime.Now
2041        Try
2042            o3 = Operators.XorObject(o1, o2)
2043        Catch ex As InvalidCastException
2044            Return
2045        End Try
2046        Assert.Fail()
2047    End Sub
2048
2049    <Test()> _
2050    Sub TestOperatorsXor7()
2051        Dim o1, o2, o3 As Object
2052        o1 = "1"c
2053        o2 = "2"c
2054        Try
2055            o3 = Operators.XorObject(o1, o2)
2056        Catch ex As InvalidCastException
2057            Return
2058        End Try
2059        Assert.Fail()
2060    End Sub
2061
2062    <Test()> _
2063    Sub TestOperatorsXor9()
2064        Dim o1, o2, o3 As Object
2065        o1 = Nothing
2066        o2 = 134S
2067        o3 = Operators.XorObject(o1, o2)
2068        If (TypeOf o3 Is Short) Then
2069            Assert.AreEqual(CType(o3, Short), (134S))
2070        Else
2071            Assert.Fail()
2072        End If
2073    End Sub
2074
2075    <Test()> _
2076    Sub TestOperatorsXor10()
2077        Dim o1, o2, o3 As Object
2078        o1 = Nothing
2079        o2 = Nothing
2080        o3 = Operators.XorObject(o1, o2)
2081        Assert.AreEqual(o3, 0)
2082    End Sub
2083
2084    <Test()> _
2085    Sub TestOperatorsXor14()
2086        Dim o3 As Object
2087        Dim o1, o2 As UShort
2088        o1 = 643US
2089        o2 = 24US
2090        o3 = Operators.XorObject(o1, o2)
2091        If (TypeOf o3 Is UShort) Then
2092            Assert.AreEqual(CType(o3, UShort), (24US Xor 643US))
2093        Else
2094            Assert.Fail()
2095        End If
2096    End Sub
2097
2098    <Test()> _
2099    Sub TestOperatorsXor15()
2100        Dim o3 As Object
2101        Dim o1 As Short
2102        Dim o2 As Long
2103        o1 = -2
2104        o2 = 1
2105        o3 = Operators.XorObject(o1, o2)
2106        If (TypeOf o3 Is Long) Then
2107            Assert.AreEqual(CType(o3, Long), -1L)
2108        Else
2109            Assert.Fail()
2110        End If
2111    End Sub
2112
2113    <Test()> _
2114    Sub TestOperatorsXor17()
2115        Dim o1, o2 As Object
2116        Dim o3 As Object
2117        o1 = True
2118        o2 = False
2119        o3 = Operators.XorObject(o1, o2)
2120        If (TypeOf o3 Is Boolean) Then
2121            Assert.AreEqual(CType(o3, Boolean), True)
2122        Else
2123            Assert.Fail()
2124        End If
2125    End Sub
2126
2127    <Test()> _
2128    Sub TestOperatorsXor18()
2129        Dim o3 As Object
2130        Try
2131            o3 = Operators.XorObject(DBNull.Value, DBNull.Value)
2132        Catch ex As InvalidCastException
2133            Return
2134        End Try
2135        Assert.Fail()
2136    End Sub
2137
2138    <Test()> _
2139    Sub TestOperatorsXor28()
2140        Dim o1, o2, o3 As Object
2141        o1 = New OperatorsImplementer()
2142        o2 = 1
2143        o3 = Operators.XorObject(o1, o2)
2144        Assert.AreEqual(o3, "okXor")
2145    End Sub
2146
2147    <Test()> _
2148    Sub TestOperatorsAnd1()
2149        Dim o1, o2, o3 As Object
2150        o1 = "1.1"
2151        o2 = "1"
2152        o3 = Operators.AndObject(o1, o2)
2153        If (TypeOf o3 Is Long) Then
2154            Assert.AreEqual(CType(o3, Long), (1L And 1L))
2155        Else
2156            Assert.Fail()
2157        End If
2158    End Sub
2159
2160    <Test()> _
2161    Sub TestOperatorsAnd2()
2162        Dim o1, o2, o3 As Object
2163        o1 = "d"
2164        o2 = 1
2165        Try
2166            o3 = Operators.AndObject(o1, o2)
2167        Catch ex As InvalidCastException
2168            Return
2169        End Try
2170        Assert.Fail()
2171    End Sub
2172
2173    <Test()> _
2174    Sub TestOperatorsAnd3()
2175        Dim o1, o2, o3 As Object
2176        o1 = "1.1"
2177        o2 = 1
2178        o3 = Operators.AndObject(o1, o2)
2179        If (TypeOf o3 Is Long) Then
2180            Assert.AreEqual(CType(o3, Long), (1L And 1L))
2181        Else
2182            Assert.Fail()
2183        End If
2184    End Sub
2185
2186    <Test()> _
2187    Sub TestOperatorsAnd4()
2188        Dim o1, o2, o3 As Object
2189        o1 = 52
2190        o2 = 14
2191        o3 = Operators.AndObject(o1, o2)
2192        If (TypeOf o3 Is Integer) Then
2193            Assert.AreEqual(CType(o3, Integer), (52 And 14))
2194        Else
2195            Assert.Fail()
2196        End If
2197    End Sub
2198
2199    <Test()> _
2200    Sub TestOperatorsAnd5()
2201        Dim o1, o2, o3 As Object
2202        o1 = 14134.3124
2203        o2 = 14.59
2204        o3 = Operators.AndObject(o1, o2)
2205        If (TypeOf o3 Is Long) Then
2206            Assert.AreEqual(CType(o3, Long), (14134L And 15L))
2207        Else
2208            Assert.Fail()
2209        End If
2210    End Sub
2211
2212    <Test()> _
2213    Sub TestOperatorsAnd6()
2214        Dim o1, o2, o3 As Object
2215        o1 = DateTime.Now
2216        o2 = DateTime.Now
2217        Try
2218            o3 = Operators.AndObject(o1, o2)
2219        Catch ex As InvalidCastException
2220            Return
2221        End Try
2222        Assert.Fail()
2223    End Sub
2224
2225    <Test()> _
2226    Sub TestOperatorsAnd7()
2227        Dim o1, o2, o3 As Object
2228        o1 = "1"c
2229        o2 = "2"c
2230        Try
2231            o3 = Operators.AndObject(o1, o2)
2232        Catch ex As InvalidCastException
2233            Return
2234        End Try
2235        Assert.Fail()
2236    End Sub
2237
2238    <Test()> _
2239    Sub TestOperatorsAnd9()
2240        Dim o1, o2, o3 As Object
2241        o1 = Nothing
2242        o2 = 134S
2243        o3 = Operators.AndObject(o1, o2)
2244        If (TypeOf o3 Is Short) Then
2245            Assert.AreEqual(CType(o3, Short), 0S)
2246        Else
2247            Assert.Fail()
2248        End If
2249    End Sub
2250
2251    <Test()> _
2252    Sub TestOperatorsAnd10()
2253        Dim o1, o2, o3 As Object
2254        o1 = Nothing
2255        o2 = Nothing
2256        o3 = Operators.AndObject(o1, o2)
2257        Assert.AreEqual(o3, 0)
2258    End Sub
2259
2260    <Test()> _
2261    Sub TestOperatorsAnd15()
2262        Dim o3 As Object
2263        Dim o1 As Short
2264        Dim o2 As Long
2265        o1 = -2
2266        o2 = 1
2267        o3 = Operators.AndObject(o1, o2)
2268        If (TypeOf o3 Is Long) Then
2269            Assert.AreEqual(CType(o3, Long), (-2L And 1L))
2270        Else
2271            Assert.Fail()
2272        End If
2273    End Sub
2274
2275    <Test()> _
2276    Sub TestOperatorsAnd17()
2277        Dim o1, o2 As Object
2278        Dim o3 As Object
2279        o1 = True
2280        o2 = False
2281        o3 = Operators.AndObject(o1, o2)
2282        If (TypeOf o3 Is Boolean) Then
2283            Assert.AreEqual(CType(o3, Boolean), False)
2284        Else
2285            Assert.Fail()
2286        End If
2287    End Sub
2288
2289    <Test()> _
2290    Sub TestOperatorsAnd18()
2291        Dim o3 As Object
2292        Try
2293            o3 = Operators.AndObject(DBNull.Value, DBNull.Value)
2294        Catch ex As InvalidCastException
2295            Return
2296        End Try
2297        Assert.Fail()
2298    End Sub
2299
2300    <Test()> _
2301    Sub TestOperatorsAnd28()
2302        Dim o1, o2, o3 As Object
2303        o1 = New OperatorsImplementer()
2304        o2 = 1
2305        o3 = Operators.AndObject(o1, o2)
2306        Assert.AreEqual(o3, "okAnd")
2307    End Sub
2308
2309    <Test()> _
2310    Sub TestOperatorsDivide1()
2311        Dim o1, o2, o3 As Object
2312        o1 = "a"
2313        o2 = "b"
2314        Try
2315            o3 = Operators.DivideObject(o1, o2)
2316        Catch ex As InvalidCastException
2317            Return
2318        End Try
2319        Assert.Fail()
2320    End Sub
2321
2322    <Test()> _
2323    Sub TestOperatorsDivide2()
2324        Dim o1, o2, o3 As Object
2325        o1 = "d"
2326        o2 = 1
2327        Try
2328            o3 = Operators.DivideObject(o1, o2)
2329        Catch ex As InvalidCastException
2330            Return
2331        End Try
2332        Assert.Fail()
2333    End Sub
2334
2335    <Test()> _
2336    Sub TestOperatorsDivide3()
2337        Dim o1, o2, o3 As Object
2338        o1 = "1"
2339        o2 = 1
2340        o3 = Operators.DivideObject(o1, o2)
2341        If (TypeOf o3 Is Double) Then
2342            Assert.AreEqual(CType(o3, Double), 1D)
2343        Else
2344            Assert.Fail()
2345        End If
2346    End Sub
2347
2348    <Test()> _
2349    Sub TestOperatorsDivide6()
2350        Dim o1, o2, o3 As Object
2351        o1 = DateTime.Now
2352        o2 = DateTime.Now
2353        Try
2354            o3 = Operators.DivideObject(o1, o2)
2355        Catch ex As InvalidCastException
2356            Return
2357        End Try
2358        Assert.Fail()
2359    End Sub
2360
2361    <Test()> _
2362    Sub TestOperatorsDivide7()
2363        Dim o1, o2, o3 As Object
2364        o1 = "1"c
2365        o2 = 1
2366        Try
2367            o3 = Operators.DivideObject(o1, o2)
2368        Catch ex As InvalidCastException
2369            Return
2370        End Try
2371        Assert.Fail()
2372    End Sub
2373
2374    <Test()> _
2375    Sub TestOperatorsDivide8()
2376        Dim o1, o2, o3 As Object
2377        o1 = 1
2378        o2 = Nothing
2379        o3 = Operators.DivideObject(o1, o2)
2380        If (TypeOf o3 Is Double) Then
2381            Assert.AreEqual(CType(o3, Double), Double.PositiveInfinity)
2382        Else
2383            Assert.Fail()
2384        End If
2385    End Sub
2386
2387    <Test()> _
2388    Sub TestOperatorsDivide11()
2389        Dim o1, o2, o3 As Object
2390        o1 = New Decimal(1)
2391        o2 = 1.0
2392        o3 = Operators.DivideObject(o1, o2)
2393        If (TypeOf o3 Is Double) Then
2394            Assert.AreEqual(CType(o3, Double), 1)
2395        Else
2396            Assert.Fail()
2397        End If
2398    End Sub
2399
2400    <Test()> _
2401    Sub TestOperatorsDivide12()
2402        Dim o1, o2, o3 As Object
2403        o1 = New Decimal(1)
2404        o2 = 1
2405        o3 = Operators.DivideObject(o1, o2)
2406        If (TypeOf o3 Is Decimal) Then
2407            Assert.AreEqual(CType(o3, Decimal), 1)
2408        Else
2409            Assert.Fail()
2410        End If
2411    End Sub
2412
2413    <Test()> _
2414    Sub TestOperatorsDivide13()
2415        Dim o1, o2, o3 As Object
2416        o1 = 1.1F
2417        o2 = 1.1F
2418        o3 = Operators.DivideObject(o1, o2)
2419        If (TypeOf o3 Is Single) Then
2420            Assert.AreEqual(CType(o3, Single), 1)
2421        Else
2422            Assert.Fail()
2423        End If
2424    End Sub
2425
2426    <Test()> _
2427    Sub TestOperatorsDivide14()
2428        Dim o1, o2, o3 As Object
2429        o1 = False
2430        o2 = 1.0F
2431        o3 = Operators.DivideObject(o1, o2)
2432        If (TypeOf o3 Is Single) Then
2433            Assert.AreEqual(CType(o3, Single), 0)
2434        Else
2435            Assert.Fail()
2436        End If
2437    End Sub
2438
2439    <Test()> _
2440    Sub TestOperatorsDivide15()
2441        Dim o1, o2, o3 As Object
2442        o1 = 1.0F
2443        o2 = "1"
2444        o3 = Operators.DivideObject(o1, o2)
2445        If (TypeOf o3 Is Double) Then
2446            Assert.AreEqual(CType(o3, Double), 1)
2447        Else
2448            Assert.Fail()
2449        End If
2450    End Sub
2451
2452    <Test()> _
2453    Sub TestOperatorsDivide16()
2454        Dim o1, o2, o3 As Object
2455        o1 = 1.0F
2456        o2 = 1
2457        o3 = Operators.DivideObject(o1, o2)
2458        If (TypeOf o3 Is Single) Then
2459            Assert.AreEqual(CType(o3, Single), 1)
2460        Else
2461            Assert.Fail()
2462        End If
2463    End Sub
2464
2465    <Test()> _
2466    Sub TestOperatorsDivide18()
2467        Dim o3 As Object
2468        Try
2469            o3 = Operators.DivideObject(DBNull.Value, 1.1D)
2470        Catch ex As InvalidCastException
2471            Return
2472        End Try
2473        Assert.Fail()
2474    End Sub
2475
2476    <Test()> _
2477    Sub TestOperatorsDivide19()
2478        Dim o1, o2, o3 As Object
2479        o1 = New OperatorsImplementer()
2480        o2 = "abc"
2481        o3 = Operators.DivideObject(o1, o2)
2482        Assert.AreEqual(o3, "ok/")
2483    End Sub
2484
2485    <Test()> _
2486    Sub TestOperatorsMod1()
2487        Dim o1, o2, o3 As Object
2488        o1 = "a"
2489        o2 = "b"
2490        Try
2491            o3 = Operators.ModObject(o1, o2)
2492        Catch ex As InvalidCastException
2493            Return
2494        End Try
2495        Assert.Fail()
2496    End Sub
2497
2498    <Test()> _
2499    Sub TestOperatorsMod2()
2500        Dim o1, o2, o3 As Object
2501        o1 = "d"
2502        o2 = 1
2503        Try
2504            o3 = Operators.ModObject(o1, o2)
2505        Catch ex As InvalidCastException
2506            Return
2507        End Try
2508        Assert.Fail()
2509    End Sub
2510
2511    <Test()> _
2512    Sub TestOperatorsMod3()
2513        Dim o1, o2, o3 As Object
2514        o1 = "1"
2515        o2 = 1
2516        o3 = Operators.ModObject(o1, o2)
2517        If (TypeOf o3 Is Double) Then
2518            Assert.AreEqual(CType(o3, Double), 0D)
2519        Else
2520            Assert.Fail()
2521        End If
2522    End Sub
2523
2524    <Test()> _
2525    Sub TestOperatorsMod6()
2526        Dim o1, o2, o3 As Object
2527        o1 = DateTime.Now
2528        o2 = 2
2529        Try
2530            o3 = Operators.ModObject(o1, o2)
2531        Catch ex As InvalidCastException
2532            Return
2533        End Try
2534        Assert.Fail()
2535    End Sub
2536
2537    <Test()> _
2538    Sub TestOperatorsMod7()
2539        Dim o1, o2, o3 As Object
2540        o1 = "1"c
2541        o2 = 2
2542        Try
2543            o3 = Operators.ModObject(o1, o2)
2544        Catch ex As InvalidCastException
2545            Return
2546        End Try
2547        Assert.Fail()
2548    End Sub
2549
2550    <Test()> _
2551    Sub TestOperatorsMod8()
2552        Dim o1, o2, o3 As Object
2553        o1 = 1
2554        o2 = Nothing
2555        Try
2556            o3 = Operators.ModObject(o1, o2)
2557        Catch ex As DivideByZeroException
2558            Return
2559        End Try
2560        Assert.Fail()
2561    End Sub
2562
2563    <Test()> _
2564    Sub TestOperatorsMod11()
2565        Dim o1, o2, o3 As Object
2566        o1 = New Decimal(3)
2567        o2 = 2.0F
2568        o3 = Operators.ModObject(o1, o2)
2569        If (TypeOf o3 Is Single) Then
2570            Assert.AreEqual(CType(o3, Single), 1)
2571        Else
2572            Assert.Fail()
2573        End If
2574    End Sub
2575
2576    <Test()> _
2577    Sub TestOperatorsMod12()
2578        Dim o1, o2, o3 As Object
2579        o1 = New Decimal(3)
2580        o2 = -2.5F
2581        o3 = Operators.ModObject(o1, o2)
2582        If (TypeOf o3 Is Single) Then
2583            Assert.AreEqual(CType(o3, Single), 0.5F)
2584        Else
2585            Assert.Fail()
2586        End If
2587    End Sub
2588
2589    <Test()> _
2590    Sub TestOperatorsMod13()
2591        Dim o1, o2, o3 As Object
2592        o1 = -1.1F
2593        o2 = 1.1D
2594        o3 = Operators.ModObject(o1, o2)
2595        If (TypeOf o3 Is Single) Then
2596            Assert.AreEqual(CType(o3, Single), 0)
2597        Else
2598            Assert.Fail()
2599        End If
2600    End Sub
2601
2602    <Test()> _
2603    Sub TestOperatorsMod14()
2604        Dim o1, o2, o3 As Object
2605        o1 = False
2606        o2 = 1.0F
2607        o3 = Operators.ModObject(o1, o2)
2608        If (TypeOf o3 Is Single) Then
2609            Assert.AreEqual(CType(o3, Single), 0)
2610        Else
2611            Assert.Fail()
2612        End If
2613    End Sub
2614
2615    <Test()> _
2616    Sub TestOperatorsMod16()
2617        Dim o1, o2, o3 As Object
2618        o1 = New OperatorsImplementer()
2619        o2 = "2"
2620        o3 = Operators.ModObject(o1, o2)
2621        Assert.AreEqual(o3, "okMod")
2622    End Sub
2623
2624    <Test()> _
2625    Sub TestOperatorsMultiply1()
2626        Dim o1, o2, o3 As Object
2627        o1 = "a"
2628        o2 = "b"
2629        Try
2630            o3 = Operators.MultiplyObject(o1, o2)
2631        Catch ex As InvalidCastException
2632            Return
2633        End Try
2634        Assert.Fail()
2635    End Sub
2636
2637    <Test()> _
2638    Sub TestOperatorsMultiply2()
2639        Dim o1, o2, o3 As Object
2640        o1 = "d"
2641        o2 = 1
2642        Try
2643            o3 = Operators.MultiplyObject(o1, o2)
2644        Catch ex As InvalidCastException
2645            Return
2646        End Try
2647        Assert.Fail()
2648    End Sub
2649
2650    <Test()> _
2651    Sub TestOperatorsMultiply3()
2652        Dim o1, o2, o3 As Object
2653        o1 = "1"
2654        o2 = 1
2655        o3 = Operators.MultiplyObject(o1, o2)
2656        If (TypeOf o3 Is Double) Then
2657            Assert.AreEqual(CType(o3, Double), 1D)
2658        Else
2659            Assert.Fail()
2660        End If
2661    End Sub
2662
2663    <Test()> _
2664    Sub TestOperatorsMultiply6()
2665        Dim o1, o2, o3 As Object
2666        o1 = DateTime.Now
2667        o2 = DateTime.Now
2668        Try
2669            o3 = Operators.MultiplyObject(o1, o2)
2670        Catch ex As InvalidCastException
2671            Return
2672        End Try
2673        Assert.Fail()
2674    End Sub
2675
2676    <Test()> _
2677    Sub TestOperatorsMultiply7()
2678        Dim o1, o2, o3 As Object
2679        o1 = "1"c
2680        o2 = 1
2681        Try
2682            o3 = Operators.MultiplyObject(o1, o2)
2683        Catch ex As InvalidCastException
2684            Return
2685        End Try
2686        Assert.Fail()
2687    End Sub
2688
2689    <Test()> _
2690    Sub TestOperatorsMultiply8()
2691        Dim o1, o2, o3 As Object
2692        o1 = 1.0F
2693        o2 = Nothing
2694        o3 = Operators.MultiplyObject(o1, o2)
2695        If (TypeOf o3 Is Single) Then
2696            Assert.AreEqual(CType(o3, Single), 0.0F)
2697        Else
2698            Assert.Fail()
2699        End If
2700    End Sub
2701
2702    <Test()> _
2703    Sub TestOperatorsMultiply11()
2704        Dim o1, o2, o3 As Object
2705        o1 = New Decimal(1)
2706        o2 = 1.0
2707        o3 = Operators.MultiplyObject(o1, o2)
2708        If (TypeOf o3 Is Double) Then
2709            Assert.AreEqual(CType(o3, Double), 1)
2710        Else
2711            Assert.Fail()
2712        End If
2713    End Sub
2714
2715    <Test()> _
2716    Sub TestOperatorsMultiply12()
2717        Dim o1, o2, o3 As Object
2718        o1 = New Decimal(1)
2719        o2 = 1
2720        o3 = Operators.MultiplyObject(o1, o2)
2721        If (TypeOf o3 Is Decimal) Then
2722            Assert.AreEqual(CType(o3, Decimal), 1)
2723        Else
2724            Assert.Fail()
2725        End If
2726    End Sub
2727
2728    <Test()> _
2729    Sub TestOperatorsMultiply13()
2730        Dim o1, o2, o3 As Object
2731        o1 = 1US
2732        o2 = 1.1F
2733        o3 = Operators.MultiplyObject(o1, o2)
2734        If (TypeOf o3 Is Single) Then
2735            Assert.AreEqual(CType(o3, Single), 1.1F)
2736        Else
2737            Assert.Fail()
2738        End If
2739    End Sub
2740
2741    <Test()> _
2742    Sub TestOperatorsMultiply14()
2743        Dim o1, o2, o3 As Object
2744        o1 = False
2745        o2 = 1.0F
2746        o3 = Operators.MultiplyObject(o1, o2)
2747        If (TypeOf o3 Is Single) Then
2748            Assert.AreEqual(CType(o3, Single), 0)
2749        Else
2750            Assert.Fail()
2751        End If
2752    End Sub
2753
2754    <Test()> _
2755    Sub TestOperatorsMultiply15()
2756        Dim o1, o2, o3 As Object
2757        o1 = 1.0F
2758        o2 = "1"
2759        o3 = Operators.MultiplyObject(o1, o2)
2760        If (TypeOf o3 Is Double) Then
2761            Assert.AreEqual(CType(o3, Double), 1)
2762        Else
2763            Assert.Fail()
2764        End If
2765    End Sub
2766
2767    <Test()> _
2768    Sub TestOperatorsMultiply16()
2769        Dim o1, o2, o3 As Object
2770        o1 = 1.0F
2771        o2 = 1
2772        o3 = Operators.MultiplyObject(o1, o2)
2773        If (TypeOf o3 Is Single) Then
2774            Assert.AreEqual(CType(o3, Single), 1)
2775        Else
2776            Assert.Fail()
2777        End If
2778    End Sub
2779
2780    <Test()> _
2781    Sub TestOperatorsIntDivide1()
2782        Dim o1, o2, o3 As Object
2783        o1 = "a"
2784        o2 = "b"
2785        Try
2786            o3 = Operators.IntDivideObject(o1, o2)
2787        Catch ex As InvalidCastException
2788            Return
2789        End Try
2790        Assert.Fail()
2791    End Sub
2792
2793    <Test()> _
2794    Sub TestOperatorsIntDivide2()
2795        Dim o1, o2, o3 As Object
2796        o1 = "d"
2797        o2 = 1
2798        Try
2799            o3 = Operators.IntDivideObject(o1, o2)
2800        Catch ex As InvalidCastException
2801            Return
2802        End Try
2803        Assert.Fail()
2804    End Sub
2805
2806    <Test()> _
2807    Sub TestOperatorsIntDivide3()
2808        Dim o1, o2, o3 As Object
2809        o1 = "1"
2810        o2 = 1
2811        o3 = Operators.IntDivideObject(o1, o2)
2812        If (TypeOf o3 Is Long) Then
2813            Assert.AreEqual(CType(o3, Long), 1)
2814        Else
2815            Assert.Fail()
2816        End If
2817    End Sub
2818
2819    <Test()> _
2820    Sub TestOperatorsIntDivide6()
2821        Dim o1, o2, o3 As Object
2822        o1 = DateTime.Now
2823        o2 = DateTime.Now
2824        Try
2825            o3 = Operators.IntDivideObject(o1, o2)
2826        Catch ex As InvalidCastException
2827            Return
2828        End Try
2829        Assert.Fail()
2830    End Sub
2831
2832    <Test()> _
2833    Sub TestOperatorsIntDivide7()
2834        Dim o1, o2, o3 As Object
2835        o1 = "1"c
2836        o2 = 1
2837        Try
2838            o3 = Operators.IntDivideObject(o1, o2)
2839        Catch ex As InvalidCastException
2840            Return
2841        End Try
2842        Assert.Fail()
2843    End Sub
2844
2845    <Test()> _
2846    Sub TestOperatorsIntDivide8()
2847        Dim o1, o2, o3 As Object
2848        o1 = 1
2849        o2 = Nothing
2850        Try
2851            o3 = Operators.IntDivideObject(o1, o2)
2852        Catch ex As DivideByZeroException
2853            Return
2854        End Try
2855        Assert.Fail()
2856    End Sub
2857
2858    <Test()> _
2859    Sub TestOperatorsIntDivide11()
2860        Dim o1, o2, o3 As Object
2861        o1 = New Decimal(1)
2862        o2 = 1.0
2863        o3 = Operators.IntDivideObject(o1, o2)
2864        If (TypeOf o3 Is Long) Then
2865            Assert.AreEqual(CType(o3, Long), 1)
2866        Else
2867            Assert.Fail()
2868        End If
2869    End Sub
2870
2871    <Test()> _
2872    Sub TestOperatorsIntDivide12()
2873        Dim o1, o2, o3 As Object
2874        o1 = New Decimal(1)
2875        o2 = 1
2876        o3 = Operators.IntDivideObject(o1, o2)
2877        If (TypeOf o3 Is Long) Then
2878            Assert.AreEqual(CType(o3, Long), 1)
2879        Else
2880            Assert.Fail()
2881        End If
2882    End Sub
2883
2884    <Test()> _
2885    Sub TestOperatorsIntDivide13()
2886        Dim o1, o2, o3 As Object
2887        o1 = 1.1F
2888        o2 = 1.1F
2889        o3 = Operators.IntDivideObject(o1, o2)
2890        If (TypeOf o3 Is Long) Then
2891            Assert.AreEqual(CType(o3, Long), 1)
2892        Else
2893            Assert.Fail()
2894        End If
2895    End Sub
2896
2897    <Test()> _
2898    Sub TestOperatorsIntDivide14()
2899        Dim o1, o2, o3 As Object
2900        o1 = False
2901        o2 = 1.0F
2902        o3 = Operators.IntDivideObject(o1, o2)
2903        If (TypeOf o3 Is Long) Then
2904            Assert.AreEqual(CType(o3, Long), 0)
2905        Else
2906            Assert.Fail()
2907        End If
2908    End Sub
2909
2910    <Test()> _
2911    Sub TestOperatorsIntDivide15()
2912        Dim o1, o2, o3 As Object
2913        o1 = 1.0F
2914        o2 = "1"
2915        o3 = Operators.IntDivideObject(o1, o2)
2916        If (TypeOf o3 Is Long) Then
2917            Assert.AreEqual(CType(o3, Long), 1)
2918        Else
2919            Assert.Fail()
2920        End If
2921    End Sub
2922
2923    <Test()> _
2924    Sub TestOperatorsIntDivide16()
2925        Dim o1, o2, o3 As Object
2926        o1 = CType(1, Byte)
2927        o2 = CType(1, Byte)
2928        o3 = Operators.IntDivideObject(o1, o2)
2929        If (TypeOf o3 Is Byte) Then
2930            Assert.AreEqual(CType(o3, Byte), 1)
2931        Else
2932            Assert.Fail()
2933        End If
2934    End Sub
2935
2936    <Test()> _
2937    Sub TestOperatorsIntDivide17()
2938        Dim o1, o2, o3 As Object
2939        o1 = 1
2940        o2 = CType(1, Byte)
2941        o3 = Operators.IntDivideObject(o1, o2)
2942        If (TypeOf o3 Is Integer) Then
2943            Assert.AreEqual(CType(o3, Integer), 1)
2944        Else
2945            Assert.Fail()
2946        End If
2947    End Sub
2948
2949    <Test()> _
2950    Sub TestOperatorsIntDivide18()
2951        Dim o1, o2, o3 As Object
2952        o1 = CType(1, SByte)
2953        o2 = CType(1, Byte)
2954        o3 = Operators.IntDivideObject(o1, o2)
2955        If (TypeOf o3 Is Short) Then
2956            Assert.AreEqual(CType(o3, Short), 1)
2957        Else
2958            Assert.Fail()
2959        End If
2960    End Sub
2961
2962    <Test()> _
2963    Sub TestOperatorsIntDivide19()
2964        Dim o1, o2, o3 As Object
2965        o1 = New OperatorsImplementer()
2966        o2 = "abc"
2967        o3 = Operators.IntDivideObject(o1, o2)
2968        Assert.AreEqual(o3, "ok\")
2969    End Sub
2970
2971    <Test()> _
2972   Sub TestOperatorsLikeObject()
2973        Dim o1, o2, o3 As Object
2974        o1 = New OperatorsImplementer
2975        o2 = New Object
2976        o3 = New Object
2977
2978        Assert.IsTrue(o1 Like o2)
2979        Try
2980            Dim b1 As Boolean = o2 Like o1
2981            Assert.Fail()
2982        Catch ex As InvalidCastException
2983        End Try
2984
2985        Try
2986            Dim b2 As Boolean = o3 Like o2
2987            Assert.Fail()
2988        Catch ex As InvalidCastException
2989        End Try
2990    End Sub
2991
2992    <Test()> _
2993    Sub TestOperatorsLikeString()
2994        Assert.IsTrue(LikeOperator.LikeString("-1d", "-#*", CompareMethod.Binary), "1")
2995        Assert.IsTrue(LikeOperator.LikeString("1", "#", CompareMethod.Binary), "2")
2996        Assert.IsFalse(LikeOperator.LikeString("12", "#", CompareMethod.Binary), "3")
2997        Assert.IsFalse(LikeOperator.LikeString("aa", "?", CompareMethod.Binary), "4")
2998        Assert.IsTrue(LikeOperator.LikeString("F", "F", CompareMethod.Binary), "5")
2999        Assert.IsTrue(LikeOperator.LikeString("F", "F", CompareMethod.Text), "6")
3000        Assert.IsFalse(LikeOperator.LikeString("F", "f", CompareMethod.Binary), "7")
3001        Assert.IsTrue(LikeOperator.LikeString("F", "f", CompareMethod.Text), "8")
3002        Assert.IsFalse(LikeOperator.LikeString("F", "FFF", CompareMethod.Binary), "9")
3003        Assert.IsTrue(LikeOperator.LikeString("aBBBa", "a*a", CompareMethod.Binary), "10")
3004        Assert.IsTrue(LikeOperator.LikeString("F", "[A-Z]", CompareMethod.Binary), "11")
3005        Assert.IsFalse(LikeOperator.LikeString("F", "[!A-Z]", CompareMethod.Binary), "12")
3006        Assert.IsTrue(LikeOperator.LikeString("a2a", "a#a", CompareMethod.Binary), "13")
3007        Assert.IsTrue(LikeOperator.LikeString("aM5b", "a[L-P]#[!c-e]", CompareMethod.Binary), "14")
3008        Assert.IsTrue(LikeOperator.LikeString("BAT123khg", "B?T*", CompareMethod.Binary), "15")
3009        Assert.IsFalse(LikeOperator.LikeString("CAT123khg", "B?T*", CompareMethod.Binary), "16")
3010    End Sub
3011
3012    <Test()> _
3013    Sub TestOperatorsCompare()
3014        Dim _false As Object = False
3015        Dim _true As Object = True
3016        Dim _int1 As Object = -4
3017        Dim _double1 As Object = -4
3018        Dim _byte1 As Object = 0
3019        Dim _date As Object = DateTime.Now
3020        Dim _str As Object = "word"
3021        Dim _str2 As Object = "aaaa"
3022        Dim _strNum As Object = "1"
3023        Dim _nothing As Object = Nothing
3024        Dim _nothing2 As Object = Nothing
3025        Dim _dbnull As Object = DBNull.Value
3026        Dim _dbnull2 As Object = DBNull.Value
3027        Dim _a As Object = New A
3028        Dim _operatorsImplementer As Object = New OperatorsImplementer
3029
3030        Assert.IsTrue(1 > _nothing)
3031
3032        Assert.IsTrue(_nothing2 = _nothing)
3033
3034        Assert.IsTrue(_nothing < 1)
3035
3036        Assert.IsTrue(_nothing > -1)
3037
3038        Assert.IsTrue(_false > _true)
3039
3040        Assert.IsTrue(_operatorsImplementer > _date)
3041
3042        Assert.IsTrue(_str > _str2)
3043
3044        Assert.IsTrue("a"c < _str)
3045
3046        Assert.IsTrue(2 > _strNum)
3047
3048        Assert.IsTrue(_int1 <= _byte1)
3049
3050        Assert.IsTrue(_double1 = _int1)
3051
3052        Try
3053            Dim tmp = _a > _nothing
3054            Assert.Fail()
3055        Catch ex As InvalidCastException
3056        End Try
3057
3058        Try
3059            Dim tmp = 1 = _a
3060            Assert.Fail()
3061        Catch ex As InvalidCastException
3062        End Try
3063
3064        Try
3065            Dim tmp = _str > _date
3066            Assert.Fail()
3067        Catch ex As InvalidCastException
3068        End Try
3069
3070        Try
3071            Dim tmp = 1 > _date
3072            Assert.Fail()
3073        Catch ex As InvalidCastException
3074        End Try
3075
3076        Try
3077            Dim tmp = _dbnull >= _dbnull2
3078            Assert.Fail()
3079        Catch ex As InvalidCastException
3080        End Try
3081
3082    End Sub
3083
3084End Class
3085
3086Class A
3087End Class
3088
3089Class OperatorsImplementer
3090    Public Shared Operator =(ByVal a As OperatorsImplementer, ByVal b As Object) As Object
3091        Return "True"
3092    End Operator
3093
3094    Public Shared Operator <>(ByVal a As OperatorsImplementer, ByVal b As Object) As Object
3095        Return "True"
3096    End Operator
3097
3098    Public Shared Operator >(ByVal a As OperatorsImplementer, ByVal b As Object) As Object
3099        Return "True"
3100    End Operator
3101
3102    Public Shared Operator <(ByVal a As OperatorsImplementer, ByVal b As Object) As Object
3103        Return "True"
3104    End Operator
3105
3106    Public Shared Operator >=(ByVal a As OperatorsImplementer, ByVal b As Object) As Object
3107        Return "True"
3108    End Operator
3109
3110    Public Shared Operator <=(ByVal a As OperatorsImplementer, ByVal b As Object) As Object
3111        Return "True"
3112    End Operator
3113
3114    Public Shared Operator +(ByVal a As OperatorsImplementer, ByVal b As Object) As Object
3115        Return "ok+"
3116    End Operator
3117
3118    Public Shared Operator *(ByVal a As OperatorsImplementer, ByVal b As Object) As Object
3119        Return "ok*"
3120    End Operator
3121
3122    Public Shared Operator /(ByVal a As OperatorsImplementer, ByVal b As Object) As Object
3123        Return "ok/"
3124    End Operator
3125
3126    Public Shared Operator \(ByVal a As OperatorsImplementer, ByVal b As Object) As Object
3127        Return "ok\"
3128    End Operator
3129
3130    Public Shared Operator &(ByVal a As OperatorsImplementer, ByVal b As Object) As Object
3131        Return "ok&"
3132    End Operator
3133
3134    Public Shared Operator -(ByVal a As OperatorsImplementer, ByVal b As Object) As Object
3135        Return "ok-"
3136    End Operator
3137
3138    Public Shared Operator Or(ByVal a As OperatorsImplementer, ByVal b As Object) As Object
3139        Return "ok||"
3140    End Operator
3141
3142    Public Shared Operator Xor(ByVal a As OperatorsImplementer, ByVal b As Object) As Object
3143        Return "okXor"
3144    End Operator
3145
3146    Public Shared Operator Mod(ByVal a As OperatorsImplementer, ByVal b As Object) As Object
3147        Return "okMod"
3148    End Operator
3149
3150    Public Shared Operator And(ByVal a As OperatorsImplementer, ByVal b As Object) As Object
3151        Return "okAnd"
3152    End Operator
3153
3154    Public Shared Operator >>(ByVal a As OperatorsImplementer, ByVal b As Integer) As Object
3155        Return "ok>>"
3156    End Operator
3157
3158    Public Shared Operator <<(ByVal a As OperatorsImplementer, ByVal b As Integer) As Object
3159        Return "ok<<"
3160    End Operator
3161
3162    Public Shared Operator -(ByVal a As OperatorsImplementer) As Object
3163        Return "-ok"
3164    End Operator
3165
3166    Public Shared Operator Not(ByVal a As OperatorsImplementer) As Object
3167        Return "!ok"
3168    End Operator
3169
3170    Public Shared Operator +(ByVal a As OperatorsImplementer) As Object
3171        Return "+ok"
3172    End Operator
3173
3174    Public Shared Operator Like(ByVal a As OperatorsImplementer, ByVal b As Object) As Boolean
3175        Return True
3176    End Operator
3177
3178End Class
3179