scenarioExampleCases function

Iterable<ScenarioExampleCase> scenarioExampleCases(
  1. GherkinScenario scenario
)

Enumerates every executable case for scenario in source order.

Implementation

Iterable<ScenarioExampleCase> scenarioExampleCases(
  GherkinScenario scenario,
) sync* {
  if (scenario.examples.isEmpty) {
    yield const ScenarioExampleCase(
      examplesIndex: 0,
      rowIndex: 0,
      displayLabel: '',
      values: <String, String>{},
    );
    return;
  }

  for (
    var examplesIndex = 0;
    examplesIndex < scenario.examples.length;
    examplesIndex++
  ) {
    final examples = scenario.examples[examplesIndex];
    for (var rowIndex = 0; rowIndex < examples.rows.length; rowIndex++) {
      yield ScenarioExampleCase(
        examplesIndex: examplesIndex,
        rowIndex: rowIndex,
        displayLabel: _exampleDisplayLabel(examples, examplesIndex, rowIndex),
        values: Map.unmodifiable(
          Map<String, String>.fromIterables(
            examples.headers,
            examples.rows[rowIndex],
          ),
        ),
      );
    }
  }
}