alexgutteridge-rsruby 0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.txt +11 -0
- data/License.txt +504 -0
- data/Manifest.txt +39 -0
- data/README.txt +96 -0
- data/Rakefile.rb +153 -0
- data/examples/arrayfields.rb +52 -0
- data/examples/bioc.rb +35 -0
- data/examples/dataframe.rb +35 -0
- data/examples/erobj.rb +30 -0
- data/ext/Converters.c +667 -0
- data/ext/Converters.h +77 -0
- data/ext/R_eval.c +144 -0
- data/ext/R_eval.h +40 -0
- data/ext/extconf.rb +13 -0
- data/ext/robj.c +205 -0
- data/ext/rsruby.c +182 -0
- data/ext/rsruby.h +87 -0
- data/lib/rsruby.rb +302 -0
- data/lib/rsruby/dataframe.rb +107 -0
- data/lib/rsruby/erobj.rb +105 -0
- data/lib/rsruby/robj.rb +67 -0
- data/test/table.txt +4 -0
- data/test/tc_array.rb +59 -0
- data/test/tc_boolean.rb +30 -0
- data/test/tc_cleanup.rb +22 -0
- data/test/tc_eval.rb +21 -0
- data/test/tc_extensions.rb +43 -0
- data/test/tc_init.rb +11 -0
- data/test/tc_io.rb +57 -0
- data/test/tc_library.rb +20 -0
- data/test/tc_matrix.rb +23 -0
- data/test/tc_modes.rb +264 -0
- data/test/tc_robj.rb +84 -0
- data/test/tc_sigint.rb +10 -0
- data/test/tc_to_r.rb +145 -0
- data/test/tc_to_ruby.rb +153 -0
- data/test/tc_util.rb +19 -0
- data/test/tc_vars.rb +28 -0
- data/test/test_all.rb +22 -0
- metadata +103 -0
    
        data/test/tc_sigint.rb
    ADDED
    
    
    
        data/test/tc_to_r.rb
    ADDED
    
    | @@ -0,0 +1,145 @@ | |
| 1 | 
            +
            require 'test/unit'
         | 
| 2 | 
            +
            require 'rsruby'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            class Foo
         | 
| 5 | 
            +
            end
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            class Bar
         | 
| 8 | 
            +
              def initialize(x)
         | 
| 9 | 
            +
                @x = x
         | 
| 10 | 
            +
              end
         | 
| 11 | 
            +
              def as_r
         | 
| 12 | 
            +
                @x
         | 
| 13 | 
            +
              end
         | 
| 14 | 
            +
            end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            class TestToR < Test::Unit::TestCase
         | 
| 17 | 
            +
             | 
| 18 | 
            +
              def setup
         | 
| 19 | 
            +
                @r = RSRuby.instance
         | 
| 20 | 
            +
                #@r.gctorture(:on => true)
         | 
| 21 | 
            +
                RSRuby.set_default_mode(RSRuby::NO_DEFAULT)
         | 
| 22 | 
            +
              end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
              def test_robj_to_r
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                @r.c.autoconvert(RSRuby::NO_CONVERSION)
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                r1 = @r.c(4)
         | 
| 29 | 
            +
                r2 = @r.c('foo')
         | 
| 30 | 
            +
                r3 = @r.c(['a','b'])
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                assert(@r['=='].call(r1,4))
         | 
| 33 | 
            +
                assert(@r['=='].call(r2,'foo'))
         | 
| 34 | 
            +
                assert(@r['=='].call(r3,['a','b']))
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                assert_equal(@r.typeof(@r.eval),'closure')
         | 
| 37 | 
            +
                assert_equal(@r.typeof(@r.eval(@r.eval)), 'closure')
         | 
| 38 | 
            +
                assert_equal(@r.typeof(@r.eval([@r.eval,@r.eval])), 'list')
         | 
| 39 | 
            +
             | 
| 40 | 
            +
                #Same tests as above in basic mode - should be identical
         | 
| 41 | 
            +
                @r.c.autoconvert(RSRuby::BASIC_CONVERSION)
         | 
| 42 | 
            +
             | 
| 43 | 
            +
                r1 = @r.c(4)
         | 
| 44 | 
            +
                r2 = @r.c('foo')
         | 
