code: def test_download_and_prepare_sharded(self):
      import apache_beam as beam
  
      original_write_parquet = beam.io.parquetio.WriteToParquet
  
      expected_num_examples = len(get_test_dummy_examples())
      with tempfile.TemporaryDirectory() as tmp_cache_dir:
          builder = DummyBeamDataset(
              cache_dir=tmp_cache_dir, beam_runner="DirectRunner"
          )
          with patch(
              "apache_beam.io.parquetio.WriteToParquet"
          ) as write_parquet_mock:
              write_parquet_mock.side_effect = partial(
                  original_write_parquet, num_shards=2
              )
              builder.download_and_prepare()
          self.assertTrue(
              os.path.exists(
                  os.path.join(
                      tmp_cache_dir,
                      builder.name,
                      "default",
                      "0.0.0",
                      f"{builder.name}-train-00000-of-00002.arrow",
                  )
              )
          )
          self.assertTrue(
              os.path.exists(
                  os.path.join(
                      tmp_cache_dir,
                      builder.name,
                      "default",
                      "0.0.0",
                      f"{builder.name}-train-00000-of-00002.arrow",
                  )
              )
          )
          self.assertDictEqual(
              builder.info.features,
              datasets.Features({"content": datasets.Value("string")}),
          )
          dset = builder.as_dataset()
          self.assertEqual(
              dset["train"].num_rows, expected_num_examples
          )
          self.assertEqual(
              dset["train"].info.splits["train"].num_examples,
              expected_num_examples,
          )
          # Order is not preserved when sharding, so we just check that all the elements are there
          self.assertListEqual(
              sorted(dset["train"]["content"]),
              sorted(["foo", "bar", "foobar"]),
          )
          self.assertTrue(
              os.path.exists(
                  os.path.join(
                      tmp_cache_dir,
                      builder.name,
                      "default",
                      "0.0.0",
                      "dataset_info.json",
                  )
              )
          )
          del dset
  
imports: import os
  import tempfile
  from functools import partial
  from unittest import TestCase
  from unittest.mock import patch
  import datasets
  import datasets.config
  from .utils import require_beam
label_desc: Use image node_id 2 for calling the BeamBuilderTest obj's underlying member method code with example usage: obj.test_download_and_prepare_sharded() without return types