def METHOD_NAME(
        self, progress_type, half_cycle_size, switch_mode):
    trainer_progress = Trainer._trainer_progress
    # set the trainer_progress mode
    if progress_type in {"iterations", "percent"}:
        num_iterations = 10
        num_env_steps = 0
    elif progress_type == "env_steps":
        num_iterations = 0
        num_env_steps = 10
    trainer_progress.set_termination_criterion(
        num_iterations=num_iterations, num_env_steps=num_env_steps)
    scheduler = CyclicalScheduler(
        progress_type=progress_type,
        base_lr=1,
        bound_lr=0,
        half_cycle_size=half_cycle_size,
        switch_mode=switch_mode)
    effective_half_cycle_size = (
        half_cycle_size if half_cycle_size >= 1 else
        half_cycle_size * max(num_iterations, num_env_steps))
    if switch_mode == "step":
        if effective_half_cycle_size == 1:
            expected_values = [1, 0, 1, 0, 1, 0, 1, 0, 1, 0]
        elif effective_half_cycle_size == 2:
            expected_values = [1, 1, 0, 0, 1, 1, 0, 0, 1, 1]
        elif effective_half_cycle_size == 3:
            expected_values = [1, 1, 1, 0, 0, 0, 1, 1, 1, 0]
    elif switch_mode == "linear":
        if effective_half_cycle_size == 1:
            expected_values = [1, 0, 1, 0, 1, 0, 1, 0, 1, 0]
        elif effective_half_cycle_size == 2:
            expected_values = [
                1.0, 0.5, 0, 0.5, 1.0, 0.5, 0, 0.5, 1.0, 0.5
            ]
        elif effective_half_cycle_size == 3:
            expected_values = [
                1.0, 0.6666666666666667, 0.33333333333333337, 0,
                0.3333333333333333, 0.6666666666666666, 1.0,
                0.6666666666666667, 0.33333333333333337, 0
            ]
    values = []
    for i in range(max(num_iterations, num_env_steps)):
        if progress_type in {"iterations", "percent"}:
            trainer_progress.update(iter_num=i)
        elif progress_type == "env_steps":
            trainer_progress.update(env_steps=i)
        value = scheduler()
        values.append(value)
    self.assertTrue(np.allclose(expected_values, values, atol=5e-2))