# Copyright 2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2


from portage.dep.soname.SonameAtom import SonameAtom
from portage.tests import TestCase
from portage.util.futures import asyncio
from portage.util.futures.executor.fork import ForkExecutor


class TestSonameAtomPickle(TestCase):
    _ALL_PROVIDES = frozenset([SonameAtom("x86_64", "libc.so.6")])

    def test_soname_atom_pickle(self):
        loop = asyncio._wrap_loop()
        with ForkExecutor(loop=loop) as executor:
            result = loop.run_until_complete(
                loop.run_in_executor(executor, self._get_all_provides)
            )
        self.assertEqual(self._ALL_PROVIDES, result)

    @classmethod
    def _get_all_provides(cls):
        return cls._ALL_PROVIDES
