from UniTAP.dev.modules.dut_tests.dut_default_params.dp_1_4_source_general_tab import GeneralSourceDUTDp14SettingTab, \
    PackedTimings1Lane, PackedTimings2Lane, PackedTimings4Lane, EventIndication
from UniTAP.dev.modules.dut_tests.dut_default_params.dp_source_audio_tab import AudioSourceDp14SettingTab
from UniTAP.dev.modules.dut_tests.dut_default_params.dp_source_dsc_tab import DscConfigDp14Tab
from UniTAP.dev.modules.dut_tests.dut_default_params.dp_source_display_id_tab import DisplayIdDp14ConfigTab
from UniTAP.dev.modules.dut_tests.dut_default_params.dp_source_adaptive_sync_tab import AdaptiveSyncDp14ConfigTab


class Dp14SourceDUTTestParam:
    """
    Class `Dp14SourceDUTTestParam` allows working with default group of parameters for DP 1.4 LLCTS tests:
    - Set and get `GeneralSourceDUTDp14SettingTab`. Allows working with parameters from General source part `general`.
    - Set and get `AudioSourceDp14SettingTab`. Allows working with parameters from Audio source part `audio`.
    - Set and get `DscConfigDp14Tab`. Allows working with parameters from DSC part `dsc`.
    - Set and get `DisplayIdDp14ConfigTab`. Allows working with parameters from Display ID part `display_id`.
    - Set and get `AdaptiveSyncDp14ConfigTab`. Allows working with parameters from Adaptive-Sync part `adaptive_sync`.
    """
    def __init__(self, json_obj):
        self.__general_tab = GeneralSourceDUTDp14SettingTab(json_obj)
        self.__audio_tab = AudioSourceDp14SettingTab(json_obj)
        self.__dsc_tab = DscConfigDp14Tab(json_obj)
        self.__display_id_tab = DisplayIdDp14ConfigTab(json_obj)
        self.__adaptive_sync_tab = AdaptiveSyncDp14ConfigTab(json_obj)

    @property
    def general(self) -> GeneralSourceDUTDp14SettingTab:
        """
        Get object of parameters from General source part.

        Returns:
            object of `GeneralSourceDUTDp14SettingTab` type
        """
        return self.__general_tab

    @property
    def audio(self) -> AudioSourceDp14SettingTab:
        """
        Get object of parameters from Audio source part.

        Returns:
            object of `AudioSourceDp14SettingTab` type
        """
        return self.__audio_tab

    @property
    def dsc(self) -> DscConfigDp14Tab:
        """
        Get object of parameters from DSC source part.

        Returns:
            object of `DscConfigDp14Tab` type
        """
        return self.__dsc_tab

    @property
    def display_id(self) -> DisplayIdDp14ConfigTab:
        """
        Get object of parameters from Display ID source part.

        Returns:
            object of `DisplayIdDp14ConfigTab` type
        """
        return self.__display_id_tab

    @property
    def adaptive_sync(self) -> AdaptiveSyncDp14ConfigTab:
        """
        Get object of parameters from Adaptive-Sync source part.

        Returns:
            object of `AdaptiveSyncDp14ConfigTab` type
        """
        return self.__adaptive_sync_tab