| 45 | 
            +
                r3 = @r.c(['a','b'])
         | 
| 46 | 
            +
             | 
| 47 | 
            +
                assert(@r['=='].call(r1,4))
         | 
| 48 | 
            +
                assert(@r['=='].call(r2,'foo'))
         | 
| 49 | 
            +
                assert(@r['=='].call(r3,['a','b']))
         | 
| 50 | 
            +
             | 
| 51 | 
            +
                assert_equal(@r.typeof(@r.eval),'closure')
         | 
| 52 | 
            +
                assert_equal(@r.typeof(@r.eval(@r.eval)), 'closure')
         | 
| 53 | 
            +
                assert_equal(@r.typeof(@r.eval([@r.eval,@r.eval])), 'list')
         | 
| 54 | 
            +
             | 
| 55 | 
            +
              end
         | 
| 56 | 
            +
             | 
| 57 | 
            +
              def test_empty_array_to_null
         | 
| 58 | 
            +
                assert(@r.is_null([]))
         | 
| 59 | 
            +
              end
         | 
| 60 | 
            +
             | 
| 61 | 
            +
              def test_boolean_to_logical
         | 
| 62 | 
            +
                assert_equal(@r.c(true),true)
         | 
| 63 | 
            +
                assert_equal(@r.c(true).class,true.class)
         | 
| 64 | 
            +
                assert_equal(@r.c(false),false)
         | 
| 65 | 
            +
                assert_equal(@r.c(false).class,false.class)
         | 
| 66 | 
            +
              end
         | 
| 67 | 
            +
             | 
| 68 | 
            +
              def test_int_to_int
         | 
| 69 | 
            +
                @r.c.autoconvert(RSRuby::NO_CONVERSION)
         | 
| 70 | 
            +
                assert_equal(@r.typeof(@r.c(4)), 'integer')
         | 
| 71 | 
            +
                @r.c.autoconvert(RSRuby::BASIC_CONVERSION)
         | 
| 72 | 
            +
                assert_equal(@r.typeof(@r.c(4)), 'integer')
         | 
| 73 | 
            +
              end
         | 
| 74 | 
            +
             | 
| 75 | 
            +
              def test_float_to_float
         | 
| 76 | 
            +
                @r.c.autoconvert(RSRuby::NO_CONVERSION)
         | 
| 77 | 
            +
                assert_equal(@r.typeof(@r.c(4.5)), 'double')
         | 
| 78 | 
            +
                @r.c.autoconvert(RSRuby::BASIC_CONVERSION)
         | 
| 79 | 
            +
                assert_equal(@r.typeof(@r.c(4.5)), 'double')
         | 
| 80 | 
            +
              end
         | 
| 81 | 
            +
             | 
| 82 | 
            +
              def test_char_to_char
         | 
| 83 | 
            +
                @r.c.autoconvert(RSRuby::NO_CONVERSION)
         | 
| 84 | 
            +
                assert_equal(@r.typeof(@r.c('foo')), 'character')
         | 
| 85 | 
            +
                @r.c.autoconvert(RSRuby::BASIC_CONVERSION)
         | 
| 86 | 
            +
                assert_equal(@r.typeof(@r.c('foo')), 'character')
         | 
| 87 | 
            +
              end
         | 
| 88 | 
            +
             | 
| 89 | 
            +
              def test_hash_to_named_vector
         | 
| 90 | 
            +
                @r.c.autoconvert(RSRuby::NO_CONVERSION)    
         | 
| 91 | 
            +
                assert_equal(@r.typeof(@r.c(:foo => 5, :bar => 7)),'integer')
         | 
| 92 | 
            +
                
         | 
| 93 | 
            +
                assert(@r.attributes(@r.c(:foo => 5, :bar => 7))['names'].include?('foo'))
         | 
| 94 | 
            +
                assert(@r.attributes(@r.c(:foo => 5, :bar => 7))['names'].include?('bar'))
         | 
| 95 | 
            +
                #TODO - these fail because of the different calling semantics in
         | 
| 96 | 
            +
                #RSRuby
         | 
| 97 | 
            +
                #@r.c.autoconvert(RSRuby::BASIC_CONVERSION)    
         | 
| 98 | 
            +
                #assert_equal(@r.typeof(@r.c(:foo => 5, :bar => 7)),'integer')
         | 
