This file is indexed.

/usr/lib/python2.7/dist-packages/rpy2/robjects/tests/testRObject.py is in python-rpy2 2.8.5-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
import unittest
import rpy2.robjects as robjects
rinterface = robjects.rinterface
import array
import tempfile

class RObjectTestCase(unittest.TestCase):
    def testNew(self):

        identical = rinterface.baseenv["identical"]
        py_a = array.array('i', [1,2,3])
        self.assertRaises(ValueError, robjects.RObject, py_a)
        
        ri_v = rinterface.SexpVector(py_a, rinterface.INTSXP)
        ro_v = robjects.RObject(ri_v)

        self.assertTrue(identical(ro_v, ri_v)[0])

        del(ri_v)
        self.assertEqual(rinterface.INTSXP, ro_v.typeof)

    def testR_repr(self):
        obj = robjects.baseenv["pi"]
        s = obj.r_repr()
        self.assertTrue(s.startswith('3.14'))


    def testStr(self):
        prt = robjects.baseenv["pi"]
        s = prt.__str__()
        self.assertTrue(s.startswith('[1] 3.14'))


    def testRclass(self):
        self.assertEqual("character",
                          robjects.baseenv["letters"].rclass[0])
        self.assertEqual("numeric",
                          robjects.baseenv["pi"].rclass[0])
        self.assertEqual("function",
                          robjects.globalenv.get("help").rclass[0])

    def testRclass_set(self):
        x = robjects.r("1:3")
        old_class = x.rclass
        x.rclass = robjects.StrVector(("Foo", )) + x.rclass
        self.assertEqual("Foo",
                          x.rclass[0])
        self.assertEqual(old_class[0], x.rclass[1])

    def testRclass_set_usingstring(self):
        x = robjects.r("1:3")
        old_class = x.rclass
        x.rclass = "Foo"
        self.assertEqual("Foo",
                          x.rclass[0])
        
    def testDo_slot(self):
        self.assertEqual("A1.4, p. 270",
                          robjects.globalenv.get("BOD").do_slot("reference")[0])

    def testSlots(self):
        x = robjects.r('list(a=1,b=2,c=3)')
        s = x.slots
        self.assertEqual(1, len(s))
        self.assertEqual(('names', ), tuple(s.keys()))
        self.assertEqual(('a', 'b', 'c'), tuple(s['names']))

        s['names'] = 0
        self.assertEqual(1, len(s))
        self.assertEqual(('names', ), tuple(s.keys()))
        self.assertEqual((0, ), tuple(s['names']))
        
import pickle

class RObjectPicklingTestCase(unittest.TestCase):
    def testPickle(self):
        tmp_file = tempfile.NamedTemporaryFile()
        robj = robjects.baseenv["pi"]
        pickle.dump(robj, tmp_file)
        tmp_file.flush()
        tmp_file.seek(0)
        robj_again = pickle.load(tmp_file)
        self.assertTrue(robjects.baseenv["identical"](robj,
                                                      robj_again)[0])
        tmp_file.close()

import rpy2.robjects.methods

class RS4TestCase(unittest.TestCase):
    def setUp(self):
        robjects.r('setClass("A", representation(a="numeric", b="character"))')
        
    def tearDown(self):
        robjects.r('setClass("A")')
        
    def testSlotNames(self):
        ainstance = robjects.r('new("A", a=1, b="c")')
        self.assertEqual(('a', 'b'), tuple(ainstance.slotnames()))

    def testIsClass(self):
        ainstance = robjects.r('new("A", a=1, b="c")')
        self.assertFalse(ainstance.isclass("B"))
        self.assertTrue(ainstance.isclass("A"))

    def testValidObject(self):
        ainstance = robjects.r('new("A", a=1, b="c")')
        self.assertTrue(ainstance.validobject())
        #FIXME: test invalid objects ?

def suite():
    suite = unittest.TestLoader().loadTestsFromTestCase(RObjectTestCase)
    suite.addTest(unittest.TestLoader().loadTestsFromTestCase(RObjectPicklingTestCase))
    suite.addTest(unittest.TestLoader().loadTestsFromTestCase(RS4TestCase))
    return suite

if __name__ == '__main__':
     unittest.main()