acb9fa23c64bed34182c6c36fcb53356d8881ed1
[litex.git] / litex / gen / migen / test / test_sort.py
1 import unittest
2 from random import randrange
3
4 from migen import *
5 from migen.genlib.sort import *
6
7 from migen.test.support import SimCase
8
9
10 class BitonicCase(SimCase, unittest.TestCase):
11 class TestBench(Module):
12 def __init__(self):
13 self.submodules.dut = BitonicSort(8, 4, ascending=True)
14
15 def test_sizes(self):
16 self.assertEqual(len(self.tb.dut.i), 8)
17 self.assertEqual(len(self.tb.dut.o), 8)
18 for i in range(8):
19 self.assertEqual(len(self.tb.dut.i[i]), 4)
20 self.assertEqual(len(self.tb.dut.o[i]), 4)
21
22 def test_sort(self):
23 def gen():
24 for repeat in range(20):
25 for i in self.tb.dut.i:
26 yield i.eq(randrange(1<<len(i)))
27 yield
28 self.assertEqual(sorted((yield self.tb.dut.i)),
29 (yield self.tb.dut.o))
30 self.run_with(gen())