| 99 | 
            +
                #assert(@r.attributes(@r.c(:foo => 5, :bar => 7))['names'].include?('foo'))
         | 
| 100 | 
            +
                #assert(@r.attributes(@r.c(:foo => 5, :bar => 7))['names'].include?('bar'))      
         | 
| 101 | 
            +
              end
         | 
| 102 | 
            +
             | 
| 103 | 
            +
              def test_array_to_vector
         | 
| 104 | 
            +
                @r.c.autoconvert(RSRuby::NO_CONVERSION)    
         | 
| 105 | 
            +
                assert_equal(@r.length(@r.c(1,2,3,4)),4)
         | 
| 106 | 
            +
                @r.c.autoconvert(RSRuby::BASIC_CONVERSION)    
         | 
| 107 | 
            +
                assert_equal(@r.length(@r.c(1,2,3,4)),4)
         | 
| 108 | 
            +
              end
         | 
| 109 | 
            +
             | 
| 110 | 
            +
              def test_not_convertible
         | 
| 111 | 
            +
                #TODO - range?
         | 
| 112 | 
            +
                assert_raises(ArgumentError){@r.c(1..10)}
         | 
| 113 | 
            +
              end
         | 
| 114 | 
            +
             | 
| 115 | 
            +
              def test_instances_not_convertible
         | 
| 116 | 
            +
                foo = Foo.new
         | 
| 117 | 
            +
                assert_raises(ArgumentError){@r.c(foo)}
         | 
| 118 | 
            +
               end
         | 
| 119 | 
            +
             | 
| 120 | 
            +
              def test_as_r_method
         | 
| 121 | 
            +
                @r.c.autoconvert(RSRuby::BASIC_CONVERSION)
         | 
| 122 | 
            +
             | 
| 123 | 
            +
                a = Bar.new(3)
         | 
| 124 | 
            +
                b = Bar.new('foo')
         | 
| 125 | 
            +
                d = Bar.new(@r.seq)
         | 
| 126 | 
            +
             | 
| 127 | 
            +
                assert_equal(@r.c(a),3)
         | 
| 128 | 
            +
                assert_equal(@r.c(b),'foo')
         | 
| 129 | 
            +
                assert_equal(@r.c(d).call(1,3),[1,2,3])
         | 
| 130 | 
            +
             | 
| 131 | 
            +
              end
         | 
| 132 | 
            +
             | 
| 133 | 
            +
              def test_max_int_to_r
         | 
| 134 | 
            +
                #TODO
         | 
| 135 | 
            +
              end
         | 
| 136 | 
            +
             | 
| 137 | 
            +
              def test_inf_to_r
         | 
| 138 | 
            +
                #TODO
         | 
| 139 | 
            +
              end
         | 
| 140 | 
            +
             | 
| 141 | 
            +
              def test_NaN_to_r
         | 
| 142 | 
            +
                #TODO
         | 
| 143 | 
            +
              end
         | 
| 144 | 
            +
             | 
| 145 | 
            +
            end
         | 
    
        data/test/tc_to_ruby.rb
    ADDED
    
    | @@ -0,0 +1,153 @@ | |
| 1 | 
            +
            require 'test/unit'
         | 
| 2 | 
            +
            require 'rsruby'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            class TestToRuby < Test::Unit::TestCase
         | 
| 5 | 
            +
              @@test_dir = File.expand_path File.dirname(__FILE__) 
         | 
| 6 | 
            +
              
         | 
| 7 | 
            +
              def setup
         | 
| 8 | 
            +
                @r = RSRuby.instance
         | 
| 9 | 
            +
                RSRuby.set_default_mode(RSRuby::NO_DEFAULT)
         | 
| 10 | 
            +
                @r.seq.autoconvert(RSRuby::BASIC_CONVERSION)
         | 
| 11 | 
            +
                @r.c.autoconvert(RSRuby::BASIC_CONVERSION)
         | 
| 12 | 
            +
              end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
              def test_null_to_nil
         | 
| 15 | 
            +
                assert(@r.attributes(@r.seq).nil?)
         | 
| 16 | 
            +
              end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
              def test_factor_to_list
         | 
| 19 | 
            +
                assert_equal(@r.factor([1,2,3,4]), ['1','2','3','4'])
         | 
