Revision: 426
          http://rpy.svn.sourceforge.net/rpy/?rev=426&view=rev
Author:   lgautier
Date:     2008-03-08 07:35:22 -0800 (Sat, 08 Mar 2008)

Log Message:
-----------
- Added tests
- Fixed subsetting

Modified Paths:
--------------
    trunk/sandbox/rpy_nextgen/rpy/robjects/__init__.py

Added Paths:
-----------
    trunk/sandbox/rpy_nextgen/rpy/robjects/tests/testRobjects.py

Modified: trunk/sandbox/rpy_nextgen/rpy/robjects/__init__.py
===================================================================
--- trunk/sandbox/rpy_nextgen/rpy/robjects/__init__.py  2008-03-08 15:34:09 UTC 
(rev 425)
+++ trunk/sandbox/rpy_nextgen/rpy/robjects/__init__.py  2008-03-08 15:35:22 UTC 
(rev 426)
@@ -95,9 +95,9 @@
            - an index is itself a vector of elements to select
         """
         for a in args:
-            if not isinstance(a, rinterface.SexpVector):
+            if not isinstance(a, Rvector):
                 raise(TypeError("Subset only take R vectors"))
-        res = rinterface.globalEnv.get("[")([self._sexp, ] + args, **kwargs)
+        res = r["["](*([self._sexp, ] + list(args)), **kwargs)
         return res
 
     def __getitem__(self, i):

Added: trunk/sandbox/rpy_nextgen/rpy/robjects/tests/testRobjects.py
===================================================================
--- trunk/sandbox/rpy_nextgen/rpy/robjects/tests/testRobjects.py                
                (rev 0)
+++ trunk/sandbox/rpy_nextgen/rpy/robjects/tests/testRobjects.py        
2008-03-08 15:35:22 UTC (rev 426)
@@ -0,0 +1,47 @@
+import unittest
+import rpy.robjects as robjects
+import array
+
+class RvectorTestCase(unittest.TestCase):
+
+    def testGetItem(self):
+        letters_R = robjects.r["letters"]
+        self.assertTrue(isinstance(letters_R, robjects.Rvector))
+        letters = (('a', 0), ('b', 1), ('c', 2), ('x', 23), ('y', 24), ('z', 
25))
+        for l, i in letters:
+            self.assertTrue(letters_R[i] == l)
+        
+        as_list_R = robjects.r["as.list"]
+        seq_R = robjects.r["seq"]
+        
+        mySeq = seq_R(0, 10)
+        
+        myList = as_list_R(mySeq)
+        
+        for i, li in enumerate(myList):
+            self.assertEquals(i, myList[i][0])
+
+    def testOperators(self):
+        seq_R = robjects.r["seq"]
+        mySeq = seq_R(0, 10)
+        mySeqAdd = mySeq + 2
+        for i, li in enumerate(mySeq):
+            self.assertEquals(i + 2, mySeqAdd[i])
+
+        mySeqAdd = mySeq + mySeq
+        for i, li in enumerate(mySeq):
+            self.assertEquals(mySeq[i] * 2, mySeqAdd[i])
+
+    def testSubset(self):
+        seq_R = robjects.r["seq"]
+        mySeq = seq_R(0, 10)
+        # R indexing starts at one
+        myIndex = robjects.Rvector(array.array('i', range(1, 11, 2)))
+
+        mySubset = mySeq.subset(myIndex)
+        for i, si in enumerate(myIndex):
+            self.assertEquals(mySeq[si-1], mySubset[i])
+
+
+if __name__ == '__main__':
+     unittest.main()


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
rpy-list mailing list
rpy-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rpy-list

Reply via email to