import unittest

from slpkg.configs import Configs
from slpkg.utilities import Utilities
from slpkg.load_data import LoadData


class TestUtilities(unittest.TestCase):

    def setUp(self):
        self.utils = Utilities()
        self.repository: str = 'slack'
        load = LoadData()
        self.data: dict = load.load(self.repository)
        self.build_path = Configs.build_path
        self.package = 'aaa_base-15.0-x86_64-4_slack15.0'

    def test_ins_installed(self):
        self.assertEqual(self.package, self.utils.is_package_installed('aaa_base'))

    def test_split_name(self):
        self.assertEqual('aaa_base', self.utils.split_package(self.package)['name'])

    def test_split_version(self):
        self.assertEqual('15.0', self.utils.split_package(self.package)['version'])

    def test_split_arch(self):
        self.assertEqual('x86_64', self.utils.split_package(self.package)['arch'])

    def test_split_build(self):
        self.assertEqual('4', self.utils.split_package(self.package)['build'])

    def test_is_installed(self):
        self.assertEqual(self.package, self.utils.is_package_installed('aaa_base'))

    def test_all_installed(self):
        self.assertIn(self.package, self.utils.all_installed().values())

    def test_is_option(self):
        self.assertTrue(True, self.utils.is_option(('-P', '--parallel'),
                                                   ['-k', '-p', '-P', '--parallel', '--repository']))

    def test_get_file_size(self):
        self.assertEqual(1249, self.utils.count_file_size('aaa_base'))

    def test_apply_package_pattern(self):
        self.assertGreater(len(self.utils.apply_package_pattern(self.data, ['*'])), 1)


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