;;; test-ob-R.el --- tests for ob-R.el ;; Copyright (c) 2011-2014 Eric Schulte ;; Authors: Eric Schulte ;; This file is not part of GNU Emacs. ;; This program 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 of the License, or ;; (at your option) any later version. ;; This program 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 . ;;; Code: (org-test-for-executable "R") (unless (featurep 'ess) (signal 'missing-test-dependency "ESS")) (unless (featurep 'ob-R) (signal 'missing-test-dependency "Support for R code blocks")) (ert-deftest test-ob-R/simple-session () (let ((ess-ask-for-ess-directory nil)) (org-test-with-temp-text "#+begin_src R :session R\n paste(\"Yep!\")\n#+end_src\n" (should (string= "Yep!" (org-babel-execute-src-block)))))) (ert-deftest test-ob-R/colnames-yes-header-argument () (org-test-with-temp-text "#+name: eg | col | |-----| | a | | b | #+header: :colnames yes #+header: :var x = eg #+begin_src R x #+end_src" (org-babel-next-src-block) (should (equal '(("col") hline ("a") ("b")) (org-babel-execute-src-block))))) (ert-deftest test-ob-R/colnames-nil-header-argument () (org-test-with-temp-text "#+name: eg | col | |-----| | a | | b | #+header: :colnames nil #+header: :var x = eg #+begin_src R x #+end_src" (org-babel-next-src-block) (should (equal '(("col") hline ("a") ("b")) (org-babel-execute-src-block))))) (ert-deftest test-ob-R/colnames-no-header-argument () (org-test-with-temp-text "#+name: eg | col | |-----| | a | | b | #+header: :colnames no #+header: :var x = eg #+begin_src R x #+end_src" (org-babel-next-src-block) (should (equal '(("col") ("a") ("b")) (org-babel-execute-src-block))))) (ert-deftest test-ob-R/colnames-from-r () (org-test-with-temp-text " #+header: :colnames yes #+begin_src R y <- data.frame(x = c(1,2,3)) y #+end_src" (org-babel-next-src-block) (should (equal '(("x") hline (1) (2) (3)) (org-babel-execute-src-block))))) (ert-deftest test-ob-R/colnames-from-org () (org-test-with-temp-text " #+header: :colnames '(\"foo\") #+begin_src R y <- data.frame(x = c(1,2,3)) y #+end_src" (org-babel-next-src-block) (should (equal '(("foo") hline (1) (2) (3)) (org-babel-execute-src-block))))) (ert-deftest test-ob-R/rownames-from-r () (org-test-with-temp-text " #+header: :rownames yes #+begin_src R x <- data.frame(x = c(1,2,3)) rownames(x) <- c(\"A\",\"B\",\"C\") x #+end_src" (org-babel-next-src-block) (should (equal '(("A" 1) ("B" 2) ("C" 3)) (org-babel-execute-src-block))))) (ert-deftest test-ob-R/rownames-from-org () (org-test-with-temp-text " #+header: :rownames '(\"D\" \"E\" \"F\") #+begin_src R x <- data.frame(x = c(1,2,3)) rownames(x) <- c(\"A\",\"B\",\"C\") x #+end_src" (org-babel-next-src-block) (should (equal '(("D" 1) ("E" 2) ("F" 3)) (org-babel-execute-src-block))))) (ert-deftest test-ob-R/row-and-colnames-from-r () (org-test-with-temp-text " #+header: :rownames yes :colnames yes #+begin_src R y <- data.frame(x = c(1,2,3)) rownames(y) <- c(\"A\",\"B\",\"C\") y #+end_src" (org-babel-next-src-block) (should (equal '(("" "x") hline ("A" 1) ("B" 2) ("C" 3)) (org-babel-execute-src-block))))) (ert-deftest test-ob-R/row-and-colnames-from-org () ;; NB: For R, the column of rownames doesn't itself have a colname, ;; whereas for Org it must. (org-test-with-temp-text " #+header: :rownames '(\"D\" \"E\" \"F\") :colnames '(\"colnames\" \"foo\") #+begin_src R y <- data.frame(x = c(1,2,3)) rownames(y) <- c(\"A\",\"B\",\"C\") y #+end_src" (org-babel-next-src-block) (should (equal '(("colnames" "foo") hline ("D" 1) ("E" 2) ("F" 3)) (org-babel-execute-src-block))))) (provide 'test-ob-R) ;;; test-ob-R.el ends here