2 '--- start of vbslib include ------------------------------------------------------
\r
3 Dim g_debug, g_vbslib_path, g_IncludeType, g_CommandPrompt, g_fs, g_sh
\r
4 If IsEmpty( g_fs ) Then
\r
5 '--- start of parameters for vbslib include -------------------------------
\r
7 g_vbslib_path = "vbslib\vbs_inc.vbs"
\r
10 '--- end of parameters for vbslib include ---------------------------------
\r
11 Dim g_f, g_include_path, i : Set g_fs = CreateObject( "Scripting.FileSystemObject" )
\r
12 If g_fs.FileExists("setting.vbs") Then Set g_f = g_fs.OpenTextFile( "setting.vbs" ): Execute g_f.ReadAll()
\r
13 If not IsEmpty( WScript.Arguments.Named.Item("IncludeType") ) Then g_IncludeType = WScript.Arguments.Named.Item("IncludeType")
\r
14 Set g_sh = WScript.CreateObject("WScript.Shell") : g_f = g_sh.CurrentDirectory
\r
15 g_sh.CurrentDirectory = g_fs.GetParentFolderName( WScript.ScriptFullName )
\r
16 For i = 10 To 1 Step -1 : If g_fs.FileExists(g_vbslib_path) Then Exit For
\r
17 g_vbslib_path = "..\" + g_vbslib_path : Next
\r
18 If g_fs.FileExists(g_vbslib_path) Then g_vbslib_path = g_fs.GetAbsolutePathName( g_vbslib_path )
\r
19 g_sh.CurrentDirectory = g_f
\r
20 If i=0 Then WScript.Echo "Not found " + g_fs.GetFileName( g_vbslib_path ) +vbCR+vbLF+ "Check g_vbslib_path in " + WScript.ScriptName + " or setting.vbs" : WScript.Quit 1
\r
21 Set g_f = g_fs.OpenTextFile( g_vbslib_path ): Execute g_f.ReadAll() : g_f = Empty
\r
22 If ResumePush Then On Error Resume Next
\r
24 ResumePop : On Error GoTo 0
\r
26 '--- end of vbslib include --------------------------------------------------------
\r
29 '********************************************************************************
\r
31 '********************************************************************************
\r
32 Class ClassA : Public id : End Class
\r
35 '********************************************************************************
\r
37 '********************************************************************************
\r
39 Dim TestName, TestParamPath, f
\r
42 '//=== Get test parameters from command line
\r
43 TestName = WScript.Arguments.Named.Item("Test")
\r
44 If IsEmpty( TestName ) Then TestName = "T_QSort1"
\r
47 '//=== Do T_QSort1 test : Return Pass by errorlevel
\r
48 If TestName = "T_QSort1" Then
\r
49 EchoTestStart "T_QSort1"
\r
52 Set arr(0) = new ClassA : arr(0).id = 1000
\r
53 Set arr(1) = new ClassA : arr(1).id = 500
\r
54 Set arr(2) = new ClassA : arr(2).id = 1000
\r
55 Set arr(3) = new ClassA : arr(3).id = 1000
\r
56 Set arr(4) = new ClassA : arr(4).id = 1000
\r
57 Set arr(5) = new ClassA : arr(5).id = 1000
\r
58 Set arr(6) = new ClassA : arr(6).id = 1000
\r
59 Set arr(7) = new ClassA : arr(7).id = 1000
\r
60 Set arr(8) = new ClassA : arr(8).id = 1000
\r
62 QuickSort arr, 0, 8, GetRef("CmpFunc1"), Empty
\r
63 CheckSorted arr, 0, 8
\r
66 Set arr(1) = new ClassA : arr(1).id = 6
\r
67 Set arr(2) = new ClassA : arr(2).id = 3
\r
68 Set arr(3) = new ClassA : arr(3).id = 4
\r
69 Set arr(4) = new ClassA : arr(4).id = 4
\r
70 Set arr(5) = new ClassA : arr(5).id = 1
\r
71 QuickSort arr, 1, 5, GetRef("CmpFunc1"), Empty
\r
72 CheckSorted arr, 1, 5
\r
75 Set arr(0) = new ClassA : arr(0).id = 1
\r
76 Set arr(1) = new ClassA : arr(1).id = 2
\r
77 Set arr(2) = new ClassA : arr(2).id = 3
\r
79 QuickSort arr, 0, 2, GetRef("CmpFunc1"), Empty
\r
80 CheckSorted arr, 0, 2
\r
90 '********************************************************************************
\r
91 ' <<< [CmpFunc1] >>>
\r
92 '********************************************************************************
\r
93 Function CmpFunc1( left, right, param )
\r
94 CmpFunc1 = left.id - right.id '//
\8d~
\8f\87\82È
\82ç right.id - left.id
\r
98 '********************************************************************************
\r
99 ' <<< [CheckSorted] >>>
\r
100 '********************************************************************************
\r
101 Sub CheckSorted( Arr, iStart, iLast )
\r
105 key = Arr(iStart).id : b = False
\r
106 For i=iStart To iLast
\r
107 s="" : If Arr(i).id < key Then s = " (Fail)" : b = True
\r
108 echo "("&i&") " & Arr(i).id & s
\r
112 If b Then Sleep 1000 : Fail
\r