Ejemplo n.º 1
0
 def test_bit_count_random(self):
     for n in list(range(50)) + [randint(1000, 2000)]:
         a = urandom(n)
         b = urandom(n)
         self.assertEqual(count_and(a, b), (a & b).count())
         self.assertEqual(count_or(a, b), (a | b).count())
         self.assertEqual(count_xor(a, b), (a ^ b).count())
Ejemplo n.º 2
0
def test():
    from random import randint
    from bitarray.util import urandom

    a = [
        urandom(n * n, endian=['little', 'big'][randint(0, 1)])
        for n in range(12)
    ]
    a.append({'key1': bitarray('010'), 'key2': 'value2', 'key3': urandom(300)})
    j = JSONEncoder(indent=2).encode(a)
    print(j)

    b = JSONDecoder().decode(j)
    assert a == b
    assert b[-1]['key1'] == bitarray('010')
Ejemplo n.º 3
0
 def test_binascii(self):
     a = urandom(800, 'big')
     s = binascii.hexlify(a.tobytes()).decode()
     self.assertEqual(ba2hex(a), s)
     b = bitarray(endian='big')
     b.frombytes(binascii.unhexlify(s))
     self.assertEQUAL(hex2ba(s, 'big'), b)
Ejemplo n.º 4
0
    def test_bitwise_inplace(self):
        for a in self.randombitarrays(start=1):
            b = urandom(len(a), a.endian())
            bb = b.copy()
            i = ba2int(a)
            j = ba2int(b)
            c = a.copy()
            c &= b
            self.assertEqual(ba2int(c), i & j)
            c = a.copy()
            c |= b
            self.assertEqual(ba2int(c), i | j)
            c = a.copy()
            c ^= b
            self.assertEqual(ba2int(c), i ^ j)
            self.assertEQUAL(b, bb)

            n = randint(0, len(a))
            if a.endian() == 'big':
                c = a.copy()
                c >>= n
                self.assertEqual(ba2int(c), i >> n)
                c = zeros(len(a)) + a
                c <<= n
                self.assertEqual(ba2int(c), i << n)
Ejemplo n.º 5
0
 def test_random2(self):
     for m in range(1, 7):
         n = 1 << m
         for length in range(0, 100, m):
             a = urandom(length, 'little')
             self.assertEQUAL(base2ba(n, ba2base(n, a), 'little'), a)
             b = bitarray(a, 'big')
             self.assertEQUAL(base2ba(n, ba2base(n, b), 'big'), b)
Ejemplo n.º 6
0
    def test_1(self):
        for default_endian in 'big', 'little':
            _set_default_endian(default_endian)
            a = urandom(0)
            self.assertEqual(a, bitarray())
            self.assertEqual(a.endian(), default_endian)

            b = urandom(0, endian=None)
            self.assertEqual(b.endian(), default_endian)

            for n in range(100):
                a = urandom(n)
                self.assertEqual(len(a), n)
                self.assertEqual(b.endian(), default_endian)

            a = urandom(1000)
            b = urandom(1000)
            self.assertNotEqual(a, b)
            self.assertTrue(400 < a.count() < 600)
            self.assertTrue(400 < b.count() < 600)
Ejemplo n.º 7
0
    def test_basic(self):
        for default_endian in 'big', 'little':
            _set_default_endian(default_endian)
            a = urandom(0)
            self.assertEqual(a, bitarray())
            self.assertEqual(a.endian(), default_endian)

            a = urandom(7, endian=None)
            self.assertEqual(len(a), 7)
            self.assertEqual(a.endian(), default_endian)

            for n in range(50):
                a = urandom(n)
                self.assertEqual(len(a), n)
                self.assertEqual(a.endian(), default_endian)

            for endian in 'big', 'little':
                a = urandom(11, endian)
                self.assertEqual(len(a), 11)
                self.assertEqual(a.endian(), endian)
Ejemplo n.º 8
0
def test_round(f, g, n, endian):
    # f: function which takes bitarray and returns hexstr
    # g: function which takes hexstr and returns bitarray
    # n: size of random bitarray
    a = urandom(n, endian)
    t0 = time()
    s = f(a)
    print('%s:  %9.6f sec' % (f.__name__, time() - t0))
    t0 = time()
    b = g(s, endian)
    print('%s:  %9.6f sec' % (g.__name__, time() - t0))
    assert b == a
Ejemplo n.º 9
0
    def test_bitwise(self):
        for a in self.randombitarrays(start=1):
            b = urandom(len(a), a.endian())
            aa = a.copy()
            bb = b.copy()
            i = ba2int(a)
            j = ba2int(b)
            self.assertEqual(ba2int(a & b), i & j)
            self.assertEqual(ba2int(a | b), i | j)
            self.assertEqual(ba2int(a ^ b), i ^ j)

            n = randint(0, len(a))
            if a.endian() == 'big':
                self.assertEqual(ba2int(a >> n), i >> n)
                c = zeros(len(a)) + a
                self.assertEqual(ba2int(c << n), i << n)

            self.assertEQUAL(a, aa)
            self.assertEQUAL(b, bb)
