#!/usr/bin/env python3

from sys import exit
from errno import ENXIO

from helper import test_enums

import gi
gi.require_version('Hinoko', '1.0')
from gi.repository import Hinoko

fw_iso_ctx_mode_enumerators = (
    'IT',
    'IR_SINGLE',
    'IR_MULTIPLE',
)

fw_scode_enumerators = (
    'S100',
    'S200',
    'S400',
    'S800',
    'S1600',
    'S3200',
)

fw_iso_ctx_match_flags = (
    'TAG0',
    'TAG1',
    'TAG2',
    'TAG3',
)

fw_iso_resource_error_enumerations = (
    'FAILED',
    'OPENED',
    'NOT_OPENED',
    'TIMEOUT',
    'EVENT',
)

fw_iso_resource_auto_error_enumerations = (
    'FAILED',
    'ALLOCATED',
    'NOT_ALLOCATED',
)

fw_iso_ctx_error_enumerations = (
    'FAILED',
    'ALLOCATED',
    'NOT_ALLOCATED',
    'MAPPED',
    'NOT_MAPPED',
    'CHUNK_UNREGISTERED',
    'NO_ISOC_CHANNEL',
)

types = {
    Hinoko.FwIsoCtxMode: fw_iso_ctx_mode_enumerators,
    Hinoko.FwScode: fw_scode_enumerators,
    Hinoko.FwIsoCtxMatchFlag: fw_iso_ctx_match_flags,
    Hinoko.FwIsoResourceError: fw_iso_resource_error_enumerations,
    Hinoko.FwIsoResourceAutoError: fw_iso_resource_auto_error_enumerations,
    Hinoko.FwIsoCtxError: fw_iso_ctx_error_enumerations,
}

for target_type, enumerations in types.items():
    if not test_enums(target_type, enumerations):
        exit(ENXIO)
