--- /dev/null
+Option Explicit \r
+\r
+' vbslib ver3.00 Sep.22, 2009\r
+' Copyright (c) 2008-2009, T's-Neko at Sage Plaisir 21 (Japan)\r
+' All rights reserved. Based on 3-clause BSD license.\r
+\r
+Dim g_SrcPath\r
+Dim g_TestPrompt_Path\r
+ g_TestPrompt_Path = g_SrcPath\r
+\r
+\r
+ \r
+'********************************************************************************\r
+' <<< Global Variables >>> \r
+'********************************************************************************\r
+Const Op__NoOperation = 0\r
+Const Op__SelectTest = 1\r
+Const Op__EachTest = 2\r
+Const Op__EachTestR = 3\r
+Const Op__EachDebug = 4\r
+Const Op__AllTest = 5\r
+Const Op__Do1 = 6\r
+Const Op__Debug = 8\r
+Const Op__Exit = 9\r
+Const Op__OpenFail = 88\r
+Const Op__NextFail = 89\r
+\r
+ \r
+'********************************************************************************\r
+' <<< [RunTestPrompt] >>> \r
+'********************************************************************************\r
+Sub RunTestPrompt( Opt )\r
+ Dim prompt\r
+ Dim w_\r
+\r
+ g_AppKey.SetWritableMode F_ErrIfWarn\r
+\r
+ Set prompt = new TestPrompt : ErrCheck\r
+ If IsObject( Opt ) Then Set prompt.m_MainOpt = Opt Else prompt.m_MainOpt = Opt\r
+ If TypeName( Opt ) = "Writables" Then Set w_=Opt.Enable\r
+\r
+\r
+ '//=== Select test from command line parameter\r
+ If WScript.Arguments.Unnamed.Count >= 1 Then _\r
+ prompt.SetOpenSymbolOrPath WScript.Arguments.Unnamed(0)\r
+\r
+\r
+ '//=== Setup unit test mode\r
+ If VarType( Opt ) = vbString Then\r
+ With prompt.m_Tests\r
+ .m_bDisableAddTestScript = True\r
+ Setting_buildTestPrompt prompt\r
+ .m_bDisableAddTestScript = False\r
+ .AddTestScript g_fs.GetBaseName( g_fs.GetParentFolderName( _\r
+ WScript.ScriptFullName ) ), WScript.ScriptFullName\r
+ .SetCurrentSymbol WScript.ScriptFullName\r
+ .m_bAutoDiff = True\r
+ End With\r
+ g_Test.m_DefLogFName = "Test_log.txt"\r
+ Else\r
+ Setting_buildTestPrompt prompt\r
+ End If\r
+\r
+\r
+ '//=== Set log file from command line parameter\r
+ If not IsEmpty( WScript.Arguments.Named.Item("log") ) Then _\r
+ g_Test.m_DefLogFName = WScript.Arguments.Named.Item("log")\r
+\r
+\r
+ '//=== Set Test Symbol\r
+ If Not IsEmpty( prompt.m_OpenSymbolOrPath ) Then _\r
+ prompt.m_Tests.SetCurrentSymbol prompt.m_OpenSymbolOrPath\r
+\r
+ '//=== Start prompt\r
+ g_CUI.SetAutoKeysFromMainArg\r
+ prompt.DoPrompt\r
+End Sub\r
+\r
+ \r
+'*-------------------------------------------------------------------------*\r
+'* \81\9f<<<< [TestPrompt] Class >>>> */ \r
+'*-------------------------------------------------------------------------*\r
+\r
+Class TestPrompt\r
+\r
+ Public m_Tests ' as Tests\r
+ Public m_OpenSymbolOrPath ' param1 of TestPrompt.vbs\r
+ Public m_MainOpt\r
+\r
+ Public m_Menu() ' as MenuItem\r
+\r
+ ' const integer for other vbs file scope\r
+ Public Op_NoOperation\r
+ Public Op_SelectTest\r
+ Public Op_EachTest\r
+ Public Op_EachTestR\r
+ Public Op_EachDebug\r
+ Public Op_AllTest\r
+ Public Op_Do1\r
+ Public Op_Debug\r
+ Public Op_OpenFail\r
+ Public Op_NextFail\r
+ Public Op_Exit\r
+\r
+\r
+ \r
+'********************************************************************************\r
+' <<< [TestPrompt::Class_Initialize] >>> \r
+'********************************************************************************\r
+Private Sub Class_Initialize\r
+ Dim i\r
+\r
+ Set m_Tests = new Tests : ErrCheck\r
+ m_Tests.bTargetDebug = Not IsEmpty( WScript.Arguments.Named("target_debug") )\r
+\r
+ Set m_Tests.Prompt = Me\r
+ ReDim m_Menu(10)\r
+ For i=0 To 10\r
+ Set m_Menu(i) = new MenuItem : ErrCheck\r
+ Next\r
+\r
+ Op_NoOperation = Op__NoOperation\r
+ Op_SelectTest = Op__SelectTest\r
+ Op_EachTest = Op__EachTest\r
+ Op_EachTestR = Op__EachTestR\r
+ Op_EachDebug = Op__EachDebug\r
+ Op_AllTest = Op__AllTest\r
+ Op_Do1 = Op__Do1\r
+ Op_Debug = Op__Debug\r
+ Op_OpenFail = Op__OpenFail\r
+ Op_NextFail = Op__NextFail\r
+ Op_Exit = Op__Exit\r
+End Sub\r
+\r
+\r
+ \r
+'********************************************************************************\r
+' <<< [TestPrompt::ReDimMenu] >>> \r
+'********************************************************************************\r
+Public Sub ReDimMenu( UBound_ )\r
+ For i=0 To UBound( m_Menu )\r
+ m_Menu(i) = Empty\r
+ Next\r
+\r
+ ReDim m_Menu( UBound_ )\r
+\r
+ For i=0 To UBound_\r
+ Set m_Menu(i) = new MenuItem : ErrCheck\r
+ Next\r
+\r
+End Sub\r
+\r
+\r
+ \r
+'********************************************************************************\r
+' <<< [TestPrompt::SetOpenSymbolOrPath] >>> \r
+'********************************************************************************\r
+Public Sub SetOpenSymbolOrPath( Symbol_or_Path )\r
+ m_OpenSymbolOrPath = Symbol_or_Path\r
+ If g_fs.FileExists( Symbol_or_Path ) Then\r
+ m_Tests.BaseFolderPath = g_fs.GetParentFolderName( g_fs.GetAbsolutePathName(Symbol_or_Path) )\r
+ ElseIf Symbol_or_Path <> "" Then\r
+ m_Tests.BaseFolderPath = g_sh.CurrentDirectory\r
+ End If\r
+End Sub\r
+\r
+ \r
+'********************************************************************************\r
+' <<< [TestPrompt::DoPrompt] >>> \r
+'********************************************************************************\r
+Public Sub DoPrompt\r
+ Dim num, i\r
+\r
+ Do\r
+ WScript.Echo "TestPrompt.vbs [" & m_Tests.CurrentSymbol & "]"\r
+ If Not IsEmpty( m_Tests.CurrentTest ) Then WScript.Echo " test vbs = " & _\r
+ GetStepPath( m_Tests.CurrentTest.ScriptPath, m_Tests.BaseFolderPath )\r
+ WScript.Echo " base folder = " & m_Tests.BaseFolderPath\r
+ For num = 0 To UBound( m_Menu )\r
+ If Not IsEmpty( m_Menu(num) ) And _\r
+ ( Not IsEmpty( m_Menu(num).m_Caption ) Or m_Menu(num).m_OpType = Op_SelectTest Or m_Menu(num).m_OpType = Op_Debug ) Then\r
+ Select Case m_Menu(num).m_OpType\r
+ Case Op_SelectTest WScript.Echo m_Menu(num).m_Caption & " (current test = " & m_Tests.CurrentSymbol & ")"\r
+ Case Op_Debug WScript.Echo m_Menu(num).m_Caption & " (debug script=" & g_debug & ", target=" & m_Tests.bTargetDebug & ")"\r
+ Case Else WScript.Echo m_Menu(num).m_Caption\r
+ End Select\r
+ End If\r
+ Next\r
+ num = g_CUI.input( "Select number>" )\r
+ num = CInt2( num )\r
+ For i = 0 To UBound( m_Menu )\r
+ If not IsEmpty( m_Menu(i).m_Number ) Then\r
+ If num = m_Menu(i).m_Number Then num = i : Exit For\r
+ End IF\r
+ Next\r
+ WScript.Echo "--------------------------------------------------------"\r
+\r
+ Select Case m_Menu(num).m_OpType\r
+ Case Op_SelectTest Me.SelectTest\r
+ Case Op_EachTest Me.DoTest m_Menu(num).m_OpParam, False\r
+ Case Op_EachTestR Me.DoTest m_Menu(num).m_OpParam, True\r
+ Case Op_EachDebug Me.DoTest m_Menu(num).m_OpParam, True\r
+ Case Op_AllTest m_Tests.DoAllTest\r
+ Case Op_Debug Me.ChgDebugMode\r
+ Case Op_OpenFail Me.OpenFail\r
+ Case Op_NextFail Me.NextFail\r
+ Case Op_Exit Exit Do\r
+ End Select\r
+ WScript.Echo "--------------------------------------------------------"\r
+ Loop\r
+End Sub\r
+\r
+\r
+ \r
+'********************************************************************************\r
+' <<< [TestPrompt::DoTest] >>> \r
+'********************************************************************************\r
+Public Sub DoTest( param, bReverse )\r
+ If g_debug Then\r
+ m_Tests.DebugTest param, bReverse\r
+ Else\r
+ m_Tests.DoTest param, bReverse\r
+ End If\r
+End Sub\r
+\r
+ \r
+'********************************************************************************\r
+' <<< [TestPrompt::SelectTest] >>> \r
+'********************************************************************************\r
+Public Sub SelectTest\r
+ Dim key, keys, sym, i, i_sym\r
+\r
+ Do\r
+ '//=== Display test symbol list\r
+ WScript.Echo "Test symbol list:"\r
+ keys = m_Tests.Sets.Keys()\r
+ WScript.Echo " 0) ALL (pre-defined)"\r
+ i_sym = 1\r
+ For Each key in keys\r
+ WScript.Echo " " & i_sym & ") " & key\r
+ i_sym = i_sym + 1\r
+ Next\r
+\r
+ '//=== Input test symbol or number\r
+ sym = g_CUI.input( "Input test number or symbol or ""ALL"">" )\r
+ If sym = "" Then sym = m_Tests.CurrentSymbol\r
+\r
+ '//=== If sym is number, set sym to test symbol\r
+ i_sym = CInt2( sym )\r
+ If i_sym > 0 Then\r
+ i = 1\r
+ For Each key in keys\r
+ If i_sym = i Then sym = key : Exit For\r
+ i = i + 1\r
+ Next\r
+ End If\r
+ If sym = "0" Then sym = "ALL"\r
+\r
+ '//=== Set test symbol and display test properties\r
+ If m_Tests.SetCurrentSymbol( sym ) = 0 Then\r
+ If sym <> "ALL" and sym <> "ALL_R" Then\r
+ echo m_Tests.Sets.Item( sym )\r
+ End If\r
+ Exit Do\r
+ End If\r
+ Loop\r
+End Sub\r
+\r
+\r
+ \r
+'********************************************************************************\r
+' <<< [TestPrompt::ChgDebugMode] >>> \r
+'********************************************************************************\r
+Public Sub ChgDebugMode()\r
+ Dim sym\r
+\r
+ Do\r
+ '//=== Display test symbol list\r
+ WScript.Echo "1) Reload Test Script"\r
+ WScript.Echo "2) ChgDebugMode Test Script"\r
+ WScript.Echo "3) ChgDebugMode Test Target"\r
+' If m_Tests.bEchoOn Then\r
+' WScript.Echo "4) Echo On/Off (current=on)"\r
+' Else\r
+' WScript.Echo "4) Echo On/Off (current=off)"\r
+' End If\r
+ If m_Tests.m_bAutoDiff Then\r
+ WScript.Echo "5) AutoDiff (current=on)"\r
+ Else\r
+ WScript.Echo "5) AutoDiff (current=off)"\r
+ End If\r
+\r
+\r
+ '//=== Input test symbol or number\r
+ sym = g_CUI.input( "Input test number>" )\r
+ sym = CInt2( sym )\r
+ If sym = 0 Then Exit Do\r
+ If sym = 1 Then ChgTestScriptDebugMode g_debug : Exit Do\r
+ If sym = 2 Then ChgTestScriptDebugMode Not g_debug : Exit Do\r
+ If sym = 3 Then m_Tests.bTargetDebug = Not m_Tests.bTargetDebug : Exit Do\r
+' If sym = 4 Then m_Tests.bEchoOn = not m_Tests.bEchoOn : Exit Do\r
+ If sym = 5 Then m_Tests.m_bAutoDiff = not m_Tests.m_bAutoDiff : Exit Do\r
+ Loop\r
+End Sub\r
+\r
+\r
+Public Sub ChgTestScriptDebugMode( debug )\r
+ Dim param\r
+ Dim target_debug_opt\r
+\r
+ If m_Tests.CurrentSymbol = "ALL" Then param = "ALL" _\r
+ Else param = m_Tests.CurrentTest.ScriptPath\r
+\r
+ If m_Tests.bTargetDebug Then target_debug_opt = " /target_debug:1" _\r
+ Else target_debug_opt = ""\r
+\r
+ If debug Then\r
+ g_sh.Run "cscript //x //nologo """+WScript.ScriptFullName+""" """+param+""" /g_debug:1"+target_debug_opt\r
+ Else\r
+ g_sh.Run "cscript //nologo """+WScript.ScriptFullName+""" """+param+""""+target_debug_opt\r
+ End If\r
+ WScript.Quit 10\r
+End Sub\r
+\r
+ \r
+'********************************************************************************\r
+' <<< [TestPrompt::OpenFail] >>> \r
+'********************************************************************************\r
+Public Sub OpenFail()\r
+ Dim en,ed\r
+\r
+ On Error Resume Next\r
+ m_Tests.OpenFailFolder\r
+ en = Err.Number : ed = Err.Description : On Error GoTo 0\r
+ If en <> 0 Then echo GetErrStr( en, ed )\r
+End Sub\r
+\r
+ \r
+'********************************************************************************\r
+' <<< [TestPrompt::NextFail] >>> \r
+'********************************************************************************\r
+Public Sub NextFail()\r
+ Dim en,ed\r
+\r
+ On Error Resume Next\r
+ m_Tests.NextFail\r
+ en = Err.Number : ed = Err.Description : On Error GoTo 0\r
+ If en <> 0 Then echo GetErrStr( en, ed )\r
+End Sub\r
+\r
+ \r
+End Class \r
+ \r
+'*-------------------------------------------------------------------------*\r
+'* \81\9f<<<< [MenuItem] Class >>>> */ \r
+'*-------------------------------------------------------------------------*\r
+\r
+Class MenuItem\r
+\r
+ Public m_Caption\r
+ Public m_Number\r
+ Public m_OpType ' as integer Op_SelectTest, Op_EachTest, Op_Do1\r
+ Public m_OpParam\r
+\r
+ Private Sub Class_Initialize\r
+ m_Caption = Empty : m_OpType = Op__NoOperation\r
+ End Sub\r
+\r
+End Class\r
+\r
+\r
+\r
+ \r