code: def test_report() -> None:
      study = optuna.multi_objective.create_study(
          ["maximize", "minimize", "maximize"]
      )
  
      def objective(
          trial: optuna.multi_objective.trial.MultiObjectiveTrial,
      ) -> Tuple[float, float, float]:
          if trial.number == 0:
              trial.report((1, 2, 3), 1)
              trial.report((10, 20, 30), 2)
          return 100, 200, 300
  
      study.optimize(objective, n_trials=2)
  
      trial = study.trials[0]
      assert trial.intermediate_values == {
          1: (1, 2, 3),
          2: (10, 20, 30),
      }
      assert trial.values == (100, 200, 300)
      assert trial.last_step == 2
  
      trial = study.trials[1]
      assert trial.intermediate_values == {}
      assert trial.values == (100, 200, 300)
      assert trial.last_step is None
  
file_path: optuna/tests/multi_objective_tests/test_trial.py
imports: from __future__ import annotations
  import datetime
  from typing import List
  from typing import Tuple
  import pytest
  import optuna
  from optuna.multi_objective.trial import FrozenMultiObjectiveTrial
  from optuna.study._study_direction import StudyDirection
  from optuna.trial import TrialState
label_desc: Use image node_id 2 for calling a global function with example usage: test_report() and returns: int,  int,  int