summaryrefslogtreecommitdiff
path: root/grc/tests/test_yaml_checker.py
diff options
context:
space:
mode:
authorSebastian Koslowski <sebastian.koslowski@gmail.com>2016-05-03 17:13:08 +0200
committerJohnathan Corgan <johnathan@corganlabs.com>2017-06-29 09:16:49 -0700
commit7f7fa2f91467fdb2b11312be8562e7b51fdeb199 (patch)
tree24268bac15b9920d2a15ddbb45eaf3b9b03718a1 /grc/tests/test_yaml_checker.py
parent44cae388881821942e691a4d69a923bbd8d347db (diff)
grc: added yaml/mako support
Includes basic converter from XML/Cheetah to YAML/Mako based block format.
Diffstat (limited to 'grc/tests/test_yaml_checker.py')
-rw-r--r--grc/tests/test_yaml_checker.py84
1 files changed, 84 insertions, 0 deletions
diff --git a/grc/tests/test_yaml_checker.py b/grc/tests/test_yaml_checker.py
new file mode 100644
index 0000000000..e6b466e511
--- /dev/null
+++ b/grc/tests/test_yaml_checker.py
@@ -0,0 +1,84 @@
+# Copyright 2016 Free Software Foundation, Inc.
+# This file is part of GNU Radio
+#
+# GNU Radio Companion is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+#
+# GNU Radio Companion is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+# details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+
+import yaml
+
+from grc.core.schema_checker import Validator, BLOCK_SCHEME
+
+
+BLOCK1 = """
+id: block_key
+label: testname
+
+parameters:
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: 1
+- id: out_type
+ label: Vec Length
+ dtype: string
+ default: complex
+- id: a
+ label: Alpha
+ dtype: ${ out_type }
+ default: '0'
+
+inputs:
+- label: in
+ domain: stream
+ dtype: complex
+ vlen: ${ 2 * vlen }
+- name: in2
+ domain: message
+ id: in2
+
+outputs:
+- label: out
+ domain: stream
+ dtype: ${ out_type }
+ vlen: ${ vlen }
+
+templates:
+ make: blocks.complex_to_mag_squared(${ vlen })
+
+file_format: 1
+"""
+
+
+def test_min():
+ checker = Validator(BLOCK_SCHEME)
+ assert checker.run({'id': 'test', 'file_format': 1}), checker.messages
+ assert not checker.run({'name': 'test', 'file_format': 1})
+
+
+def test_extra_keys():
+ checker = Validator(BLOCK_SCHEME)
+ assert checker.run({'id': 'test', 'abcdefg': 'nonsense', 'file_format': 1})
+ assert checker.messages == [('block', 'warn', "Ignoring extra key 'abcdefg'")]
+
+
+def test_checker():
+ checker = Validator(BLOCK_SCHEME)
+ data = yaml.load(BLOCK1)
+ passed = checker.run(data)
+ if not passed:
+ print()
+ for msg in checker.messages:
+ print(msg)
+
+ assert passed, checker.messages