| 20 | 
            +
                assert_equal(@r.factor([1,1,1,2]), ['1','1','1','2'])
         | 
| 21 | 
            +
                assert_equal(@r.factor(['a','b','c']), ['a','b','c'])
         | 
| 22 | 
            +
              end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
              def test_NA_int
         | 
| 25 | 
            +
                #The formula on right should equal smallest Fixnum
         | 
| 26 | 
            +
                #in current Ruby build (can vary)
         | 
| 27 | 
            +
                assert_equal(@r.NA, (-1)*(2**((1.size*8)-1)))
         | 
| 28 | 
            +
                assert(@r.is_na(@r.NA))
         | 
| 29 | 
            +
              end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
              def test_NA_string
         | 
| 32 | 
            +
                assert_equal(@r.eval_R('as.character(NA)'), 'NA')
         | 
| 33 | 
            +
                assert_equal(@r.as_character(@r.NA), 'NA')
         | 
| 34 | 
            +
                assert_equal(@r.as_character(@r.NaN), 'NaN')
         | 
| 35 | 
            +
              end
         | 
| 36 | 
            +
             | 
| 37 | 
            +
              def test_factor_NA
         | 
| 38 | 
            +
                assert_equal(@r.factor(@r.NA) , 'NA')
         | 
| 39 | 
            +
                assert_equal(@r.factor(@r.NaN), 'NaN')
         | 
| 40 | 
            +
                assert_equal(@r.factor(@r.as_character('NA')), 'NA')
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                xi = [1,2,@r.NA,@r.NaN,4]
         | 
| 43 | 
            +
                assert_equal(@r.factor(xi), ['1','2','NA','NaN','4'])
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                xd = [1.01,2.02,@r.NA,@r.NaN,4.04]
         | 
| 46 | 
            +
                assert_equal(@r.factor(xd), ['1.01','2.02','NA','NaN','4.04'])
         | 
| 47 | 
            +
             | 
| 48 | 
            +
              end
         | 
| 49 | 
            +
             | 
| 50 | 
            +
              def test_NA_list
         | 
| 51 | 
            +
             | 
| 52 | 
            +
                #TODO - RPy has commented out these tests as well. 
         | 
| 53 | 
            +
                #The conversion between NA/NaN and Ruby seems a little confused 
         | 
| 54 | 
            +
                #at the moment
         | 
| 55 | 
            +
             | 
| 56 | 
            +
                xi = [1,2,@r.NA,@r.NaN,4]
         | 
| 57 | 
            +
                assert_equal(@r.as_character(xi), ['1','2','NA','NaN','4'])
         | 
| 58 | 
            +
                #assert_equal(@r.as_numeric(xi)  , [1.0,2.0,@r.NA,@r.NaN,4.0])
         | 
| 59 | 
            +
                #assert_equal(@r.as_integer(xi)  , [1,2,@r.NA,@r.NaN,4])
         | 
| 60 | 
            +
                assert_equal(@r.factor(xi)      , ['1','2','NA','NaN','4'])
         | 
| 61 | 
            +
                assert_equal(@r.is_na(xi)       , [false, false, true, true, false])
         | 
| 62 | 
            +
             | 
| 63 | 
            +
                xd = [1.01,2.02,@r.NA,@r.NaN,4.04]
         | 
| 64 | 
            +
                assert_equal(@r.as_character(xd), ['1.01','2.02','NA','NaN','4.04'])
         | 
| 65 | 
            +
                #assert_equal(@r.as_numeric(xi)  , [1.01,2.01,@r.NA,@r.NaN,4.01])
         | 
| 66 | 
            +
                assert_equal(@r.as_integer(xd)  , [1,2,@r.NA,@r.NA,4])
         | 
| 67 | 
            +
                assert_equal(@r.factor(xd)      , ['1.01','2.02','NA','NaN','4.04'])
         | 
| 68 | 
            +
                assert_equal(@r.is_na(xd)       , [false, false, true, true, false])    
         | 
| 69 | 
            +
              end
         | 
| 70 | 
            +
             | 
| 71 | 
            +
              #TODO - table.txt?????????
         | 
| 72 | 
            +
              def test_dataframe_to_list
         | 
