"""Module for a base asteex test case."""

from abc import ABC, abstractmethod


class Case(ABC):
    """Class for a asteex test case."""

    @abstractmethod
    def get_id(self):
        """Get the unique identifier of the test case.

        :returns: string id.
        """

    @abstractmethod
    def get_dependencies(self):
        """Get names of the variables that must be present in the execution context.

        :returns: iterable with string names.
        """

    def __repr__(self):
        class_name = self.__class__.__name__
        case_id = self.get_id()

        return f"{class_name}(case_id='{case_id}')"
