#!/usr/bin/env python3
"""The track count of a music card in Czech: 1 skladba, 2-4 skladby, 0 / 5+ skladeb (wcs/vinyl/presentation.tracks).

Run: python3 scripts/skin_harness/test_vinyl_tracks.py
"""
import os
import sys
import types
import unittest
from unittest.mock import Mock, patch

ROOT = os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', '..'))
sys.path.insert(0, ROOT)
STRINGS = {32530: '{} skladeb', 32780: '{} skladba', 32781: '{} skladby'}


class TracksTests(unittest.TestCase):
    def test_czech_plural(self):
        modules = {name: types.ModuleType(name) for name in ('xbmc', 'xbmcaddon', 'xbmcgui', 'xbmcplugin', 'xbmcvfs')}
        modules['xbmc'].log = Mock()
        modules['xbmcvfs'].translatePath = lambda path: path
        modules['xbmcaddon'].Addon = Mock()
        with patch.dict(sys.modules, modules):
            for name in [n for n in sys.modules if n.startswith('wcs')]:
                sys.modules.pop(name)
            from wcs.vinyl import presentation
            addon = Mock()
            addon.getLocalizedString.side_effect = STRINGS.get
            with patch.object(presentation.client, 'addon', return_value=addon):
                self.assertEqual([presentation.tracks(n) for n in (0, 1, 2, 4, 5, 22, None)],
                                 ['0 skladeb', '1 skladba', '2 skladby', '4 skladby', '5 skladeb', '22 skladeb',
                                  '0 skladeb'])


if __name__ == '__main__':
    unittest.main(verbosity=1)
