aboutsummaryrefslogtreecommitdiff
path: root/tests/challenges/challenge_decorator/challenge_utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/challenges/challenge_decorator/challenge_utils.py')
-rw-r--r--tests/challenges/challenge_decorator/challenge_utils.py85
1 files changed, 0 insertions, 85 deletions
diff --git a/tests/challenges/challenge_decorator/challenge_utils.py b/tests/challenges/challenge_decorator/challenge_utils.py
deleted file mode 100644
index 74f4cf565..000000000
--- a/tests/challenges/challenge_decorator/challenge_utils.py
+++ /dev/null
@@ -1,85 +0,0 @@
-import os
-from typing import Any, Callable, Dict, Optional, Tuple
-
-from tests.challenges.challenge_decorator.challenge import Challenge
-
-CHALLENGE_PREFIX = "test_"
-
-
-def create_challenge(
- func: Callable[..., Any],
- current_score: Dict[str, Any],
- is_beat_challenges: bool,
- level_to_run: Optional[int] = None,
-) -> Challenge:
- challenge_category, challenge_name = get_challenge_identifiers(func)
- is_new_challenge = challenge_name not in current_score.get(challenge_category, {})
- max_level = get_max_level(current_score, challenge_category, challenge_name)
- max_level_beaten = get_max_level_beaten(
- current_score, challenge_category, challenge_name
- )
- level_to_run = get_level_to_run(
- is_beat_challenges, level_to_run, max_level, max_level_beaten, is_new_challenge
- )
-
- return Challenge(
- name=challenge_name,
- category=challenge_category,
- max_level=max_level,
- max_level_beaten=max_level_beaten,
- level_to_run=level_to_run,
- is_new_challenge=is_new_challenge,
- )
-
-
-def get_level_to_run(
- is_beat_challenges: bool,
- level_to_run: Optional[int],
- max_level: int,
- max_level_beaten: Optional[int],
- is_new_challenge: bool,
-) -> Optional[int]:
- if is_new_challenge:
- return 1
- if level_to_run is not None:
- if level_to_run > max_level:
- raise ValueError(
- f"Level to run ({level_to_run}) is greater than max level ({max_level})"
- )
- return level_to_run
- if is_beat_challenges:
- if max_level_beaten == max_level:
- return None
- return 1 if max_level_beaten is None else max_level_beaten + 1
- return max_level_beaten
-
-
-def get_challenge_identifiers(func: Callable[..., Any]) -> Tuple[str, str]:
- full_path = os.path.dirname(os.path.abspath(func.__code__.co_filename))
- challenge_category = os.path.basename(full_path)
- challenge_name = func.__name__.replace(CHALLENGE_PREFIX, "")
- return challenge_category, challenge_name
-
-
-def get_max_level(
- current_score: Dict[str, Any],
- challenge_category: str,
- challenge_name: str,
-) -> int:
- return (
- current_score.get(challenge_category, {})
- .get(challenge_name, {})
- .get("max_level", 1)
- )
-
-
-def get_max_level_beaten(
- current_score: Dict[str, Any],
- challenge_category: str,
- challenge_name: str,
-) -> Optional[int]:
- return (
- current_score.get(challenge_category, {})
- .get(challenge_name, {})
- .get("max_level_beaten", None)
- )