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

📄 operators.vb

📁 大名鼎鼎的mono是.NET平台的跨平台(支持linux
💻 VB
字号:
' ' Visual Basic.Net Compiler' Copyright (C) 2004 - 2007 Rolf Bjarne Kvinge, RKvinge@novell.com' ' This library is free software; you can redistribute it and/or' modify it under the terms of the GNU Lesser General Public' License as published by the Free Software Foundation; either' version 2.1 of the License, or (at your option) any later version.' ' This library is distributed in the hope that it will be useful,' but WITHOUT ANY WARRANTY; without even the implied warranty of' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU' Lesser General Public License for more details.' ' You should have received a copy of the GNU Lesser General Public' License along with this library; if not, write to the Free Software' Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA' #If GENERATOR ThenImports VB = Microsoft.VisualBasicImports SystemImports System.CollectionsNamespace Z    Public Class OperatorGenerator        Shared Function Main(ByVal args() As String) As Integer            If Not (args.Length = 1 AndAlso args(0) = "-generate") Then                Return 0            End If            Generate()        End Function        Shared ReadOnly Property Path() As String            Get                Return IO.Path.Combine(Z.Constants.GetBasePath, Z.Constants.GetName)            End Get        End Property        Shared Sub Generate()            Console.WriteLine("Deleting " & IO.Path.Combine(Path, "*.vb") & "...")            IO.Directory.CreateDirectory(Path)            For Each file As String In IO.Directory.GetFiles(Path, "*.vb")                IO.File.Delete(file)                Console.WriteLine("Deleted " & file)            Next            Dim Test As New System.Text.StringBuilder()            Dim TestSucceeds As New System.Text.StringBuilder            Dim TestFails As New System.Text.StringBuilder            Dim TestStart As New System.Text.StringBuilder            Dim TestEnd As New System.Text.StringBuilder            Dim name As String            For i As Integer = 0 To Constants.BINARYOPERATORS.Length - 1                Dim op As String = Constants.BINARYOPERATORS(i)                TestStart.Length = 0                TestStart.AppendLine("Option Strict Off")                TestStart.AppendLine("Imports System")                TestStart.AppendLine("Class Operator" & Constants.BINARYOPERATORSNAME(i) & "Test")                TestStart.AppendLine("    Public Shared Function Main() As Integer")                TestStart.AppendLine("        Dim obj As Object")                TestStart.AppendLine("        Dim result As Integer")                For j As Integer = 0 To Constants.TYPEVALUES.Length - 1                    Dim left As String = Constants.TYPEVALUES(j)                    TestStart.AppendLine("        Dim " & Constants.TYPES(j) & "value As " & Constants.TYPES(j) & " = " & Constants.TYPEVALUES3(j))                Next                TestStart.AppendLine("")                TestEnd.Length = 0                TestEnd.AppendLine("")                TestEnd.AppendLine("        Return result")                TestEnd.AppendLine("    End Function")                TestEnd.AppendLine("End Class")                TestSucceeds.Length = 0                TestSucceeds.Append(TestStart)                For j As Integer = 0 To Constants.TYPEVALUES.Length - 1                    Dim left As String = Constants.TYPES(j) & "value"                    For k As Integer = 0 To Constants.TYPEVALUES.Length - 1                        Dim right As String = Constants.TYPES(k) & "value"                        name = Constants.BINARYOPERATORSNAME(i) & "_" & Constants.TYPES(j) & "_" & Constants.TYPES(k) & ".vb"                        Dim resultType As TypeCode                        Dim errorNumber As Integer                        resultType = TypeConverter.GetBinaryResultType(Constants.BINARYOPERATORSKS(i), Constants.BUILTINTYPESCODES(j), Constants.BUILTINTYPESCODES(k))                        errorNumber = TypeConverter.GetErrorNumberForBinaryOperation(Constants.BINARYOPERATORSKS(i), Constants.BUILTINTYPESCODES(j), Constants.BUILTINTYPESCODES(k))                        Test.Length = 0                        If Constants.BUILTINTYPESCODES(j) = TypeCode.DateTime OrElse Constants.BUILTINTYPESCODES(k) = TypeCode.DateTime OrElse Constants.BUILTINTYPESCODES(j) = TypeCode.Char OrElse Constants.BUILTINTYPESCODES(k) = TypeCode.Char Then                            Test.AppendLine("        Try")                            Test.AppendLine("            obj = " & left & " " & op & " " & right)                            Test.AppendLine("            If Type.GetTypeCode(obj.GetType()) <> TypeCode." & resultType.ToString() & " Then Console.WriteLine(""<" & name & "> Expected TypeCode." & resultType.ToString & " got TypeCode."" & Type.GetTypeCode(obj.GetType()).ToString ()) : result += 1")                            Test.AppendLine("        Catch ex As InvalidCastException")                            Test.AppendLine("            Console.WriteLine(ex.Message)")                            Test.AppendLine("        Catch ex As Exception")                            Test.AppendLine("            result += 1")                            Test.AppendLine("            Console.WriteLine(ex.Message)")                            Test.AppendLine("        End Try")                        Else                            Test.AppendLine("        obj = " & left & " " & op & " " & right)                            Test.AppendLine("        If Type.GetTypeCode(obj.GetType()) <> TypeCode." & resultType.ToString() & " Then Console.WriteLine(""<" & name & "> Expected TypeCode." & resultType.ToString & " got TypeCode."" & Type.GetTypeCode(obj.GetType()).ToString ()) : result += 1")                        End If                        Test.AppendLine("")                        If errorNumber > 0 Then                            TestFails.Length = 0                            TestFails.Append(TestStart)                            TestFails.Append(Test)                            TestFails.Append(TestEnd)                            name = System.IO.Path.Combine(Path, errorNumber & "_" & name)                            System.IO.File.WriteAllText(name, TestFails.ToString)                        Else                            TestSucceeds.Append(Test)                        End If                    Next                Next                TestSucceeds.Append(TestEnd)                name = System.IO.Path.Combine(Path, "All_" & Constants.BINARYOPERATORSNAME(i) & "_Operators.vb")                System.IO.File.WriteAllText(name, TestSucceeds.ToString)            Next        End Sub    End ClassEnd Namespace#End If

⌨️ 快捷键说明

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