class_docstr: Test the iteration functionality provided by io.SamReader.
code: def test_sam_query(self):
      reader = sam.SamReader(
          test_utils.genomics_core_testdata("test.bam")
      )
      expected = [
          (ranges.parse_literal("chr20:10,000,000-10,000,100"), 106),
          (ranges.parse_literal("chr20:10,000,000-10,000,000"), 45),
      ]
      with reader:
          for interval, n_expected in expected:
              with reader.query(interval) as iterable:
                  self.assertEqual(
                      test_utils.iterable_len(iterable), n_expected
                  )
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import itertools
  from absl.testing import absltest
  from absl.testing import parameterized
  import six
  from etils import epath
  from third_party.nucleus.io import sam
  from third_party.nucleus.io import tfrecord
  from third_party.nucleus.protos import reads_pb2
  from third_party.nucleus.protos import reference_pb2
  from third_party.nucleus.testing import test_utils
  from third_party.nucleus.util import ranges
label_desc: Use image node_id 4 for calling the SamReaderTests obj's underlying member method code with example usage: obj.test_sam_query() without return types