gambas-source-code/main/lib/test/gb.test/.src/TestMyself/TParser.test
Christof Thalhofer 09da14aa68 gb.test plan selftests and taskell
[GB.TEST]
*NEW: plan selftests
*NEW: forbid assertions in _Setup.. and _Teardown.. to ensure plan is always valid
2020-06-06 12:08:14 +02:00

123 lines
3.4 KiB
Text

' Gambas test file
Private $aSkipAllEvents As New String[]
'' Test parsing of SkipAll plans
Public Sub SkipAll()
Dim sTAP As String = ""
"1..2\n"
"Test Run\n"
" 1..1\n"
" ok 1\n"
"ok 1\n"
"Test Skip\n"
" 1..0 # skipped\n"
"ok 2\n"
Dim hTAP As Stream
Dim hParser As New TapParser As "SkipAllParser"
Test.Plan(4)
hTAP = Open String sTAP For Read
hParser.Parse(hTAP)
Test.Plan(3 + 1)
Assert.Equals($aSkipAllEvents.Count, 3, "Event count is correct")
Assert.Equals($aSkipAllEvents[0], "Plan 1..2")
Assert.Equals($aSkipAllEvents[1], "Plan 1..1")
Assert.Equals($aSkipAllEvents[2], "Skip")
Close #hTAP
End
Public Sub SkipAllParser_Plan((Start) As Integer, (End) As Integer, (SkipAll) As Boolean)
$aSkipAllEvents.Add(IIf(SkipAll, "Skip", Subst$("Plan &1..&2", Start, {End})))
End
Private $aSubtestEvents As New String[]
'' Test the order of events from the parser.
Public Sub Subtests()
Dim sTAP As String = ""
"# This tests subtest parsing and order of events\n"
"This line is ignored.\n"
"Test Subtest\n"
" ok 1 - good\n"
" ok 2 - better\n"
" not ok 3 - acceptable # TODO this was expected\n"
" 1..3\n"
"ok 1 - Subtest\n"
"\n"
"Test Another\n"
" 1..1\n"
" not ok 1 - failed\n"
"not ok 2 - Another\n"
Dim hTAP As Stream
Dim hParser As New TapParser As "SubtestsParser"
hTAP = Open String sTAP For Read
hParser.Parse(hTAP)
Test.Plan(15 + 1)
Assert.Equals($aSubtestEvents.Count, 15, "Event count is correct")
Assert.Equals($aSubtestEvents[00], "Diag")
Assert.Equals($aSubtestEvents[01], "Else")
Assert.Equals($aSubtestEvents[02], "Begin")
Assert.Equals($aSubtestEvents[03], "Ok")
Assert.Equals($aSubtestEvents[04], "Ok")
Assert.Equals($aSubtestEvents[05], "NotOk")
Assert.Equals($aSubtestEvents[06], "Plan")
Assert.Equals($aSubtestEvents[07], "End")
Assert.Equals($aSubtestEvents[08], "Ok")
Assert.Equals($aSubtestEvents[09], "Else")
Assert.Equals($aSubtestEvents[10], "Begin")
Assert.Equals($aSubtestEvents[11], "Plan")
Assert.Equals($aSubtestEvents[12], "NotOk")
Assert.Equals($aSubtestEvents[13], "End")
Assert.Equals($aSubtestEvents[14], "NotOk")
Close #hTAP
End
Public Sub SubtestsParser_Plan((Start) As Integer, (End) As Integer, (SkipAll) As Boolean)
$aSubtestEvents.Push("Plan")
End
Public Sub SubtestsParser_Assert((Ok) As Boolean, (Id) As Long, (Description) As String, (Directive) As Integer, (Comment) As String)
$aSubtestEvents.Push(IIf(Ok, "Ok", "NotOk"))
End
Public Sub SubtestsParser_Diagnostic((Comment) As String)
$aSubtestEvents.Push("Diag")
End
Public Sub SubtestsParser_Else((Line) As String)
$aSubtestEvents.Push("Else")
End
Public Sub SubtestsParser_BeginSubtest((Description) As String)
$aSubtestEvents.Push("Begin")
End
Public Sub SubtestsParser_EndSubtest()
$aSubtestEvents.Push("End")
End
'' Examine the object hierarchy returned by TestRunner, by running the Subtests test externally.
Public Sub Runner()
Dim hStats As TestStats = TestRunner.Run(Application.Path, "TParser.Subtests")
Test.Plan(7)
Assert.NotNull(hStats, "Stats object is not null")
Assert.Equals(hStats.Planned, 1)
Assert.Equals(hStats.Passed, 1)
Dim hMethod As TestAssertion = hStats.Subtests[0]
Assert.Ok(hMethod.Success)
Assert.Equals(hMethod.Subtests.Count, 16)
Assert.Equals(hMethod.Subtests[0].Description, "- Event count is correct")
Assert.Equals(hMethod.Subtests[0].Subtests.Count, 0)
End