summaryrefslogtreecommitdiff
path: root/gr-utils/python/blocktool/tests/test_blocktool.py
diff options
context:
space:
mode:
Diffstat (limited to 'gr-utils/python/blocktool/tests/test_blocktool.py')
-rw-r--r--gr-utils/python/blocktool/tests/test_blocktool.py187
1 files changed, 0 insertions, 187 deletions
diff --git a/gr-utils/python/blocktool/tests/test_blocktool.py b/gr-utils/python/blocktool/tests/test_blocktool.py
deleted file mode 100644
index 8c8a1686b1..0000000000
--- a/gr-utils/python/blocktool/tests/test_blocktool.py
+++ /dev/null
@@ -1,187 +0,0 @@
-#
-# Copyright 2019 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-#
-#
-""" unittest for gr-blocktool api """
-
-from __future__ import print_function
-from __future__ import absolute_import
-from __future__ import unicode_literals
-
-import os
-import unittest
-import warnings
-try:
- import pygccxml
- SKIP_BLOCK_TEST = False
-except:
- SKIP_BLOCK_TEST = True
-
-try:
- import apt
- CACHE = apt.cache.Cache()
- CACHE.open()
-
- PKG = CACHE['castxml']
- if PKG.is_installed:
- SKIP_BLOCK_TEST = False
- else:
- SKIP_BLOCK_TEST = True
-except:
- SKIP_BLOCK_TEST = True
-
-from jsonschema import validate
-
-from blocktool import BlockHeaderParser
-from blocktool.core.base import BlockToolException
-from blocktool.core import Constants
-from blocktool import RESULT_SCHEMA
-
-
-class TestBlocktoolCore(unittest.TestCase):
- """ The Tests for blocktool core """
-
- def __init__(self, *args, **kwargs):
- super(TestBlocktoolCore, self).__init__(*args, **kwargs)
- self.module = os.path.abspath(os.path.join(os.path.dirname(__file__),
- '../../../../gr-analog'))
- self.test_dir = os.path.abspath(os.path.join(self.module,
- 'include/gnuradio/analog'))
-
- def is_int(self, number):
- """
- Check for int conversion
- """
- try:
- int(number)
- return True
- except ValueError:
- return False
-
- @classmethod
- def setUpClass(cls):
- """ create a temporary Blocktool object """
- try:
- warnings.simplefilter("ignore", ResourceWarning)
- except NameError:
- pass
- test_path = {}
- target_file = os.path.abspath(os.path.join(os.path.dirname(
- __file__), '../../../../gr-analog/include/gnuradio/analog', 'agc2_cc.h'))
- test_path['file_path'] = target_file
- cls.test_obj = BlockHeaderParser(**test_path).get_header_info()
-
- @unittest.skipIf(SKIP_BLOCK_TEST, 'pygccxml not found, skipping this unittest')
- def test_blocktool_exceptions(self):
- """
- tests for blocktool exceptions
- """
- # test for non-existent header or invalid headers
- test_dict = {}
- test_dict['file_path'] = os.path.abspath(
- os.path.join(self.test_dir, 'sample.h'))
- with self.assertRaises(BlockToolException):
- BlockHeaderParser(**test_dict).run_blocktool()
- # test for invalid header file
- test_dict['file_path'] = os.path.abspath(
- os.path.join(self.test_dir, 'CMakeLists.txt'))
- if not os.path.basename(test_dict['file_path']).endswith('.h'):
- with self.assertRaises(BlockToolException):
- BlockHeaderParser(**test_dict).run_blocktool()
-
- @unittest.skipIf(SKIP_BLOCK_TEST, 'pygccxml not found, skipping this unittest')
- def test_namespace(self):
- """ test for header namespace """
- module_name = os.path.basename(self.module)
- self.assertTrue(self.test_obj['namespace'][0] == 'gr')
- self.assertTrue(self.test_obj['namespace']
- [1] == module_name.split('-')[-1])
-
- @unittest.skipIf(SKIP_BLOCK_TEST, 'pygccxml not found, skipping this unittest')
- def test_io_signature(self):
- """ test for io_signature """
- input_signature = self.test_obj['io_signature']['input']['signature']
- output_signature = self.test_obj['io_signature']['output']['signature']
- valid_signature = False
- if input_signature and output_signature in Constants.SIGNATURE_LIST:
- valid_signature = True
- self.assertTrue(valid_signature)
- valid_io_stream = False
- input_max = self.test_obj['io_signature']['input']['max_streams']
- input_min = self.test_obj['io_signature']['input']['min_streams']
- output_max = self.test_obj['io_signature']['output']['max_streams']
- output_min = self.test_obj['io_signature']['output']['min_streams']
- if self.is_int(input_max) and self.is_int(input_min) and self.is_int(output_max) and self.is_int(output_min):
- valid_io_stream = True
- self.assertTrue(valid_io_stream)
-
- @unittest.skipIf(SKIP_BLOCK_TEST, 'pygccxml not found, skipping this unittest')
- def test_message_port(self):
- """ test for message ports """
- input_port = self.test_obj['message_port']['input']
- output_port = self.test_obj['message_port']['output']
- valid_input_message_port = True
- valid_output_message_port = True
- if input_port:
- for port in input_port:
- if not port['id']:
- valid_input_message_port = False
- if output_port:
- for port in output_port:
- if not port['id']:
- valid_output_message_port = False
- self.assertTrue(valid_input_message_port)
- self.assertTrue(valid_output_message_port)
-
- @unittest.skipIf(SKIP_BLOCK_TEST, 'pygccxml not found, skipping this unittest')
- def test_factory_signature(self):
- """ test for factory signature in the header """
- valid_factory_arg = True
- if self.test_obj['make']['arguments']:
- for arguments in self.test_obj['make']['arguments']:
- if not arguments['name'] or not arguments['dtype']:
- valid_factory_arg = False
- self.assertTrue(valid_factory_arg)
-
- @unittest.skipIf(SKIP_BLOCK_TEST, 'pygccxml not found, skipping this unittest')
- def test_methods(self):
- """ test for methods """
- valid_method = True
- if self.test_obj['methods']:
- for arguments in self.test_obj['methods']:
- if not arguments['name']:
- valid_method = False
- if arguments['arguments_type']:
- for args in arguments['arguments_type']:
- if not args['name'] or not args['dtype']:
- valid_method = False
- self.assertTrue(valid_method)
-
- @unittest.skipIf(SKIP_BLOCK_TEST, 'pygccxml not found, skipping this unittest')
- def test_properties(self):
- """ test for properties """
- valid_properties = True
- if self.test_obj['properties']:
- for arguments in self.test_obj['properties']:
- if not arguments['name'] or not arguments['dtype']:
- valid_properties = False
- self.assertTrue(valid_properties)
-
- @unittest.skipIf(SKIP_BLOCK_TEST, 'pygccxml not found, skipping this unittest')
- def test_result_format(self):
- """ test for parsed blocktool output format """
- valid_schema = False
- try:
- validate(instance=self.test_obj, schema=RESULT_SCHEMA)
- valid_schema = True
- except BlockToolException:
- raise BlockToolException
- self.assertTrue(valid_schema)
-
-
-if __name__ == '__main__':
- unittest.main()