code: def test_compute_budgets():
      """Verify proper computation of budgets on a logarithmic scale"""
      # Check typical values
      assert compute_budgets(1, 16, 4, 3, 1) == [
          [(16, 1), (4, 4), (1, 16)]
      ]
      # Check rounding (max_resources is not a multiple of reduction_factor)
      assert compute_budgets(1, 30, 4, 3, 1) == [
          [(16, 1), (4, 5), (1, 30)]
      ]
      # Check rounding (min_resources may be rounded below its actual value)
      assert compute_budgets(25, 1000, 2, 6, 1) == [
          [(32, 25), (16, 52), (8, 109), (4, 229), (2, 478), (1, 1000)]
      ]
      # Check min_resources
      assert compute_budgets(5, 125, 5, 3, 1) == [
          [(25, 5), (5, 25), (1, 125)]
      ]
      # Check num_rungs
      assert compute_budgets(1, 16, 2, 5, 1) == [
          [(16, 1), (8, 2), (4, 4), (2, 8), (1, 16)]
      ]
  
imports: from __future__ import annotations
  import hashlib
  import logging
  from typing import ClassVar
  import numpy
  import pytest
  from test_hyperband import compare_registered_trial, create_rung_from_points, create_trial_for_hb, force_observe
  from orion.algo.asha import ASHA, ASHABracket, compute_budgets
  from orion.algo.hyperband import RungDict
  from orion.algo.space import Fidelity, Integer, Real, Space
  from orion.core.worker.primary_algo import SpaceTransform
  from orion.testing.algo import BaseAlgoTests, TestPhase
  from orion.testing.trial import create_trial
label_desc: Use image node_id 10 for calling a global function with example usage: test_compute_budgets() without return types