From 423ec0886846f0a32b011a54fdb8209c3f61170b Mon Sep 17 00:00:00 2001 From: Alon Date: Sat, 29 Dec 2018 21:05:58 +0200 Subject: [PATCH] add a basic test of prjxray.util.get_row().gen_sites() Signed-off-by: Alon --- tests/test_util.py | 63 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100755 tests/test_util.py diff --git a/tests/test_util.py b/tests/test_util.py new file mode 100755 index 00000000..8843d165 --- /dev/null +++ b/tests/test_util.py @@ -0,0 +1,63 @@ +#!/usr/bin/env python3 + +from os import environ, getcwd, chdir +import json +from tempfile import TemporaryDirectory +from contextlib import contextmanager +from unittest import TestCase, main + +# Setup location of database file to a relative term so it can be generated +# in the current subdirectory, which will be a temporary one, to allow concurent +# testing. +environ['XRAY_DATABASE_ROOT'] = '.' + +from prjxray.util import get_roi + + +@contextmanager +def setup_database(contents): + with TemporaryDirectory() as d: + olddir = getcwd() + chdir(d) + e = None + with open('tilegrid.json', 'w') as fd: + json.dump(contents, fd) + try: + yield + except Exception as ereal: + e = ereal + chdir(olddir) + if e is not None: + raise e + + +class TestUtil(TestCase): + def test_get_roi_gen_sites(self): + makedb = lambda sites: { + "ATILE": { + "bits": { + "CLB_IO_CLK": { + "baseaddr": "0x00400F00", + "frames": 28, + "height": 2, + "offset": 0, + "words": 2 + } + }, + "grid_x": 10, + "grid_y": 10, + "segment": "ASEGMENT", + "segment_type": "bram0_l", + "sites": sites, + "type": "BRAM_INT_INTERFACE_L" + } + } + with setup_database(makedb({})): + self.assertEquals(list(get_roi().gen_sites()), []) + with setup_database(makedb({'FOO': 'BAR'})): + self.assertEquals( + list(get_roi().gen_sites()), [('ATILE', 'FOO', 'BAR')]) + + +if __name__ == '__main__': + main()