summaryrefslogtreecommitdiff
path: root/gr-howto-write-a-block/swig
diff options
context:
space:
mode:
Diffstat (limited to 'gr-howto-write-a-block/swig')
-rw-r--r--gr-howto-write-a-block/swig/Makefile.am9
-rw-r--r--gr-howto-write-a-block/swig/howto.test69
-rw-r--r--gr-howto-write-a-block/swig/run_guile_tests.in14
3 files changed, 92 insertions, 0 deletions
diff --git a/gr-howto-write-a-block/swig/Makefile.am b/gr-howto-write-a-block/swig/Makefile.am
index 87134af93f..a7d39444e7 100644
--- a/gr-howto-write-a-block/swig/Makefile.am
+++ b/gr-howto-write-a-block/swig/Makefile.am
@@ -43,3 +43,12 @@ howto_swiginclude_headers = \
howto_square2_ff.i
EXTRA_DIST = $(howto_swiginclude_headers)
+
+
+if GUILE
+TESTS = run_guile_tests
+EXTRA_DIST += $(nobase_guile_DATA)
+
+nobase_guile_DATA = \
+ gnuradio/howto.scm
+endif
diff --git a/gr-howto-write-a-block/swig/howto.test b/gr-howto-write-a-block/swig/howto.test
new file mode 100644
index 0000000000..ffe7251cd8
--- /dev/null
+++ b/gr-howto-write-a-block/swig/howto.test
@@ -0,0 +1,69 @@
+;;; -*- Scheme -*-
+;;;
+;;; Copyright 2010 Free Software Foundation, Inc.
+;;;
+;;; This file is part of GNU Radio
+;;;
+;;; GNU Radio 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 3, or (at your option)
+;;; any later version.
+;;;
+;;; GNU Radio 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, see <http://www.gnu.org/licenses/>.
+;;;
+
+;;; If you're using Emacs's Scheme mode:
+;;; (put 'with-test-prefix 'scheme-indent-function 1)
+
+;;; See the comments in gnuradio/test-suite/lib.scm for info on writing tests.
+;;; See also the very end of the file, where the test-equal, test-eqv
+;;; and test-eq macros are defined.
+
+(define-module (test-module)
+ #:use-module (oop goops)
+ #:use-module (gnuradio core)
+ #:use-module (gnuradio test-suite lib)
+ #:duplicates (merge-generics replace check))
+
+
+;; Use our module
+(use-modules (gnuradio howto))
+
+
+(define (vector-map f v)
+ (list->vector (map f (vector->list v))))
+
+
+(with-test-prefix "square-ff"
+ (let* ((src-data #(-3. 4. -5.5 2. 3.))
+ (expected-result (vector-map (lambda (x) (* x x)) src-data))
+ (tb (gr:top-block-swig "QA top block"))
+ (src (gr:vector-source-f src-data #f))
+ (op (gr:howto-square-ff))
+ (dst (gr:vector-sink-f)))
+
+ (gr:connect tb src op dst)
+
+ (gr:run tb)
+ (test-equal expected-result (gr:data dst))))
+
+
+(with-test-prefix "square2-ff"
+ (let* ((src-data #(-3. 4. -5.5 2. 3.))
+ (expected-result (vector-map (lambda (x) (* x x)) src-data))
+ (tb (gr:top-block-swig "QA top block"))
+ (src (gr:vector-source-f src-data #f))
+ (op (gr:howto-square2-ff))
+ (dst (gr:vector-sink-f)))
+
+ (gr:connect tb src op dst)
+
+ (gr:run tb)
+ (test-equal expected-result (gr:data dst))))
+
diff --git a/gr-howto-write-a-block/swig/run_guile_tests.in b/gr-howto-write-a-block/swig/run_guile_tests.in
new file mode 100644
index 0000000000..5d08b0dd53
--- /dev/null
+++ b/gr-howto-write-a-block/swig/run_guile_tests.in
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+. @top_builddir@/setup_guile_test_env
+
+# 1st argument is absolute path to hand coded guile source directory
+# 2nd argument is absolute path to component C++ shared library build directory
+# 3nd argument is absolute path to component SWIG build directory
+
+add_local_paths \
+ @srcdir@ \
+ @abs_builddir@ \
+ @abs_builddir@
+
+@GUILE@ -e main -c '(use-modules (gnuradio test-suite guile-test))' -t @srcdir@