| 73 | 
            +
                @r.read_table.autoconvert(RSRuby::BASIC_CONVERSION)
         | 
| 74 | 
            +
                assert_equal(@r.read_table(@@test_dir+"/table.txt", {:header => 1}), 
         | 
| 75 | 
            +
                  {
         | 
| 76 | 
            +
                    'A' => ['X1','X2','X3'], 
         | 
| 77 | 
            +
                    'C' => [5,8,2], 
         | 
| 78 | 
            +
                    'B' => [4.0,7.0,6.0],
         | 
| 79 | 
            +
                    'D' => ['6','9','Foo']
         | 
| 80 | 
            +
                  })
         | 
| 81 | 
            +
              end
         | 
| 82 | 
            +
              
         | 
| 83 | 
            +
              def test_logical_to_boolean
         | 
| 84 | 
            +
                assert_equal(@r.TRUE,  true)
         | 
| 85 | 
            +
                assert_equal(@r.T,     true)
         | 
| 86 | 
            +
                assert_equal(@r.FALSE, false)
         | 
| 87 | 
            +
                assert_equal(@r.F,     false)
         | 
| 88 | 
            +
              end
         | 
| 89 | 
            +
             | 
| 90 | 
            +
              def test_int_to_int
         | 
| 91 | 
            +
                assert_equal(@r.as_integer(5),5)
         | 
| 92 | 
            +
                assert_equal(@r.as_integer(-3),-3)
         | 
| 93 | 
            +
              end
         | 
| 94 | 
            +
             | 
| 95 | 
            +
              def test_float_to_float
         | 
| 96 | 
            +
                assert_equal(@r.as_real(5),5.0)
         | 
| 97 | 
            +
                assert_equal(@r.as_real(3.1),3.1)
         | 
| 98 | 
            +
                assert_equal(@r.as_real(-3.1), -3.1)
         | 
| 99 | 
            +
              end
         | 
| 100 | 
            +
             | 
| 101 | 
            +
              def test_complex_to_complex
         | 
| 102 | 
            +
                #TODO - Think about Complex support
         | 
| 103 | 
            +
                assert_equal(@r.as_complex(Complex(1,2)), Complex(1,2))
         | 
| 104 | 
            +
                assert_equal(@r.as_complex(Complex(1.5,-3.4)), Complex(1.5,-3.4))
         | 
| 105 | 
            +
              end
         | 
| 106 | 
            +
             | 
| 107 | 
            +
              def test_str_to_str
         | 
| 108 | 
            +
                @r.as_data_frame.autoconvert(RSRuby::NO_CONVERSION)
         | 
| 109 | 
            +
                assert_equal(@r.class_(@r.as_data_frame([1,2,3])), 'data.frame')
         | 
| 110 | 
            +
              end
         | 
| 111 | 
            +
             | 
| 112 | 
            +
              def test_vector_length_one
         | 
| 113 | 
            +
                assert_equal(@r.c(1),1)
         | 
| 114 | 
            +
                assert_equal(@r.c('foo'),'foo')
         | 
| 115 | 
            +
              end
         | 
| 116 | 
            +
             | 
| 117 | 
            +
              def test_int_vector_to_array
         | 
| 118 | 
            +
                assert_equal(@r.seq(10),[1,2,3,4,5,6,7,8,9,10])
         | 
| 119 | 
            +
              end
         | 
| 120 | 
            +
             | 
| 121 | 
            +
              def test_float_vector_to_array
         | 
| 122 | 
            +
                assert_equal(@r.seq(1,2,{:by => 0.5}), [1.0,1.5,2.0])
         | 
| 123 | 
            +
              end
         | 
| 124 | 
            +
             | 
| 125 | 
            +
              def test_complex_vector_to_array
         | 
| 126 | 
            +
                assert_equal(@r.c(Complex(1,2),Complex(2,-3)),[Complex(1,2),Complex(2,-3)])
         | 
| 127 | 
            +
              end
         | 
| 128 | 
            +
             | 
| 129 | 
            +
              def test_str_vector_to_array
         | 
| 130 | 
            +
                assert_equal(@r.c('Foo','Bar'),['Foo','Bar'])
         | 
| 131 | 
            +
              end
         | 
| 132 | 
            +
             | 
| 133 | 
            +
              def test_list_to_array
         | 
