[Rcpp-commits] r1767 - pkg/Rcpp/inst/unitTests

noreply at r-forge.r-project.org noreply at r-forge.r-project.org
Fri Jul 2 20:42:42 CEST 2010


Author: edd
Date: 2010-07-02 20:42:41 +0200 (Fri, 02 Jul 2010)
New Revision: 1767

Modified:
   pkg/Rcpp/inst/unitTests/runit.RcppDate.R
Log:
converted to 'one cxxfunction call of lists of sigs and bodies' scheme


Modified: pkg/Rcpp/inst/unitTests/runit.RcppDate.R
===================================================================
--- pkg/Rcpp/inst/unitTests/runit.RcppDate.R	2010-07-02 14:58:20 UTC (rev 1766)
+++ pkg/Rcpp/inst/unitTests/runit.RcppDate.R	2010-07-02 18:42:41 UTC (rev 1767)
@@ -17,37 +17,60 @@
 # You should have received a copy of the GNU General Public License
 # along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
 
+.setUp <- function() {
+    if( ! exists( ".rcpp.RcppDate", globalenv() )) {
+        ## definition of all the functions at once
+
+        functions <- list("get_functions"=list(
+                          signature(),
+                          'RcppDate dt = RcppDate(12,31,1999);
+                           RcppResultSet rs;
+                           rs.add("month", dt.getMonth());
+                           rs.add("day",   dt.getDay());
+                           rs.add("year",  dt.getYear());
+                           rs.add("julian",dt.getJulian());
+                           return rs.getReturnList();'),
+
+                          "operators"=list(
+                          signature(),
+                          'RcppDate d1 = RcppDate(12,31,1999);
+                           RcppDate d2 = d1 + 1;
+                           RcppResultSet rs;
+                           rs.add("diff",    d2 - d1);
+                           rs.add("bigger",  d2 > d1);
+                           rs.add("smaller", d2 < d1);
+                           rs.add("equal",   d2 == d1);
+                           rs.add("ge",      d2 >= d1);
+                           rs.add("le",      d2 <= d1);
+                           return rs.getReturnList();'),
+
+                          "wrap"=list(
+                          signature(),
+                          'RcppDate dt = RcppDate(12,31,1999);
+                           return wrap(dt);')
+
+                          )
+
+        signatures <- lapply(functions, "[[", 1L)
+        bodies <- lapply(functions, "[[", 2L)
+        fun <- cxxfunction( signatures, bodies, plugin = "Rcpp")
+        getDynLib( fun ) # just forcing loading the dll now
+        assign( ".rcpp.RcppDate", fun, globalenv() )
+    }
+}
+
 test.RcppDate.get.functions <- function() {
-    src <- 'RcppDate dt = RcppDate(12,31,1999);
-            RcppResultSet rs;
-            rs.add("month", dt.getMonth());
-            rs.add("day",   dt.getDay());
-            rs.add("year",  dt.getYear());
-            rs.add("julian",dt.getJulian());
-	    return rs.getReturnList();';
-    funx <- cppfunction(signature(), src)
-    checkEquals(funx(), list(month=12, day=31, year=1999, julian=10956), msg = "RcppDate.get.functions")
+    fun <- .rcpp.RcppDate$get_functions
+    checkEquals(fun(), list(month=12, day=31, year=1999, julian=10956), msg = "RcppDate.get.functions")
 }
 
 test.RcppDate.operators <- function() {
-    src <- 'RcppDate d1 = RcppDate(12,31,1999);
-            RcppDate d2 = d1 + 1;
-            RcppResultSet rs;
-            rs.add("diff",    d2 - d1);
-            rs.add("bigger",  d2 > d1);
-            rs.add("smaller", d2 < d1);
-            rs.add("equal",   d2 == d1);
-            rs.add("ge",      d2 >= d1);
-            rs.add("le",      d2 <= d1);
-	    return rs.getReturnList();';
-    funx <- cppfunction(signature(), src)
-    checkEquals(funx(), list(diff=1, bigger=TRUE, smaller=FALSE, equal=FALSE, ge=TRUE, le=FALSE), msg = "RcppDate.operators")
+    fun <- .rcpp.RcppDate$operators
+    checkEquals(fun(), list(diff=1, bigger=TRUE, smaller=FALSE, equal=FALSE, ge=TRUE, le=FALSE), msg = "RcppDate.operators")
 }
 
 test.RcppDate.wrap <- function() {
-    src <- 'RcppDate dt = RcppDate(12,31,1999);
-	    return wrap(dt);';
-    funx <- cppfunction(signature(), src)
-    checkEquals(funx(), as.Date("1999-12-31"), msg = "RcppDate.wrap")
+    fun <- .rcpp.RcppDate$wrap
+    checkEquals(fun(), as.Date("1999-12-31"), msg = "RcppDate.wrap")
 }
 



More information about the Rcpp-commits mailing list