import os

from chrysacase import ChrysalideTestCase
from pychrysalide.common import get_xdg_cache_dir, get_xdg_config_dir, get_xdg_data_dir, \
    get_xdg_state_dir, get_xdg_runtime_dir


class TestXDG(ChrysalideTestCase):
    """TestCase for XDG directories."""

    def testXDGCachePath(self):
        """Retrieve the XDG cache directory."""

        filename = get_xdg_cache_dir('test.txt', False)

        self.assertIsNotNone(filename)
        self.assertTrue(filename.startswith(os.sep))
        self.assertTrue(filename.endswith('test.txt'))

        # Depends on current configuration
        self.assertTrue('.cache' in filename)


    def testXDGConfigPath(self):
        """Retrieve the XDG config directory."""

        filename = get_xdg_config_dir('test.txt', False)

        self.assertIsNotNone(filename)
        self.assertTrue(filename.startswith(os.sep))
        self.assertTrue(filename.endswith('test.txt'))

        # Depends on current configuration
        self.assertTrue('.config' in filename)


    def testXDGDataPath(self):
        """Retrieve the XDG data directory."""

        filename = get_xdg_data_dir('test.txt', False)

        self.assertIsNotNone(filename)
        self.assertTrue(filename.startswith(os.sep))
        self.assertTrue(filename.endswith('test.txt'))

        # Depends on current configuration
        self.assertTrue(os.path.join('.local', 'share') in filename)


    def testXDGStatePath(self):
        """Retrieve the XDG state directory."""

        filename = get_xdg_state_dir('test.txt', False)

        self.assertIsNotNone(filename)
        self.assertTrue(filename.startswith(os.sep))
        self.assertTrue(filename.endswith('test.txt'))

        # Depends on current configuration
        self.assertTrue(os.path.join('.local', 'state') in filename)


    def testXDGRuntimePath(self):
        """Retrieve the XDG runtime directory."""

        filename = get_xdg_runtime_dir('test.txt')

        self.assertIsNotNone(filename)
        self.assertTrue(filename.startswith(os.sep))
        self.assertTrue(filename.endswith('test.txt'))