| 134 | 
            +
                @r.list.autoconvert(RSRuby::BASIC_CONVERSION)
         | 
| 135 | 
            +
                assert_equal(@r.list(1,2.0,'foo'),[1,2.0,'foo'])
         | 
| 136 | 
            +
              end
         | 
| 137 | 
            +
             | 
| 138 | 
            +
              def test_named_vector_to_hash
         | 
| 139 | 
            +
                @r.c.autoconvert(RSRuby::NO_CONVERSION)
         | 
| 140 | 
            +
                a = @r.attr__(@r.c(1,2,3), 'names', ['foo','bar','baz'])
         | 
| 141 | 
            +
                assert_equal(a,{'foo'=>1,'bar'=>2,'baz'=>3})
         | 
| 142 | 
            +
                assert_equal(@r.list(:foo => 1, :bar => 2, :baz => 3),{'foo'=>1,'bar'=>2,'baz'=>3})
         | 
| 143 | 
            +
              end
         | 
| 144 | 
            +
             | 
| 145 | 
            +
              def test_vector_coercion
         | 
| 146 | 
            +
                @r.c.autoconvert(RSRuby::NO_CONVERSION)
         | 
| 147 | 
            +
                assert_equal(@r.typeof(@r.c(1,2,3)), 'integer')
         | 
| 148 | 
            +
                assert_equal(@r.typeof(@r.c(1,2.0,3)), 'double')
         | 
| 149 | 
            +
                assert_equal(@r.typeof(@r.c(1,Complex(2,3),3)), 'complex')
         | 
| 150 | 
            +
                assert_equal(@r.typeof(@r.c(1,'foo',3)), 'character')    
         | 
| 151 | 
            +
              end
         | 
| 152 | 
            +
             | 
| 153 | 
            +
            end
         | 
    
        data/test/tc_util.rb
    ADDED
    
    | @@ -0,0 +1,19 @@ | |
| 1 | 
            +
            require 'test/unit'
         | 
| 2 | 
            +
            require 'rsruby'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            class TestUtil < Test::Unit::TestCase
         | 
| 5 | 
            +
             | 
| 6 | 
            +
              def test_as_list
         | 
| 7 | 
            +
                #TODO
         | 
| 8 | 
            +
                #assert_equal($r.as_lis
         | 
| 9 | 
            +
              end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
              def test_with_mode
         | 
| 12 | 
            +
                #TODO
         | 
| 13 | 
            +
              end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
              def test_r_code
         | 
| 16 | 
            +
                #TODO - Not sure about this. I use r.eval_R('')
         | 
| 17 | 
            +
                #Not really a util
         | 
| 18 | 
            +
              end
         | 
| 19 | 
            +
            end
         | 
    
        data/test/tc_vars.rb
    ADDED
    
    | @@ -0,0 +1,28 @@ | |
| 1 | 
            +
            require 'test/unit'
         | 
| 2 | 
            +
            require 'rsruby'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            class TestVars < Test::Unit::TestCase
         | 
| 5 | 
            +
             | 
| 6 | 
            +
              def setup
         | 
| 7 | 
            +
                @r = RSRuby.instance
         | 
| 8 | 
            +
              end
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              def test_get_vars
         | 
| 11 | 
            +
                @r.eval_R("f<-function(x) x+1")
         | 
| 12 | 
            +
                @r.assign('x',100)
         | 
| 13 | 
            +
                @r.assign('v',(1..10).to_a)
         | 
| 14 | 
            +
                #There is a difference here between RPy and us
         | 
| 15 | 
            +
                #a final hash argument is treated as named arguments
         | 
| 16 | 
            +
                #to the original function call (assign) not as a list
         | 
| 17 | 
            +
                #to be given to the function
         | 
| 18 | 
            +
                @r.c.autoconvert(RSRuby::NO_CONVERSION)
         | 
| 19 | 
            +
                @r.assign('d',@r.c({'a' => 1, 'b' => 2}))
         | 
| 20 | 
            +
                @r.c.autoconvert(RSRuby::BASIC_CONVERSION)
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                assert_equal(@r.x, 100)
         | 
| 23 | 
            +
                assert_equal(@r.v, (1..10).to_a)
         | 
