' Gambas class file ''' TestCommand stores the name of a testmodule and testmethods to be executed. Export Create Static '' Name of the testmodule to be called Public ModuleName As String '' Name of testmethods in a testmodule to be called. If empty, all will be called. Public Methods As New String[] '' Finds the Command for the TestModule with name TestModuleName Static Public Function _Find(Commands As TestCommand[], TestModuleName As String) As TestCommand Dim Command As TestCommand For Each Command In Commands If Lower(Command.ModuleName) = Lower(TestModuleName) Then Return Command Endif Next End '' Creates a string from an array of TestCommands Static Public Function ToString(Commands As TestCommand[]) As String Dim Command As TestCommand Dim asBuf As New String[] Commands.Sort() For Each Command In Commands If Command.Methods.Count = 0 Then asBuf.Add(Command.ModuleName) Else Command.Methods.Sort() asBuf.Add(Command.ModuleName & "." & Command.Methods.Join(";")) Endif Next Return asBuf.Join(",") End '' Parses a string with comma separated tests and creates an array of TestCommands. Static Public Function FromString(Tests As String) As TestCommand[] Dim asAll, asMethod As String[] Dim sCommand, sModulename, sMethod As String Dim Command As TestCommand Dim Commands As New TestCommand[] Dim i As Integer If Tests <> Null Then 'Commands = New TestCommand[] asAll = Split(Tests, ",", Null, True) For i = 0 To asAll.Count - 1 asAll[i] = Trim(asAll[i]) Next asAll.Sort For Each sCommand In asAll 'just to be sure sModulename = Null sMethod = Null i = 0 Command = New TestCommand With Command If InStr(sCommand, ".") > 0 Then sModulename = Trim(Left(sCommand, InStr(sCommand, ".") - 1)) sMethod = Trim(Right(sCommand, Len(sCommand) - InStr(sCommand, "."))) If InStr(sMethod, ";") > 0 Then asMethod = Split(sMethod, ";") .Methods = asMethod Else .Methods.Add(sMethod) Endif .ModuleName = sModulename Else .ModuleName = Trim(sCommand) Endif End With 'If InStr(Command, ".") > 0 Then If Not Commands.Exist(Command) Then Commands.Add(Command) Endif For Each Commands If Commands[i].ModuleName = sModulename And If Commands[i].Methods.Count > 0 Then If Not Commands[i].Methods.Exist(sMethod) And If InStr(sMethod, ";") = 0 Then Commands[i].Methods.Add(sMethod) Endif Endif Inc i Next Next For Each Command In Commands Command.Methods = Command.Methods.Sort() Next Commands = Commands.Sort() Endif Return Commands End Public Function _compare(TC As TestCommand) As Integer Dim ret As Integer ret = Comp(ModuleName, TC.ModuleName, gb.Binary) Return ret End