From e6377a8295a18ca98c275121cead340b9036c2ba Mon Sep 17 00:00:00 2001 From: Litvinov Sergey Date: Tue, 8 Nov 2011 22:19:04 +0100 Subject: [PATCH] Add string input variables to ob-octave.el. Add tests for ob-octave.el --- lisp/ob-octave.el | 6 ++- testing/README.org | 1 + testing/examples/ob-octave-test.org | 45 ++++++++++++++++++++++ testing/lisp/test-ob-octave.el | 60 +++++++++++++++++++++++++++++ 4 files changed, 111 insertions(+), 1 deletion(-) create mode 100644 testing/examples/ob-octave-test.org create mode 100644 testing/lisp/test-ob-octave.el diff --git a/lisp/ob-octave.el b/lisp/ob-octave.el index 3d9095483..f84073978 100644 --- a/lisp/ob-octave.el +++ b/lisp/ob-octave.el @@ -117,7 +117,11 @@ specifying a variable of the same value." (if (listp var) (concat "[" (mapconcat #'org-babel-octave-var-to-octave var (if (listp (car var)) "; " ",")) "]") - (format "%s" (or var "nil")))) + (cond + ((stringp var) + (format "\'%s\'" var)) + (t + (format "%s" var))))) (defun org-babel-prep-session:octave (session params &optional matlabp) "Prepare SESSION according to the header arguments specified in PARAMS." diff --git a/testing/README.org b/testing/README.org index 26853ba74..faa0dd50a 100644 --- a/testing/README.org +++ b/testing/README.org @@ -80,6 +80,7 @@ First tangle this file out to your desktop. (concat org-dir "/testing/examples/ob-C-test.org") (concat org-dir "/testing/examples/normal.org") (concat org-dir "/testing/examples/ob-awk-test.org") + (concat org-dir "/testing/examples/ob-octave.org") (concat org-dir "/testing/examples/ob-fortran-test.org") (concat org-dir "/testing/examples/ob-maxima-test.org") (concat org-dir "/testing/examples/link-in-heading.org") diff --git a/testing/examples/ob-octave-test.org b/testing/examples/ob-octave-test.org new file mode 100644 index 000000000..97d9b0040 --- /dev/null +++ b/testing/examples/ob-octave-test.org @@ -0,0 +1,45 @@ +#+Title: a collection of examples for ob-octave tests +#+OPTIONS: ^:nil + +* Simple tests + :PROPERTIES: + :ID: 54dcd61d-cf6c-4d7a-b9e5-854953c8a753 + :END: +Number output +#+begin_src octave :exports results :results silent +ans = 10 +#+end_src + +Array output +#+begin_src octave :exports results :results silent +ans = 1:4' +#+end_src + +* Input tests + :PROPERTIES: + :ID: cc2d82bb-2ac0-45be-a0c8-d1463b86a3ba + :END: +Input an integer variable +#+begin_src octave :exports results :results silent :var s=42 +ans = s +#+end_src + +Input an array +#+begin_src octave :exports results :results silent :var s='(1.0 2.0 3.0) +ans = s +#+end_src + +Input a matrix +#+begin_src octave :exports results :results silent :var s='((1 2) (3 4)) +ans = s +#+end_src + +Input a string +#+begin_src octave :exports results :results silent :var s="test" +ans = s(1:2) +#+end_src + +Input elisp nil +#+begin_src octave :exports results :results silent :var s='nil +ans = s +#+end_src diff --git a/testing/lisp/test-ob-octave.el b/testing/lisp/test-ob-octave.el new file mode 100644 index 000000000..528a94ad5 --- /dev/null +++ b/testing/lisp/test-ob-octave.el @@ -0,0 +1,60 @@ +;;; test-ob-octave.el --- tests for ob-octave.el + +;; Copyright (c) 2010 Sergey Litvinov +;; Authors: Sergey Litvinov + +;; Released under the GNU General Public License version 3 +;; see: http://www.gnu.org/licenses/gpl-3.0.html + +(org-test-for-executable "octave") + +(let ((load-path (cons (expand-file-name + ".." (file-name-directory + (or load-file-name buffer-file-name))) + load-path))) + (require 'org-test) + (require 'org-test-ob-consts)) + +(require 'ob-octave) + +(ert-deftest ob-octave/input-none () + "Number output" + (org-test-at-id "54dcd61d-cf6c-4d7a-b9e5-854953c8a753" + (org-babel-next-src-block) + (should (= 10 (org-babel-execute-src-block))))) + +(ert-deftest ob-octave/output-vector () + "Vector output" + (org-test-at-id "54dcd61d-cf6c-4d7a-b9e5-854953c8a753" + (org-babel-next-src-block 2) + (should (equal '((1 2 3 4)) (org-babel-execute-src-block))))) + +(ert-deftest ob-octave/input-variable () + "Input variable" + (org-test-at-id "cc2d82bb-2ac0-45be-a0c8-d1463b86a3ba" + (org-babel-next-src-block) + (should (= 42 (org-babel-execute-src-block))))) + +(ert-deftest ob-octave/input-array () + "Input an array" + (org-test-at-id "cc2d82bb-2ac0-45be-a0c8-d1463b86a3ba" + (org-babel-next-src-block 2) + (should (equal '((1 2 3)) (org-babel-execute-src-block))))) + +(ert-deftest ob-octave/input-matrix () + "Input a matrix" + (org-test-at-id "cc2d82bb-2ac0-45be-a0c8-d1463b86a3ba" + (org-babel-next-src-block 3) + (should (equal '((1 2) (3 4)) (org-babel-execute-src-block))))) + +(ert-deftest ob-octave/input-string () + "Input a string" + (org-test-at-id "cc2d82bb-2ac0-45be-a0c8-d1463b86a3ba" + (org-babel-next-src-block 4) + (should (equal "te" (org-babel-execute-src-block))))) + +(ert-deftest ob-octave/input-nil () + "Input elisp nil" + (org-test-at-id "cc2d82bb-2ac0-45be-a0c8-d1463b86a3ba" + (org-babel-next-src-block 5) + (should (equal nil (org-babel-execute-src-block)))))