import unittest

from mock import patch

from tests.utils import (
    setup_test_env,
)
setup_test_env()
from softwarecenter.hw import (
    get_hardware_support_for_tags,
    get_hw_missing_long_description,
    OPENGL_DRIVER_BLACKLIST_TAG)
from softwarecenter.utils import utf8


class TestHW(unittest.TestCase):
    """ tests the hardware support detection """

    def test_get_hardware_support_for_tags(self):
        tags = [OPENGL_DRIVER_BLACKLIST_TAG + "intel",
                "hardware::input:mouse",
               ]
        with patch("debtagshw.opengl.get_driver") as mock_get_driver:
            # test with the intel driver
            mock_get_driver.return_value = "intel"
            supported = get_hardware_support_for_tags(tags)
            self.assertEqual(supported[tags[0]], "no")
            self.assertEqual(len(supported), 2)
            # now with fake amd driver
            mock_get_driver.return_value = "amd"
            supported = get_hardware_support_for_tags(tags)
            self.assertEqual(supported[tags[0]], "yes")

    def test_get_hw_missing_long_description(self):
        s = get_hw_missing_long_description(
            { "hardware::input:keyboard": "yes",
              OPENGL_DRIVER_BLACKLIST_TAG + "intel": "no",
            })
        self.assertEqual(s,
                         utf8(u'This software does not work with the '
                              u'\u201cintel\u201D graphics driver this '
                              u'computer is using.'))


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