code: def test_hypervolume_pareto_function() -> None:
      hvol = core.HypervolumePareto(upper_bounds=(100, 100))
      tuples = [
          (110, 110),  # -0 + distance
          (110, 90),  # -0 + distance
          (80, 80),  # -400 + distance
          (50, 50),  # -2500 + distance
          (50, 50),  # -2500 + distance
          (80, 80),  # -2500 + distance --> -2470
          (
              30,
              60,
          ),  # [30,50]x[60,100] + [50,100]x[50,100] --> -2500 -800 = -3300
          (60, 30),
      ]  # [30,50]x[60,100] + [50,100]x[50,100] + [60,100]x[30,50] --> -2500 -800 -800= -4100
      values = []
      for tup in tuples:
          param = ng.p.Tuple(*(ng.p.Scalar(x) for x in tup))
          param._losses = np.array(tup)
          values.append(hvol.add(param))
      expected = [
          20,
          10,
          -400,
          -2500.0,
          -2500.0,
          -2470.0,
          -3300.0,
          -4100.0,
      ]
      assert values == expected, f"Expected {expected} but got {values}"
      front = [p.value for p in hvol.pareto_front()]
      expected_front = [(50, 50), (30, 60), (60, 30)]
      assert (
          front == expected_front
      ), f"Expected {expected_front} but got {front}"
  
file_path: nevergrad/nevergrad/optimization/multiobjective/test_core.py
imports: import warnings
  from unittest import SkipTest
  import numpy
  import pytest
  import nevergrad.common.typing
  import nevergrad
  from ..None import base
  from ..optimizerlib import registry
  from .None import core
label_desc: Use image node_id 1 for calling a global function with example usage: test_hypervolume_pareto_function() without return types