private def idxAdjustmentForRecordedEvents()

in scala/support/JUnitXmlReporter.scala [280:346]


  private def idxAdjustmentForRecordedEvents(recordedEvents: collection.immutable.IndexedSeq[RecordableEvent]) =
    recordedEvents.filter(e => e.isInstanceOf[InfoProvided] || e.isInstanceOf[MarkupProvided]).size

  //
  // Constructs a Testcase object from events in orderedEvents array.
  //
  // Accepts a TestStarting event and its index within orderedEvents.
  // Returns a Testcase object plus the index to its corresponding
  // test completion event.  Removes events from class's events Set
  // as they are processed.
  //
  private def processTest(orderedEvents: Array[Event],
                          startEvent: TestStarting, startIndex: Int):
  (Int, Testcase) = {
    val testcase = Testcase(startEvent.testName, startEvent.suiteClassName,
                            startEvent.timeStamp)
    var endIndex = 0
    var idx = startIndex + 1

    while ((idx < orderedEvents.size) && (endIndex == 0)) {
      val event = orderedEvents(idx)
      events -= event

      event match {
        case e: TestSucceeded =>
          endIndex = idx
          testcase.time = e.timeStamp - testcase.timeStamp
          idx += idxAdjustmentForRecordedEvents(e.recordedEvents)

        case e: TestFailed =>
          endIndex = idx
          testcase.failure = Some(e)
          testcase.time = e.timeStamp - testcase.timeStamp
          idx += idxAdjustmentForRecordedEvents(e.recordedEvents)

        case e: TestPending =>
          endIndex = idx
          testcase.pending = true
          idx += idxAdjustmentForRecordedEvents(e.recordedEvents)

        case e: TestCanceled =>
          endIndex = idx
          testcase.canceled = true
          idx += idxAdjustmentForRecordedEvents(e.recordedEvents)

        case _: ScopeOpened    => idx += 1
        case _: ScopeClosed    => idx += 1
        case _: ScopePending   => idx += 1
        case _: InfoProvided   => idx += 1
        case _: MarkupProvided => idx += 1
        case _: AlertProvided  => idx += 1
        case _: NoteProvided   => idx += 1
        case e: SuiteCompleted => unexpected(e)
        case e: TestStarting   => unexpected(e)
        case e: TestIgnored    => unexpected(e)
        case e: SuiteStarting  => unexpected(e)
        case e: RunStarting    => unexpected(e)
        case e: RunCompleted   => unexpected(e)
        case e: RunStopped     => unexpected(e)
        case e: RunAborted     => unexpected(e)
        case e: SuiteAborted   => unexpected(e)
        case e: DiscoveryStarting  => unexpected(e)
        case e: DiscoveryCompleted => unexpected(e)
      }
    }
    (endIndex, testcase)
  }