code: def test_contigs_n_bases(self):
      c1 = reference_pb2.ContigInfo(
          name="c", n_bases=100, pos_in_fasta=0
      )
      c2 = reference_pb2.ContigInfo(
          name="a", n_bases=50, pos_in_fasta=1
      )
      c3 = reference_pb2.ContigInfo(
          name="b", n_bases=25, pos_in_fasta=2
      )
      self.assertEqual(100, ranges.contigs_n_bases([c1]))
      self.assertEqual(50, ranges.contigs_n_bases([c2]))
      self.assertEqual(25, ranges.contigs_n_bases([c3]))
      self.assertEqual(150, ranges.contigs_n_bases([c1, c2]))
      self.assertEqual(125, ranges.contigs_n_bases([c1, c3]))
      self.assertEqual(175, ranges.contigs_n_bases([c1, c2, c3]))
  
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 mock
  from third_party.nucleus.protos import position_pb2
  from third_party.nucleus.protos import reference_pb2
  from third_party.nucleus.protos import variants_pb2
  from third_party.nucleus.testing import test_utils
  from third_party.nucleus.util import ranges
label_desc: Use image node_id 32 for calling the RangesTests obj's underlying member method code with example usage: obj.test_contigs_n_bases() without return types