| 24 | 
            +
                assert_equal(@r.d, @r.c({'a' => 1, 'b' => 2}))
         | 
| 25 | 
            +
                assert_equal(@r.f.class, @r.c.class)
         | 
| 26 | 
            +
              end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
            end
         | 
    
        data/test/test_all.rb
    ADDED
    
    | @@ -0,0 +1,22 @@ | |
| 1 | 
            +
            #Tests all test cases for rsruby
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'test/unit'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            require 'tc_array'
         | 
| 6 | 
            +
            require 'tc_boolean'
         | 
| 7 | 
            +
            require 'tc_cleanup'
         | 
| 8 | 
            +
            require 'tc_eval'
         | 
| 9 | 
            +
            require 'tc_extensions'
         | 
| 10 | 
            +
            require 'tc_init'
         | 
| 11 | 
            +
            #require 'tc_io'
         | 
| 12 | 
            +
            require 'tc_library'
         | 
| 13 | 
            +
            require 'tc_matrix'
         | 
| 14 | 
            +
            require 'tc_modes'
         | 
| 15 | 
            +
            require 'tc_robj'
         | 
| 16 | 
            +
            #require 'tc_sigint'
         | 
| 17 | 
            +
            require 'tc_to_ruby'
         | 
| 18 | 
            +
            require 'tc_to_r'
         | 
| 19 | 
            +
            require 'tc_util'
         | 
| 20 | 
            +
            require 'tc_vars'
         | 
| 21 | 
            +
             | 
| 22 | 
            +
             | 
    
        metadata
    ADDED
    
    | @@ -0,0 +1,103 @@ | |
| 1 | 
            +
            --- !ruby/object:Gem::Specification 
         | 
| 2 | 
            +
            name: alexgutteridge-rsruby
         | 
| 3 | 
            +
            version: !ruby/object:Gem::Version 
         | 
| 4 | 
            +
              version: "0.5"
         | 
| 5 | 
            +
            platform: ruby
         | 
| 6 | 
            +
            authors: 
         | 
| 7 | 
            +
            - Alex Gutteridge
         | 
| 8 | 
            +
            autorequire: 
         | 
| 9 | 
            +
            bindir: bin
         | 
| 10 | 
            +
            cert_chain: []
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            date: 2008-11-19 00:00:00 -08:00
         | 
| 13 | 
            +
            default_executable: 
         | 
| 14 | 
            +
            dependencies: []
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            description: RSRuby is a bridge library for Ruby giving Ruby developers access to the full R statistical programming environment. RSRuby embeds a full R interpreter inside the running Ruby script, allowing R methods to be called and data passed between the Ruby script and the R interpreter. Most data conversion is handled automatically, but user-definable conversion routines can also be written to handle any R or Ruby class.
         | 
| 17 | 
            +
            email: ag357@cam.ac.uk
         | 
| 18 | 
            +
            executables: []
         | 
| 19 | 
            +
             | 
| 20 | 
            +
            extensions: 
         | 
| 21 | 
            +
            - ext/extconf.rb
         | 
| 22 | 
            +
            extra_rdoc_files: 
         | 
| 23 | 
            +
            - README.txt
         | 
| 24 | 
            +
            - History.txt
         | 
| 25 | 
            +
            - License.txt
         | 
| 26 | 
            +
            - examples/bioc.rb
         | 
| 27 | 
            +
            - examples/dataframe.rb
         | 
| 28 | 
            +
            - examples/arrayfields.rb
         | 
| 29 | 
            +
            - examples/erobj.rb
         | 
| 30 | 
            +
            files: 
         | 
| 31 | 
            +
            - History.txt
         | 
| 32 | 
            +
            - License.txt
         | 
| 33 | 
            +
            - Manifest.txt
         | 
| 34 | 
            +
            - README.txt
         | 
| 35 | 
            +
            - Rakefile.rb
         | 
| 36 | 
            +
            - examples/arrayfields.rb
         | 
| 37 | 
            +
            - examples/bioc.rb
         | 
| 38 | 
            +
            - examples/dataframe.rb
         | 
| 39 | 
            +
            - examples/erobj.rb
         | 
| 40 | 
            +
            - ext/Converters.c
         | 
| 41 | 
            +
            - ext/Converters.h
         | 
| 42 | 
            +
            - ext/R_eval.c
         | 
| 43 | 
            +
            - ext/R_eval.h
         | 
| 44 | 
            +
            - ext/extconf.rb
         | 
| 45 | 
            +
            - ext/robj.c
         | 
| 46 | 
            +
            - ext/rsruby.c
         | 
| 47 | 
            +
            - ext/rsruby.h
         | 
| 48 | 
            +
            - lib/rsruby.rb
         | 
| 49 | 
            +
            - lib/rsruby/dataframe.rb
         | 
| 50 | 
            +
            - lib/rsruby/erobj.rb
         | 
| 51 | 
            +
            - lib/rsruby/robj.rb
         | 
| 52 | 
            +
            - test/table.txt
         | 
| 53 | 
            +
            - test/tc_array.rb
         | 
| 54 | 
            +
            - test/tc_boolean.rb
         | 
| 55 | 
            +
            - test/tc_cleanup.rb
         | 
| 56 | 
            +
            - test/tc_eval.rb
         | 
| 57 | 
            +
            - test/tc_extensions.rb
         | 
| 58 | 
            +
            - test/tc_init.rb
         | 
| 59 | 
            +
            - test/tc_io.rb
         | 
| 60 | 
            +
            - test/tc_library.rb
         | 
| 61 | 
            +
            - test/tc_matrix.rb
         | 
| 62 | 
            +
            - test/tc_modes.rb
         | 
| 63 | 
            +
            - test/tc_robj.rb
         | 
| 64 | 
            +
            - test/tc_sigint.rb
         | 
| 65 | 
            +
            - test/tc_to_r.rb
         | 
| 66 | 
            +
            - test/tc_to_ruby.rb
         | 
| 67 | 
            +
            - test/tc_util.rb
         | 
| 68 | 
            +
            - test/tc_vars.rb
         | 
| 69 | 
            +
            - test/test_all.rb
         | 
| 70 | 
            +
            has_rdoc: true
         | 
| 71 | 
            +
            homepage: http://web.kuicr.kyoto-u.ac.jp/~alexg/rsruby/
         | 
| 72 | 
            +
            post_install_message: 
         | 
| 73 | 
            +
            rdoc_options: 
         | 
| 74 | 
            +
            - --exclude
         | 
| 75 | 
            +
            - test/*
         | 
| 76 | 
            +
            - --main
         | 
| 77 | 
            +
            - README.txt
         | 
| 78 | 
            +
            - --inline-source
         | 
| 79 | 
            +
            require_paths: 
         | 
| 80 | 
            +
            - lib
         | 
| 81 | 
            +
            - test
         | 
| 82 | 
            +
            - ext
         | 
| 83 | 
            +
            required_ruby_version: !ruby/object:Gem::Requirement 
         | 
| 84 | 
            +
              requirements: 
         | 
| 85 | 
            +
              - - ">="
         | 
| 86 | 
            +
                - !ruby/object:Gem::Version 
         | 
| 87 | 
            +
                  version: "0"
         | 
| 88 | 
            +
              version: 
         | 
| 89 | 
            +
            required_rubygems_version: !ruby/object:Gem::Requirement 
         | 
| 90 | 
            +
              requirements: 
         | 
| 91 | 
            +
              - - ">="
         | 
| 92 | 
            +
                - !ruby/object:Gem::Version 
         | 
| 93 | 
            +
                  version: "0"
         | 
| 94 | 
            +
              version: 
         | 
| 95 | 
            +
            requirements: []
         | 
| 96 | 
            +
             | 
| 97 | 
            +
            rubyforge_project: rsruby
         | 
| 98 | 
            +
            rubygems_version: 1.2.0
         | 
| 99 | 
            +
            signing_key: 
         | 
| 100 | 
            +
            specification_version: 2
         | 
| 101 | 
            +
            summary: RSRuby is a bridge library for Ruby giving Ruby developers access to the full R statistical programming environment. RSRuby embeds a full R interpreter inside the running Ruby script, allowing R methods to be called and data passed between the Ruby script and the R interpreter. Most data conversion is handled automatically, but user-definable conversion routines can also be written to handle any R or Ruby class.
         | 
| 102 | 
            +
            test_files: 
         | 
| 103 | 
            +
            - test/test_all.rb
         |