#!/usr/bin/env python3

from sys import exit
from errno import ENXIO

from helper import test_enums

import gi
gi.require_version('Hitaki', '0.0')
from gi.repository import Hitaki

alsa_firewire_type_enumerations = (
    'DICE',
    'FIREWORKS',
    'BEBOB',
    'OXFW',
    'DIGI00X',
    'TASCAM',
    'MOTU',
    'FIREFACE',
)

alsa_firewire_error_enumerations = (
    'FAILED',
    'IS_OPENED',
    'IS_NOT_OPENED',
    'IS_USED',
    'IS_LOCKED',
    'IS_UNLOCKED',
    'IS_DISCONNECTED',
    'WRONG_CLASS',
)

efw_protocol_error_enumerations = (
    'OK',
    'BAD',
    'BAD_COMMAND',
    'COMM_ERR',
    'BAD_QUAD_COUNT',
    'UNSUPPORTED',
    'TIMEOUT',
    'DSP_TIMEOUT',
    'BAD_RATE',
    'BAD_CLOCK',
    'BAD_CHANNEL',
    'BAD_PAN',
    'FLASH_BUSY',
    'BAD_MIRROR',
    'BAD_LED',
    'BAD_PARAMETER',
    'INCOMPLETE',
    'INVALID',
)

types = {
    Hitaki.AlsaFirewireType: alsa_firewire_type_enumerations,
    Hitaki.AlsaFirewireError: alsa_firewire_error_enumerations,
    Hitaki.EfwProtocolError: efw_protocol_error_enumerations,
}

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