code: def test_per_partition_to_cross_partition_utility_only_partition_selection(
      self,
      mock_to_metric_utility,
      mock_create_for_private_partitions,
      mock_create_for_public_partitions,
  ):
      per_partition_utility = metrics.PerPartitionMetrics(
          partition_selection_probability_to_keep=0.5,
          raw_statistics=metrics.RawStatistics(
              privacy_id_count=3, count=100
          ),
          metric_errors=None,
      )
      output = (
          cross_partition_combiners._per_partition_to_utility_report(
              per_partition_utility,
              [],
              public_partitions=False,
              partition_weight=0.5,
          )
      )
  
      self.assertIsNone(output.metric_errors)
      self.assertIsInstance(output.partitions_info, mock.MagicMock)
      mock_to_metric_utility.assert_not_called()
      mock_create_for_public_partitions.assert_not_called()
      mock_create_for_private_partitions.assert_called_once_with(0.5)
  
imports: from absl.testing import absltest
  from absl.testing import parameterized
  import dataclasses
  import math
  from unittest import mock
  from unittest.mock import patch
  from analysis import metrics
  from analysis import cross_partition_combiners
  import pipeline_dp
label_desc: Use image node_id 5 for calling the PerPartitionToCrossPartitionMetrics obj's underlying member method code with example usage: obj.test_per_partition_to_cross_partition_utility_only_partition_selection(mock_to_metric_utility, mock_create_for_private_partitions, mock_create_for_public_partitions) without return types