Ejemplo n.º 10
0
def test():
    from random import randint
    from bitarray.util import urandom

    a = [
        urandom(n * n, endian=['little', 'big'][randint(0, 1)])
        for n in range(10)
    ]
    a.append({'key1': bitarray('010'), 'key2': 'value2'})
    j = JSONEncoder(indent=2).encode(a)
    print(j)
    b = JSONDecoder().decode(j)
    assert a == b
    for i in range(len(a)):
        if isinstance(a[i], bitarray):
            assert a[i] == b[i]
            assert a[i].endian() == b[i].endian()
    assert b[-1]['key1'] == bitarray('010')
    assert b[-1]['key2'] == 'value2'
Ejemplo n.º 11
0
 def test_random(self):
     for n in range(150):
         self.round_trip(urandom(n))
Ejemplo n.º 12
0
 def test_random(self):
     for n in range(1, 10):
         a = urandom(n, self.random_endian())
         self.check_all_perm(a)
         a.sort(a.endian() == 'little')
         self.check_order(a)
Ejemplo n.º 13
0
from bitarray.util import urandom

if __name__ == "__main__":
    file = open("result", "w+")
    data = urandom(5120000)
    file.write(data.to01())
Ejemplo n.º 14
0
from __future__ import print_function
from bitarray.util import urandom, pprint, ba2base, base2ba

a = urandom(60)

for m in range(1, 7):
    n = 1 << m
    print("----- length: %d ----- base: %d ----- " % (m, n))
    pprint(a, group=m)
    rep = ba2base(n, a)
    print("representation:", rep)
    print()
    assert base2ba(n, rep) == a
Ejemplo n.º 15
0
def main():
    start = time.time()

    # a = []
    # b = []

    # for i in range(0, 30):

    generated_array = Generator().populate_array(2**18)
    # print(generated_array)

    coded_array = Coder().triple_code(generated_array)
    # print(coded_array)

    # a.append(i / 100)
    # distorted_array = Channel(i/100).distort(coded_array)

    distorted_array = Channel(0.15).distort(coded_array)
    # print(distorted_array)

    decoded_array = Decoder().decode(distorted_array)
    # print(decoded_array)

    print(error_factor(generated_array, decoded_array))
    # b.append(error_factor(generated_array, decoded_array))

    # print(a, b)
    # plt.plot(a, b)
    # plt.title("Error percentage depending on the probability p")
    # plt.xlabel("Probability of error p")
    # plt.ylabel("Error factor in %")
    # plt.show()
    end = time.time()
    print("Time:", end-start)

    """
    Etap II
    """

    print("Stage 2")
    # 2048

    bch = BCH()

    a = []
    b = []
    error = 0

    sent_msg = b_util.urandom(512)

    m = 8
    t = 63
    k = 9

    # 7_21_29

    # received_msg = BCH.code(sent_msg, m, t, k, 0.3)

    # for i in range(0, 20, 1):
    #     for j in range(10):
    #         received_msg = BCH.code(sent_msg, 3, 1, 4, i/100)

    #         filled_array = fill_with_zeros(sent_msg, len(received_msg))

    #         # print(len(example_bit_array), len(received_msg))
    #         # # print(received_msg)
    #         # print("Error [%] - decoded msg: ", error_factor(example_bit_array, received_msg))
    #         error += error_factor(filled_array, received_msg)
    #     error /= 10
    #     a.append(i/100)
    #     b.append(error)

    # print(a, b)
    # plt.plot(a, b)

    # plt.title(
    #     f"Error percentage depending on the probability p \nfor m = {m} k = {k} t = {t}")
    # plt.xlabel("Probability of error p")
    # plt.ylabel("Error factor in %")
    # plt.show()

    for i in range(0,20,3):
        counter = 0
        for m in bch_code_parameters:
            for t in bch_code_parameters[m]:
                counter +=1

                received_msg = BCH.code(sent_msg, m, t, bch_code_parameters[m][t], i/100)


                filled_array = fill_with_zeros(sent_msg, len(received_msg))
                # print(len(example_bit_array), len(received_msg))
                # # print(received_msg)
                # print("Error [%] - decoded msg: ", error_factor(example_bit_array, received_msg))
                error += error_factor(filled_array, received_msg)
        a.append(i/100)
        b.append(error/counter)
        error = 0
        print(counter)
    print(a, b)
    plt.plot(a, b)
    plt.title("Error percentage depending on the probability p")
    plt.xlabel("Probability of error p")
    plt.ylabel("Error factor in %")
    plt.show()
Ejemplo n.º 16
0
 def test_count(self):
     a = urandom(1000)
     b = urandom(1000)
     self.assertNotEqual(a, b)
     self.assertTrue(400 < a.count() < 600)
     self.assertTrue(400 < b.count() < 600)