code: def testConsecutiveSpans_SmallValidSpanRange(self):
      artifacts = (
          self._get_artifacts_for_sequential_rolling_range_tests()
      )
      _, _, a31, a30, _, _, _, _ = artifacts
  
      actual = self._consecutive_spans(
          artifacts,
          first_span=3,
          skip_last_n=5,
          keep_all_versions=True,
      )
      self.assertEqual(actual, [a30, a31])
  
      # The arguments lead to the invalid spans range [3, 0], so no artifacts are
      # returned.
      actual = self._consecutive_spans(
          artifacts,
          first_span=3,
          skip_last_n=8,
          keep_all_versions=True,
      )
      self.assertEqual(actual, [])
  
imports: from typing import Sequence
  import tensorflow
  from tfx import types
  from tfx.dsl.input_resolution.ops import ops
  from tfx.dsl.input_resolution.ops import test_utils
  from tfx.types import artifact
label_desc: Use image node_id 11 for calling the ConsecutiveSpansOpTest obj's underlying member method code with example usage: obj.testConsecutiveSpans_SmallValidSpanRange() without return types