Ejemplo n.º 1
0
def test_le():
    parametre = [
        1, 2, 4, 4, 5, 7, 1, 4, 1, 2, 3, 5, 4, 7, 7, 8, 8, 9, 6, 5, 4, 1, 2, 3,
        "ok", "j", {
            "test": 7
        }
    ]

    M1 = MultiSet(parametre)
    M2 = MultiSet(parametre)
    M3 = MultiSet(parametre[3:12])
    M4 = MultiSet(parametre[7:12])

    assert M1 <= M2
    assert M4 <= M3
    assert not M3 <= M4
    assert M3 <= M1

    for x in (M1, M2, M3, M4):
        for y in (M1, M2, M3, M4):
            if x <= y:
                assert len(x) <= len(y)
            for z in (M1, M2, M3, M4):
                if (x <= y) and (y <= z):
                    assert x <= z
Ejemplo n.º 2
0
def test_eq():
    parametre = [
        1, 2, 4, 4, 5, 7, 1, 4, 1, 2, 3, 5, 4, 7, 7, 8, 8, 9, 6, 5, 4, 1, 2, 3,
        "ok", "j", {
            "test": 7
        }
    ]

    M1 = MultiSet(parametre)
    M2 = MultiSet(parametre)
    M3 = MultiSet(parametre[3:12])
    M4 = MultiSet(parametre[7:12])
    M5 = MultiSet(parametre)

    assert M1 is not M2  # Pas le même objet Python
    assert M1 == M2
    assert M3 != M4
    assert M1 != M3

    for x in (M1, M2, M3, M4, M5):
        for y in (M1, M2, M3, M4, M5):
            if x == y:
                assert len(x) == len(y)
            for z in (M1, M2, M3, M4, M5):
                if (x == y) and (y == z):
                    assert x == z
Ejemplo n.º 3
0
def test_to_Dict():
    m = MultiSet([('a', 3), 7])
    assert m.multiplicity('a') == 3
    stockage = m.to_Dict()
    assert type(stockage) is dict
    assert stockage['a'] == 3
    assert stockage[7] == 1
    stockage['a'] = 9
    assert m.multiplicity('a') == 3
Ejemplo n.º 4
0
def test_to_List():
    m = MultiSet('ceci est un test')
    liste = m.to_List()
    cpt = 0
    for x in m:
        cpt += 1
    assert len(liste) == cpt
    liste.pop(0)
    assert liste != m.to_List()
Ejemplo n.º 5
0
def test_sub():
    A = MultiSet((1, 3, 6, 2, 5, 4, 5))
    B = MultiSet((1, 3, 7, 45))
    C = A - B
    assert C <= A
    vide = MultiSet()
    for M in (A, B, C, vide):
        assert M - M == vide
        assert M - vide == M
Ejemplo n.º 6
0
def test_add():
    A = MultiSet((1, 3, 2, 3, 5, 4, 5))
    B = MultiSet((1, 1, 3, 7))
    C = A + B
    assert A <= C
    assert B <= C
    vide = MultiSet()
    for M in (A, B, C, vide):
        assert M + M == M
        assert M + vide == M
Ejemplo n.º 7
0
def test_mod():
    A = MultiSet((1, 3, 6, 2, 5, 4, 5))
    B = MultiSet((1, 3, 7, 45))
    C = A % B
    D = (A - B) + (B - A)
    E = (A + B) - (A * B)
    assert C == D
    assert D == E
    vide = MultiSet()
    for M in (A, B, C, vide):
        assert M % M == vide
        assert M % vide == M
Ejemplo n.º 8
0
def test_intersection():
    vide = MultiSet()
    multisets = []

    for i in range(30):
        param = [
            random.randrange(100) for i in range(10 + random.randrange(90))
        ]
        multisets.append(MultiSet(param))
    assert vide.intersection(*multisets) == vide
    inter = multisets[0].intersection(*multisets[1:])
    assert len(inter) <= min([len(x) for x in multisets])
    for x in inter:
        for mset in multisets:
            assert x in mset
Ejemplo n.º 9
0
def test_union():
    vide = MultiSet()
    multisets = []

    for i in range(30):
        param = [
            random.randrange(100) for i in range(10 + random.randrange(90))
        ]
        multisets.append(MultiSet(param))
    union = multisets[0].union(*multisets[1:])
    assert vide.union(*multisets) == union
    assert len(union) >= max([len(x) for x in multisets])
    for mset in multisets:
        for x in mset:
            assert x in union
Ejemplo n.º 10
0
def test_mul():
    vide = MultiSet()
    A = MultiSet((1, 3, 2, 3, 5, 4, 5))
    B = MultiSet((1, 3, 7))
    C = A * B
    assert C <= A
    assert C <= B
    for x in (1, 2, 3, 4, 5, 7):
        if x == 1 or x == 3:
            assert C.multiplicity(x) == 1
        else:
            assert x not in C
    for M in (A, B, C, vide):
        assert M * M == M
        assert M * vide == vide
Ejemplo n.º 11
0
def test_elements():
    M = MultiSet([
        0, 7, 4, 'lokkzeeazdq', {
            '2165': 132,
            '_': int,
            4654: 46
        },
        MultiSet(), ('tout', 12), (1, 7, 5, set())
    ])
    N = MultiSet(
        "Ceci est un lorem ipsum sit dolor amet nec plus ultra hacked sans os. Avec windows 10. Donc il y a 1 os. Mé non. Paradoxe."
    )
    cpt = 0
    for x in M.elements():
        cpt += 1
    assert cpt == len(M)
Ejemplo n.º 12
0
def test_len():
    liste = [1, 2, 2, 4, 3, 5, 5, 7, 7, 8, 1, 2, 4, 5, 6, 7, 9]
    m = MultiSet(liste)
    assert len(m) == len(liste)
    m.ajoute(4, 2)
    m.ajoute('brique', 3)
    assert len(m) == len(liste) + 5
Ejemplo n.º 13
0
def test_init():
    params = [[
        0, 7, 4, 'lokkzeeazdq', {
            '2165': 132,
            '_': int,
            -0.214: 46
        },
        MultiSet(), ('tout', 12), (1, 7, 5, set())
    ], {
        7: 5,
        'lokkzeeazdq': 98,
        15: 'quatre-vingt-quinze',
        32: 7
    }, {
        1, 7, 8, 'test', 12, 4, 18
    }, "Ceci est un lorem ipsum sit dolor amet nec plus ultra hacked sans os. Avec windows 10. Donc avec os. Paradoxe.",
              None]
    i = 0
    for par in params:
        i += 1
        print(">> m" + str(i) + " = Multiset(" + repr(par) + ")")
        print(">> m" + str(i))
        print(MultiSet(par))
Ejemplo n.º 14
0
def test_iter():
    liste = [1, 2, 2, 4, 3, 5, 5, 7, 7, 8, 1, 2, 4, 5, 6, 7, 9]
    elements = [1, 2, 3, 4, 5, 6, 7, 8, 9]
    m = MultiSet(liste)
    for nombre in m:
        assert nombre in liste

    m = MultiSet()
    for rien in m:
        assert False
    m.ajoute('cobaye', 123)
    m.ajoute('sujet', 92)
    cpt = 0
    for x in m:
        cpt += 1
    assert cpt == 2
Ejemplo n.º 15
0
def test_contains():
    m = MultiSet()
    assert 0 not in m
    m.ajoute('dix-sept')
    assert 17 not in m
    assert 'dix-sept' in m
Ejemplo n.º 16
0
def test_cut():
    M = MultiSet([
        0, 7, 4, 'lokkzeeazdq', {
            '2165': 132,
            '_': int,
            654: 46
        },
        MultiSet(), ('tout', 12), (1, 7, 5, set())
    ])
    N = MultiSet(
        "Ceci est un lorem ipsum sit dolor amet nec plus ultra hacked sans os. Avec windows 10. Donc il y a 1 os. Mé non. Paradoxe."
    )
    assert len(M.sup(6)) <= len(M)
    MSup = M.sup(7)
    for x in M.sup(7):
        assert M.multiplicity(x) > 7
    for x in M:
        assert not (M.multiplicity(x) > 7 and x not in MSup)

    NSup = N.sup(7)
    for x in N.sup(7):
        assert N.multiplicity(x) > 7
    for x in N:
        assert not (N.multiplicity(x) > 7 and x not in NSup)
