Exemple #1
0
def test_heptad_completer(gc, gc_ref):
    hc = gc_ref.heptad_completer
    for p, ok in get_testdata(gc_ref):
        p_in = p[:6] + [None] * 2 + p[8:9] + [None] * 15
        if ok:
            err = gc.perm_complete_heptad(p_in)
            #assert  err == 0, (p_in, hex(err))
            if not None in p:
                assert list(p) == list(p_in), (p, p_in, hex(err))
                i = hc.perm_to_int(p)
                assert 0 <= i < 244823040
                p1 = hc.int_to_perm(i)
                assert list(p) == list(p1), (i, p, p1)
        else:
            with pytest.raises(ValueError):
                gc.perm_complete_heptad(p_in)
        if ok:
            hexad = p[:6] + [None] * 2
            hexad_ref = hexad[:]
            gc.perm_complete_octad(hexad)
            assert hexad == p_in[:8]
            gc_ref.perm_complete_octad(hexad_ref)
            assert hexad_ref == p_in[:8]

    for h1, h2 in heptad_testdata(gc_ref):
        p = gc.perm_from_heptads(h1, h2)
        for i in range(7):
            assert p[h1[i]] == h2[i]
    perm0 = gc.perm_to_m24num(lrange(24))
    assert perm0 == 0, perm0

    print("Heptad completer test passed")
Exemple #2
0
def test_v2():
    for i in lrange(300) + [100000]:
        assert bitlen(1 << i) == i + 1
        assert bitlen((1 << i) - 1) == i
    for i in v2_testcases():
        assert v2(i) == v2_old(i), (hex(i), v2(i), v2_old(i))
        pass
Exemple #3
0
def benes24_testdata(ntests=1000):
    for i in range(10):
        p1 = [0,8,16]; shuffle(p1)
        p = [ [p1[j]] + lrange(8*j+1,8*j+8) for j in range(3) ]
        x = randint(0, 2**24-1)
        yield x, sum(p, [])

    for i in range(10):
        x = randint(0, 2**24-1)
        p0 = lrange(0,8); shuffle(p0)
        p1 = lrange(8,16); shuffle(p1)
        p2 = lrange(16,24); shuffle(p2)
        yield x , p0 + p1 + p2

    for i in range(ntests):
        x = randint(0, 2**24-1)
        p0 = lrange(0,24); shuffle(p0)
        yield x, p0
Exemple #4
0
def test_benes_steps():
    do_benes_step(4,0, [1,2,0,3])
    do_benes_step(4,1, [1,2,0,3])

    for t in range(10):
        for n in (4,8,16,32):
            for sh in range(5):
                if 1 << sh < n:
                    l = lrange(n)
                    shuffle(l)
                    do_benes_step(n, sh, l)

    for t in range(10):
        l = lrange(32)
        shuffle(l)
        for i in range(4):
            _1, _2, l = benes_step(32, i, l)
        benes_step_final(32, 4, l)
            
            
             
Exemple #5
0
def inverse_testcases():
    testcases = [
        [3, 4, 6, 12],
        [2, 3],
    ]
    NTESTS = 100
    for a in testcases:
        yield a
    for j in range(NTESTS):
        for n in lrange(1, 13) + [24]:
            a = bit_mat_random(n, n)
            yield a
    for j in range(200):
        yield bit_mat_random(10, 10)
Exemple #6
0
def get_testdata(gc):
    hc = gc.heptad_completer
    import random
    prod = lrange(24)
    yield prod, True
    for i in range(100):
        p = random_umbral_heptad(gc)
        yield p, True
        hc.complete_heptad(p)
        prod = gc.mul_perm(prod, p)
        #print( prod )
        yield p, True

    # test some error cases
    for i in range(100):
        p = random_umbral_heptad(gc)
        hc.complete_heptad(p)
        p6 = p[6]
        j = random.randint(0, 5)
        p[j], p[8] = p[8], p[j]
        yield p, False
        p[j], p[8] = p[8], p[j]
        yield p, True
        ok_j = p[j]
        p[j] = p[8]
        yield p, False
        p[j] = random.randint(24, 32)
        yield p, False
        p[j] = ok_j
        yield p, True
        p[8] = p6
        yield p, False
        p[8] = p[j]
        yield p, False
        p[8] = random.randint(24, 32)
        yield p, False
    for i in range(6):
        for j in range(i):
            p = random_umbral_heptad(gc)
            hc.complete_heptad(p)
            p[i] = p[j]
            yield p, False
Exemple #7
0
def v2_testcases():
    for i in lrange(32) + lrange(32, 70, 3):
        yield (1 << i)
        if i: yield (1 << i) - 1