def test_metadata(self):
     self.assertEqual(
         get_ground_set(),
         PowerSet(CartesianProduct(GenesisSetM(), GenesisSetN())))
     self.assertEqual(
         get_absolute_ground_set(),
         PowerSet(CartesianProduct(GenesisSetA(), GenesisSetN())))
     self.assertEqual(get_name(), 'Multisets(M): P(M x N)')
Esempio n. 2
0
 def test_GenSetN(self):
     """Basic properties of genesis set M."""
     self._basic_assert(setns, GenesisSetN)
     self._equality_helper(setns)
     # Equality relationships.
     self._inequality_assert(GenesisSetN(), GenesisSetA())
     # Subset relationships.
     self.assertFalse(GenesisSetN().is_subset(GenesisSetA()))
     self.assertFalse(GenesisSetN() <= GenesisSetA())
     # Test hashing.
     self.assertNotEqual(hash(GenesisSetN()), hash(GenesisSetA()))
Esempio n. 3
0
 def test_Union(self):
     """Basic properties and subset relationships of the union."""
     self._basic_assert(basic_unions, Union)
     self._equality_helper(basic_unions)
     # Equality relationships.
     self.assertEqual(basic_unions['M'], basic_unions['M-2'])
     self.assertEqual(basic_unions['M-4 U(AxM)'],
                      basic_unions['M-4 U(AxM)-2'])
     # Subset relationships.
     self._subset_assert(basic_unions['A'], basic_unions['M'])
     self._subset_assert(basic_unions['A'], basic_unions['M-2'])
     self._subset_assert(basic_unions['A'], basic_unions['AU(AxA)'])
     self._subset_assert(basic_unions['A'], basic_unions['M-3 U(AxA)'])
     self._subset_assert(basic_unions['A'], basic_unions['M-4 U(AxM)'])
     self._subset_assert(basic_unions['A'], basic_unions['M-4 U(AxM)-2'])
     self._subset_assert(basic_unions['M'], basic_unions['M-2'])
     self._subset_deny(basic_unions['M'], basic_unions['AU(AxA)'])
     self._subset_assert(basic_unions['M'], basic_unions['M-3 U(AxA)'])
     self._subset_assert(basic_unions['M'], basic_unions['M-4 U(AxM)'])
     self._subset_assert(basic_unions['M'], basic_unions['M-4 U(AxM)-2'])
     self._subset_deny(basic_unions['M-2'], basic_unions['AU(AxA)'])
     self._subset_assert(basic_unions['M-2'], basic_unions['M-3 U(AxA)'])
     self._subset_assert(basic_unions['M-2'], basic_unions['M-4 U(AxM)'])
     self._subset_assert(basic_unions['M-2'], basic_unions['M-4 U(AxM)-2'])
     self._subset_assert(basic_unions['AU(AxA)'],
                         basic_unions['M-3 U(AxA)'])
     self._subset_assert(basic_unions['AU(AxA)'],
                         basic_unions['M-4 U(AxM)'])
     self._subset_assert(basic_unions['AU(AxA)'],
                         basic_unions['M-4 U(AxM)-2'])
     self._subset_assert(basic_unions['M-3 U(AxA)'],
                         basic_unions['M-4 U(AxM)'])
     self._subset_assert(basic_unions['M-3 U(AxA)'],
                         basic_unions['M-4 U(AxM)-2'])
     self._subset_assert(basic_unions['M-4 U(AxM)'],
                         basic_unions['M-4 U(AxM)-2'])
     # Special case for structure Union's conditional return in is_subset() for GenesisSetM
     self.assertTrue(Union([GenesisSetM()]).is_subset(GenesisSetM()))
     # String representation
     self.assertEqual('M', Union([GenesisSetM()]).__str__())
     self.assertEqual('(M U N)',
                      Union([GenesisSetM(), GenesisSetN()]).__str__())
     self.assertEqual('Union([GenesisSetM()])',
                      Union([GenesisSetM()]).__repr__())
     self.assertEqual('Union([GenesisSetM(), GenesisSetN()])',
                      Union([GenesisSetM(), GenesisSetN()]).__repr__())
    def test_multiset_with_one_empty_element(self):
        m = Multiset(Set())
        self.assertEqual(m.cardinality, 1)

        m_repr = repr(m)
        m_str = str(m)

        self.assertEqual(m_repr, "Multiset({Set(): 1})")
        self.assertEqual(m_str, "[{}:1]")
        self.assertEqual(m.get_multiplicity(Set()), 1)
        self.assertEqual(m.get_multiplicity(Atom('b')), 0)
        m_struct = m.get_ground_set()
        m_expected_struct = PowerSet(
            CartesianProduct(Structure(), GenesisSetN()))
        self.assertEqual(m_struct, m_expected_struct)

        import algebraixlib.algebras.multiclans as _multiclans
        self.assertTrue(_multiclans.is_member(m))
        self.assertTrue(_multiclans.is_absolute_member(m))
Esempio n. 5
0
    }.items()
}
_print_object_collection('setas')

#: Two 'instances' of GenesisSetM. (They should be the same.)
setms = {
    key: create_test_object(GenesisSetM(), key, val)
    for key, val in {
        'M': None,
        'M-2': None
    }.items()
}
_print_object_collection('setms')

setns = {
    key: create_test_object(GenesisSetN(), key, val)
    for key, val in {
        'N': None,
        'N-2': None
    }.items()
}
_print_object_collection('setns')

#: Basic CartesianProduct instances.
basic_cps = {
    key: create_test_object(CartesianProduct(**val), key, val)
    for key, val in {
        'AxA': {
            'left': GenesisSetA(),
            'right': GenesisSetA()
        },
# You should have received a copy of the GNU Lesser General Public License along with algebraixlib.
# If not, see <http://www.gnu.org/licenses/>.
# --------------------------------------------------------------------------------------------------
import inspect
import os
import unittest

import collections as _collections

from algebraixlib.mathobjects import Atom, CacheStatus, Couplet, Multiset, Set
from algebraixlib.structure import CartesianProduct, GenesisSetN, GenesisSetA, PowerSet, Structure
from algebraixlib.undef import Undef

# Ground set structures for the basic_sets.
_atom_multiset_struct = PowerSet(CartesianProduct(GenesisSetA(),
                                                  GenesisSetN()))


class MultisetTest(unittest.TestCase):
    """Test the Set class."""

    print_examples = False

    #     def test_Multiset(self):
    #         """Create various forms of Sets."""
    #         if self.print_examples:
    #             print('(printing examples)')  # Make 'nosetests -s' more readable.
    #         for test_set_name in basic_multisets.keys():
    #             self._multiset_assert(test_set_name)
    #         self.assertEqual("{}", str(Multiset()))
    #         self.assertTrue(Multiset(1) < Multiset(2))