Ejemplo n.º 17
0
def test_multiplicite():
    m = MultiSet()
    for i, lettre in enumerate(('a', 'b', 'c', 'd')):
        m.ajoute(lettre, i)
        assert m.multiplicity(lettre) == i

    m.ajoute('o', 18)
    assert m.multiplicity('o') == 18
    m.ajoute('o', 12)
    assert m.multiplicity('o') == 30

    assert m.multiplicity('test') == 0
    assert m.multiplicity({1: 2, 3: 4, 5: 6, 7: 8}) == 0

    m.ajoute('p', -5478)
    assert m.multiplicity('p') == 0

    m.supprime('o', 165465)
    assert m.multiplicity('o') == 0
Ejemplo n.º 18
0
def test_inf():
    M = MultiSet([
        0, 7, 4, 'lokkzeeazdq', {
            '2165': 132,
            '_': int,
            14: 46
        },
        MultiSet(), ('tout', 12), (1, 7, 5, set())
    ])
    N = MultiSet(
        "Ceci est un lorem ipsum sit dolor amet nec plus ultra hacked sans os. Avec windows 10. Donc il y a 1 os. Mé non. Paradoxe."
    )
    assert len(M.inf(3)) <= len(M)
    Minf = M.inf(9)
    for x in M.inf(9):
        assert M.multiplicity(x) < 9
    for x in M:
        assert not (M.multiplicity(x) < 9 and x not in Minf)

    Ninf = N.inf(9)
    for x in N.inf(9):
        assert N.multiplicity(x) < 9
    for x in N:
        assert not (N.multiplicity(x) < 9 and x not in Ninf)
Ejemplo n.º 19
0
def test_supprime():
    param = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14}
    M = MultiSet(param)
    for element in M:
        M.ajoute(element,
                 2 + random.randrange(8))  # On ajoute de 2 à 9 éléments, donc
        # chaque élément est présent de 3 à 10 fois

    M.supprime(1, 20)
    assert 1 not in M
    assert M.multiplicity(1) == 0

    for element in param:
        avant = M.multiplicity(element)
        M.supprime(element, 3)
        apres = M.multiplicity(element)
        assert avant == 0 or apres < avant
Ejemplo n.º 20
0
def test_ajoute():
    m = MultiSet()
    # Signature
    for pas_un_nombre_valide in (-1, 0, 'a', [1, 2, 3]):
        m.ajoute('cobaye', pas_un_nombre_valide)
        assert 'cobaye' not in m

    # Axiomes
    m.ajoute(4)
    assert m.multiplicity(4) == 1
    m.ajoute('un mot', 145)
    assert m.multiplicity('un mot') >= 145

    m2 = MultiSet()

    for i in range(20):
        for n in (1, 4, 2, 7, 1, 3, 8, 9, 4):
            element = random.randrange(4)
            m1 = m2.copy()
            m2.ajoute(element, n)
            assert m2.multiplicity(element) - m1.multiplicity(element) == n
            assert len(m1) < len(m2)
            assert m1 < m2
Ejemplo n.º 21
0
def test_str():
    a = MultiSet([(3, 4, 5, 6)])
    assert str(a) == """{{\n  3: 4}}"""
    b = MultiSet({'a': 2})
    assert str(b) == """{{\n  'a': 2}}"""
    assert str(MultiSet()) == """{{}}"""
Ejemplo n.º 22
0
def test_repr():
    a = MultiSet([(1, 2), (3, 4, 5, 6), 7])
    assert repr(a) == 'MultiSet({1: 2, 3: 4, 7: 1})'
    b = MultiSet({'une chaine': 12})
    assert repr(b) == "MultiSet({'une chaine': 12})"
    assert repr(MultiSet()) == "MultiSet({})"
Ejemplo n.º 23
0
def test_to_Set():
    m = MultiSet([(1, 7), ('o', 2), (8, 23, 14, 7)])
    assert m.to_Set() == {1, 'o', 8}
    l = [1, 7, 4, 5, 6, 1, 1, 4, 7, 5, 4, 1, 2]
    assert set(l) == MultiSet(l).to_Set()