⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 latebindingtests2.vb

📁 大名鼎鼎的mono是.NET平台的跨平台(支持linux
💻 VB
📖 第 1 页 / 共 3 页
字号:
'' LateBindingTests2.vb'' Author:'   Boris Kirzner (borisk@mainsoft.com)''' Copyright (C) 2002-2006 Mainsoft Corporation.' Copyright (C) 2004-2006 Novell, Inc (http://www.novell.com)'' Permission is hereby granted, free of charge, to any person obtaining' a copy of this software and associated documentation files (the' "Software"), to deal in the Software without restriction, including' without limitation the rights to use, copy, modify, merge, publish,' distribute, sublicense, and/or sell copies of the Software, and to' permit persons to whom the Software is furnished to do so, subject to' the following conditions:' ' The above copyright notice and this permission notice shall be' included in all copies or substantial portions of the Software.' ' THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,' EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF' MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND' NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE' LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION' OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION' WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.Imports SystemImports System.ReflectionImports NUnit.Framework#If mono_not_yet Then 'No late binding for vbnc yet.<TestFixture()> _Public Class LateBindingTests2    Dim bo As Boolean = True    Dim b As Byte = 1    Dim s As Short = 1    Dim i As Integer = 1    Dim l As Long = 1    Dim c As Char = "a"c    Dim d As Double = 1.0    Dim si As Single = 1.0    Dim ss2 As String = "aa"    Dim ccA As A = New A    Dim ccB As BB = New BB    Dim ccc As CC = New CC    Dim iic As IConvertible = New IC#If NET_2_0 Then    Dim sb As SByte = 1    Dim us As UShort = 1    Dim ui As UInteger = 1    Dim ul As ULong = 1#End If    Private Class C1        Public Function F(ByVal o As Object) As String            Return "Object"        End Function    End Class    <Test()> _    Public Sub LateBind_Object()        Dim o As Object = New C1        Assert.AreEqual("Object", o.F(bo))        Assert.AreEqual("Object", o.F(b))        Assert.AreEqual("Object", o.F(s))        Assert.AreEqual("Object", o.F(i))        Assert.AreEqual("Object", o.F(l))        Assert.AreEqual("Object", o.F(c))        Assert.AreEqual("Object", o.F(d))        Assert.AreEqual("Object", o.F(si))        Assert.AreEqual("Object", o.F(ccA))        Assert.AreEqual("Object", o.F(ss2))        Assert.AreEqual("Object", o.F(iic))#If NET_2_0 Then        Assert.AreEqual("Object", o.F(sb))        Assert.AreEqual("Object", o.F(us))        Assert.AreEqual("Object", o.F(ui))        Assert.AreEqual("Object", o.F(ul))#End If    End Sub    Private Class C2        Public Function F(ByVal o As String) As String            Return "String"        End Function    End Class    <Test()> _    Public Sub LateBind_String()        Dim o As Object = New C2        Assert.AreEqual("String", o.F(bo))        Assert.AreEqual("String", o.F(b))        Assert.AreEqual("String", o.F(s))        Assert.AreEqual("String", o.F(i))        Assert.AreEqual("String", o.F(l))        Assert.AreEqual("String", o.F(c))        Assert.AreEqual("String", o.F(d))        Assert.AreEqual("String", o.F(si))        'Assert.AreEqual("String", o.F(ccA))        Assert.AreEqual("String", o.F(ss2))        'Assert.AreEqual("Object", o.F(iic))#If NET_2_0 Then        Assert.AreEqual("String", o.F(sb))        Assert.AreEqual("String", o.F(us))        Assert.AreEqual("String", o.F(ui))        Assert.AreEqual("String", o.F(ul))#End If    End Sub    <Test(), ExpectedException(GetType(InvalidCastException))> _    Public Sub LateBind_String2()        Dim o As Object = New C2        o.F(ccA)    End Sub    <Test(), ExpectedException(GetType(InvalidCastException))> _    Public Sub LateBind_String3()        Dim o As Object = New C2        o.F(iic)    End Sub    Private Class C100        Public Function F(ByVal o As Object) As String            Return "Object"        End Function        Public Function F(ByVal o As String) As String            Return "String"        End Function    End Class    <Test()> _    Public Sub LateBind_StringObject()        Dim o As Object = New C100        Dim ccA As A = New A        Assert.AreEqual("Object", o.F(bo))        Assert.AreEqual("Object", o.F(b))        Assert.AreEqual("Object", o.F(s))        Assert.AreEqual("Object", o.F(i))        Assert.AreEqual("Object", o.F(l))        Assert.AreEqual("String", o.F(c))        Assert.AreEqual("Object", o.F(d))        Assert.AreEqual("Object", o.F(si))        Assert.AreEqual("Object", o.F(ccA))        Assert.AreEqual("String", o.F(ss2))        Assert.AreEqual("Object", o.F(iic))#If NET_2_0 Then        Assert.AreEqual("Object", o.F(sb))        Assert.AreEqual("Object", o.F(us))        Assert.AreEqual("Object", o.F(ui))        Assert.AreEqual("Object", o.F(ul))#End If    End Sub    Private Class C4        Public Function F(ByVal ParamArray args() As A) As String            Return "ParamArray A()"        End Function        Public Function F(ByVal a As A, ByVal ParamArray args() As A) As String            Return "A,ParamArray A()"        End Function    End Class#If NET_2_0 Then    'TargetJvmNotWorking - Ambiguous matching in method resolution    <Category("TargetJvmNotWorking")> _    <Test()> _    Public Sub LateBind_Complex_ParamArray1()#Else    <Test(), ExpectedException(GetType(AmbiguousMatchException))> _    Public Sub LateBind_Complex_ParamArray1()#End If        Dim o As Object = New C4        o.F(ccA)    End Sub#If NET_2_0 Then    'TargetJvmNotWorking - Ambiguous matching in method resolution    <Category("TargetJvmNotWorking")> _    <Test()> _    Public Sub LateBind_Complex_ParamArray2()#Else    <Test(), ExpectedException(GetType(AmbiguousMatchException))> _    Public Sub LateBind_Complex_ParamArray2()#End If        Dim o As Object = New C4        o.F(ccA, ccA)    End Sub#If NET_2_0 Then    'TargetJvmNotWorking - Ambiguous matching in method resolution    <Category("TargetJvmNotWorking")> _    <Test()> _    Public Sub LateBind_Complex_ParamArray6()#Else    <Test(), ExpectedException(GetType(AmbiguousMatchException))> _    Public Sub LateBind_Complex_ParamArray6()#End If        Dim o As Object = New C4        o.F(ccA, ccA, ccA, ccA, ccA, ccA)    End Sub    Private Class C5        Public Function F(ByVal ParamArray args() As A) As String            Return "ParamArray A()"        End Function        Public Function F(ByVal a As A) As String            Return "A"        End Function        Public Function F(ByVal a1 As A, ByVal a2 As A) As String            Return "A,A"        End Function        Public Function F(ByVal a1 As A, ByVal a2 As A, ByVal a3 As A, ByVal a4 As A) As String            Return "A,A,A,A"        End Function    End Class    <Test()> _    Public Sub LateBind_Complex_ParamArray10()        Dim o As Object = New C5        Assert.AreEqual("A", o.F(ccA))        Assert.AreEqual("A,A", o.F(ccA, ccA))        Assert.AreEqual("ParamArray A()", o.F(ccA, ccA, ccA))        Assert.AreEqual("A,A,A,A", o.F(ccA, ccA, ccA, ccA))        Assert.AreEqual("ParamArray A()", o.F(ccA, ccA, ccA, ccA, ccA))    End Sub    <Test()> _   Public Sub LateBind_Complex_ParamArray11()        Dim o As Object = New C5        Assert.AreEqual("A", o.F(ccB))        Assert.AreEqual("A,A", o.F(ccB, ccB))        Assert.AreEqual("ParamArray A()", o.F(ccB, ccB, ccB))        Assert.AreEqual("A,A,A,A", o.F(ccB, ccB, ccB, ccB))        Assert.AreEqual("ParamArray A()", o.F(ccB, ccB, ccB, ccB, ccB))    End Sub    Private Class C6        Public Function F(ByVal ParamArray args() As A) As String            Return "ParamArray A()"        End Function        Public Function F(ByVal a1 As A, ByVal a2 As A, ByVal a As A) As String            Return "A,A,A"        End Function        Public Function F(ByVal ParamArray args() As BB) As String            Return "ParamArray BB()"        End Function        Public Function F(ByVal a1 As BB, ByVal a2 As BB, ByVal a As BB) As String            Return "BB,BB,BB"        End Function    End Class    <Test()> _    Public Sub LateBind_Complex_ParamArray12()        Dim o As Object = New C6        Assert.AreEqual("ParamArray A()", o.F(ccA))        Assert.AreEqual("A,A,A", o.F(ccA, ccA, ccA))        Assert.AreEqual("ParamArray A()", o.F(ccA, ccA, ccA, ccA, ccA))        Assert.AreEqual("ParamArray BB()", o.F(ccB))        Assert.AreEqual("BB,BB,BB", o.F(ccB, ccB, ccB))        Assert.AreEqual("ParamArray BB()", o.F(ccB, ccB, ccB, ccB, ccB))        Assert.AreEqual("A,A,A", o.F(ccB, ccA, ccA))        Assert.AreEqual("ParamArray A()", o.F(ccB, ccA, ccB, ccA, ccB))    End Sub    Private Class C7        Public Function F(ByVal b As Byte) As String            Return "Byte"        End Function        Public Function F(ByVal b As String) As String            Return "String"        End Function        Public Function F(ByVal o As Object) As String            Return "Object"        End Function    End Class    <Test()> _     Public Sub LateBind_Complex_IConvertible1()        Dim o As Object = New C7        Assert.AreEqual("Object", o.F(iic))    End Sub    Private Class C8        Public Function F(ByVal b As Byte) As String            Return "Byte"        End Function        Public Function F(ByVal b As String) As String            Return "String"        End Function    End Class    <Test(), ExpectedException(GetType(AmbiguousMatchException))> _     Public Sub LateBind_Complex_IConvertible2()        Dim o As Object = New C8        o.F(iic)    End Sub    Private Class C9        Public Function F(ByVal b As Integer, ByVal s As String) As String            Return "Integer,String"        End Function        Public Function F(ByVal b As Short, ByVal o As Object) As String            Return "Short,Object"        End Function    End Class    <Test(), ExpectedException(GetType(AmbiguousMatchException))> _    Public Sub LateBind_Primitive_Object1()        Dim o As Object = New C9        o.F(b, c)    End Sub    <Test(), ExpectedException(GetType(AmbiguousMatchException))> _    Public Sub LateBind_IConvertible_Primitive1()        Dim o As Object = New C9        o.F(iic, c)    End Sub    Private Class C10        Public Function F(ByVal o As Short, ByVal a1 As A)            Return "Short,A"        End Function        Public Function F(ByVal o As Object, ByVal b1 As BB)            Return "Object,BB"        End Function    End Class    <Test()> _    Public Sub LateBind_Complex_Primitive1()        Dim o As Object = New C10        Assert.AreEqual("Short,A", o.F(s, ccA))    End Sub    <Test(), ExpectedException(GetType(AmbiguousMatchException))> _   Public Sub LateBind_Complex_Primitive2()        Dim o As Object = New C10        o.F(s, ccB)    End Sub    Private Class C11        Public Function F(ByVal o As Char, ByVal a1 As A)            Return "Char,A"        End Function        Public Function F(ByVal o As String, ByVal b1 As BB)            Return "Object,BB"        End Function    End Class    <Test()> _    Public Sub LateBind_Complex_Char1()        Dim o As Object = New C11        Assert.AreEqual("Char,A", o.F(c, ccA))    End Sub    <Test(), ExpectedException(GetType(AmbiguousMatchException))> _    Public Sub LateBind_Complex_Char2()        Dim o As Object = New C11        o.F(c, ccB)    End Sub    Private Class C12        Public Function F(ByVal o As String, ByVal a1 As A)            Return "String,A"        End Function        Public Function F(ByVal o As Object, ByVal b1 As BB)            Return "Object,BB"        End Function    End Class    <Test()> _    Public Sub LateBind_Complex_Char3()        Dim o As Object = New C12        Assert.AreEqual("String,A", o.F(c, ccA))    End Sub    <Test(), ExpectedException(GetType(AmbiguousMatchException))> _   Public Sub LateBind_Complex_Char4()        Dim o As Object = New C12        o.F(c, ccB)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -