matlab-ruby 1.0.0

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.
@@ -0,0 +1,79 @@
1
+ $:.unshift "../../../lib"
2
+ require 'test/unit'
3
+ require 'matlab'
4
+ require 'matlab/driver/native/conversions'
5
+ require 'rubygems'
6
+ require 'mocha'
7
+
8
+ class ConversionsTest < Test::Unit::TestCase
9
+ def test_string_to_matlab_to_ruby
10
+ assert_equal "foo", "foo".to_matlab.to_ruby
11
+ end
12
+
13
+ def test_true_to_matlab_to_ruby
14
+ assert_equal true, true.to_matlab.to_ruby
15
+ end
16
+
17
+ def test_false_to_matlab_to_ruby
18
+ assert_equal false, false.to_matlab.to_ruby
19
+ end
20
+
21
+ def test_nil_to_matlab_to_ruby
22
+ assert_equal nil, nil.to_matlab.to_ruby
23
+ end
24
+
25
+ def test_float_to_ruby
26
+ assert_nil nil.to_matlab.to_ruby
27
+ assert_equal 12.345, 12.345.to_ruby
28
+ end
29
+
30
+ def test_numeric_to_matlab_to_ruby
31
+ assert_equal 12345.0, 12345.to_matlab.to_ruby
32
+ assert_equal 12.345, 12.345.to_matlab.to_ruby
33
+ end
34
+
35
+ def test_array_to_cell_matrix
36
+ cell_matrix = Matlab::CellMatrix.new(9, 1)
37
+ 9.times { |i| cell_matrix[i, 0] = (i > 4 ? i : i.to_s) }
38
+ cell_matrix[0, 0] = true
39
+ cell_matrix[4, 0] = nil
40
+ cell_matrix[8, 0] = false
41
+
42
+ assert_equal cell_matrix, [true, "1", "2", ["3", nil, 5], 6, 7, false].to_cell_matrix
43
+ end
44
+
45
+ def test_matlab_matrix_to_matlab_to_ruby
46
+ matrix = Matlab::Matrix.new(3, 3)
47
+ 3.times { |m| 3.times { |n| matrix[m, n] = rand } }
48
+ matrix[1, 1] = nil
49
+
50
+ assert_equal matrix, matrix.to_matlab.to_ruby
51
+ end
52
+
53
+ def test_matlab_cell_matrix_to_matlab_to_ruby
54
+ cell_matrix = Matlab::CellMatrix.new(3, 3)
55
+ 3.times { |m| 3.times { |n| cell_matrix[m, n] = (n == 1 ? rand.to_s : rand) } }
56
+ cell_matrix[0, 0] = true
57
+ cell_matrix[1, 1] = nil
58
+ cell_matrix[2, 2] = false
59
+
60
+ assert_equal cell_matrix, cell_matrix.to_matlab.to_ruby
61
+ end
62
+
63
+ def test_matlab_struct_matrix_to_matlab_to_ruby
64
+ cats = Matlab::StructMatrix.new(17, 1, "name")
65
+ 17.times { |m| 1.times { |n| cats[m, n]["name"] = "Kitty #{m}.#{n}" } }
66
+
67
+ struct_matrix = Matlab::StructMatrix.new(17, 1, "name", "age", "married", "cats", "car")
68
+ 17.times do |m|
69
+ 1.times do |n|
70
+ struct_matrix[m, n]["name"] = "Bob #{m}.#{n}"
71
+ struct_matrix[m, n]["age"] = (rand * 100).to_i
72
+ struct_matrix[m, n]["married"] = (rand > 0.5)
73
+ struct_matrix[m, n]["cats"] = cats
74
+ struct_matrix[m, n]["car"] = nil
75
+ end
76
+ end
77
+ assert_equal struct_matrix, struct_matrix.to_matlab.to_ruby
78
+ end
79
+ end
@@ -0,0 +1,41 @@
1
+ $:.unshift "../../../lib"
2
+ require 'test/unit'
3
+ require 'matlab'
4
+ require 'matlab/driver/native/driver'
5
+ require 'rubygems'
6
+ require 'mocha'
7
+
8
+ class DriverTest < Test::Unit::TestCase
9
+ include Matlab::Driver::Native
10
+
11
+ def setup
12
+ @driver = Driver.new
13
+ end
14
+
15
+ def test_open
16
+ API.expects(:engOpen).with("matfoo")
17
+ @driver.open("matfoo")
18
+ end
19
+
20
+ def test_close
21
+ API.expects(:engClose).with("engine")
22
+ @driver.close("engine")
23
+ end
24
+
25
+ def test_eval_string
26
+ API.expects(:engEvalString).with("engine", "string")
27
+ @driver.eval_string("engine", "string")
28
+ end
29
+
30
+ def test_get_variable
31
+ variable = mock(:to_ruby => "bar")
32
+ API.expects(:engGetVariable).with("engine", "foo").returns(variable)
33
+ assert_equal "bar", @driver.get_variable("engine", "foo")
34
+ end
35
+
36
+ def test_put_variable
37
+ variable = mock(:to_matlab => "bar")
38
+ API.expects(:engPutVariable).with("engine", "foo", "bar")
39
+ @driver.put_variable("engine", "foo", variable)
40
+ end
41
+ end
@@ -0,0 +1,77 @@
1
+ require 'test/unit'
2
+ require 'matlab'
3
+ require 'matlab/engine'
4
+ require 'rubygems'
5
+ require 'mocha'
6
+
7
+ class Driver
8
+ end
9
+
10
+ class EngineTest_Init < Test::Unit::TestCase
11
+ def test_new
12
+ driver = mock()
13
+ driver.expects(:open).with("matfoo")
14
+ Driver.expects(:new).returns(driver)
15
+
16
+ engine = Matlab::Engine.new("matfoo", :driver => Driver)
17
+ end
18
+
19
+ def test_new_with_invalid_driver
20
+ exception = assert_raise(LoadError) do
21
+ engine = Matlab::Engine.new("matfoo", :driver => "foo")
22
+ end
23
+ assert_equal "no such file to load -- matlab/driver/foo/driver", exception.message
24
+
25
+ exception = assert_raise(LoadError) do
26
+ engine = Matlab::Engine.new("matfoo", :driver => :bar)
27
+ end
28
+ assert_equal "no such file to load -- matlab/driver/bar/driver", exception.message
29
+ end
30
+
31
+ def test_new_with_native_driver
32
+ begin
33
+ require 'matlab_api'
34
+
35
+ Matlab::Driver::Native::API.expects(:engOpen).with("matfoo")
36
+ assert_nothing_raised do
37
+ engine = Matlab::Engine.new("matfoo")
38
+ end
39
+ rescue LoadError => e
40
+ exception = assert_raise(RuntimeError) do
41
+ engine = Matlab::Engine.new("matfoo")
42
+ end
43
+ assert_equal "no driver for matlab found", exception.message
44
+ end
45
+ end
46
+ end
47
+
48
+ class EngineTest < Test::Unit::TestCase
49
+ def setup
50
+ @driver = mock()
51
+ @handle = mock()
52
+ @driver.expects(:open).with("matfoo").returns(@handle)
53
+ Driver.expects(:new).returns(@driver)
54
+
55
+ @engine = Matlab::Engine.new("matfoo", :driver => Driver)
56
+ end
57
+
58
+ def test_eval_string
59
+ @driver.expects(:eval_string).with(@handle, "z = x * y")
60
+ @engine.eval_string "z = x * y"
61
+ end
62
+
63
+ def test_close
64
+ @driver.expects(:close).with(@handle)
65
+ @engine.close
66
+ end
67
+
68
+ def test_method_missing_get
69
+ @driver.expects(:get_variable).with(@handle, "x")
70
+ @engine.x
71
+ end
72
+
73
+ def test_method_missing_put
74
+ @driver.expects(:put_variable).with(@handle, "y", 123.456)
75
+ @engine.y = 123.456
76
+ end
77
+ end
metadata ADDED
@@ -0,0 +1,76 @@
1
+ --- !ruby/object:Gem::Specification
2
+ rubygems_version: 0.9.2
3
+ specification_version: 1
4
+ name: matlab-ruby
5
+ version: !ruby/object:Gem::Version
6
+ version: 1.0.0
7
+ date: 2007-04-08 00:00:00 -06:00
8
+ summary: A Ruby interface to the Matlab interpreted language.
9
+ require_paths:
10
+ - lib
11
+ - ext
12
+ email:
13
+ - jonathan.younger@lipomics.com
14
+ homepage: http://matlab-ruby.rubyforge.org/
15
+ rubyforge_project: matlab-ruby
16
+ description: "== USAGE: require 'matlab' engine = Matlab::Engine.new engine.x = 123.456 engine.y = 789.101112 engine.eval_string \"z = x * y\" engine.z matrix = Matlab::Matrix.new(20, 400) 20.times { |m| 400.times { |n| matrix[m, n] = rand } } engine.m = matrix engine.eval_string \"save '/tmp/20_x_400_matrix\" engine.close == REQUIREMENTS: * MATLAB * GCC or some other compiler to build the included extension * SWIG (If you want to recompile the SWIG wrapper) * Mocha (For testing only)"
17
+ autorequire:
18
+ default_executable:
19
+ bindir: bin
20
+ has_rdoc: true
21
+ required_ruby_version: !ruby/object:Gem::Version::Requirement
22
+ requirements:
23
+ - - ">"
24
+ - !ruby/object:Gem::Version
25
+ version: 0.0.0
26
+ version:
27
+ platform: ruby
28
+ signing_key:
29
+ cert_chain:
30
+ post_install_message:
31
+ authors:
32
+ - Jonathan Younger
33
+ files:
34
+ - History.txt
35
+ - LICENSE.txt
36
+ - Manifest.txt
37
+ - README.txt
38
+ - Rakefile
39
+ - ext/matlab_api/MANIFEST
40
+ - ext/matlab_api/extconf.rb
41
+ - ext/matlab_api/matlab_api.i
42
+ - ext/matlab_api/matlab_api_wrap.c
43
+ - lib/matlab.rb
44
+ - lib/matlab/driver/native/conversions.rb
45
+ - lib/matlab/driver/native/driver.rb
46
+ - lib/matlab/engine.rb
47
+ - lib/matlab/matrix.rb
48
+ - lib/matlab/version.rb
49
+ - setup.rb
50
+ - test/driver/native/test_conversions.rb
51
+ - test/driver/native/test_driver.rb
52
+ - test/test_engine.rb
53
+ test_files:
54
+ - test/driver/native/test_conversions.rb
55
+ - test/driver/native/test_driver.rb
56
+ - test/test_engine.rb
57
+ rdoc_options: []
58
+
59
+ extra_rdoc_files: []
60
+
61
+ executables: []
62
+
63
+ extensions:
64
+ - ext/matlab_api/extconf.rb
65
+ requirements: []
66
+
67
+ dependencies:
68
+ - !ruby/object:Gem::Dependency
69
+ name: hoe
70
+ version_requirement:
71
+ version_requirements: !ruby/object:Gem::Version::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: 1.2.0
76
+ version: