[#39954] Fwd: [ruby-cvs:33451] Ruby:r26235 (trunk): * trace.h: new file. wraps tracing mechanisms. — SASADA Koichi <ko1@...>
ささだです.
2010/1/4 SASADA Koichi <ko1@atdot.net>:
ささだです.
2010/1/4 SASADA Koichi <ko1@atdot.net>:
ささだです.
[#39975] [Feature #2571] 文字列のハミング距離 — Kenta Murata <redmine@...>
Feature #2571: 文字列のハミング距離
まつもと ゆきひろです
=1B$B$`$i$?$G$9!#=1B(B
成瀬です。
まつもと ゆきひろです
成瀬です。
成瀬です。
[#39978] "require 'logge'" fails on ruby 1.8.7 from http://github.com/shyouhei/ruby — MOROHASHI Kyosuke <moronatural@...>
諸橋です。
卜部です。
もろはしです。
いまいち問題を把握してない可能性もありますが、gitが$Id$展開しないからコケるんだけどgitからcloneしてもそのまま動くようにしてくれよ、ということでいいですかね?
[#39987] [Bug #2575] a test fail for IO#readpartial is broken on *BSD — Takahiro Kambe <redmine@...>
Bug #2575: a test fail for IO#readpartial is broken on *BSD
[#40003] [Feature #2579] Net::HTTP.start("www.ruby-lang.org", use_ssl: true) で SSL 利用を可能に — Yui NARUSE <redmine@...>
Feature #2579: Net::HTTP.start("www.ruby-lang.org", use_ssl: true) で SSL 利用を可能に
[#40004] [Bug:trunk] require_relative depends on current directory — Yusuke ENDOH <mame@...>
遠藤です。
チケット #2581 が更新されました。 (by Yusuke Endoh)
2010年3月7日0:30 Yusuke Endoh <redmine@ruby-lang.org>:
>> 1.9.2 では $: から "." が消えるため require_relative の需要が
遠藤です。
[#40017] Linuxで bm_vm3_thread_mutex.rb が刺さってしまい実行が完了しない — KOSAKI Motohiro <kosaki.motohiro@...>
kosakiです
遠藤です。
2010年1月12日0:20 Yusuke ENDOH <mame@tsg.ne.jp>:
[#40023] [Bug:trunk] ENV.[]= should raise an error on failure — "Akinori MUSHA" <knu@...>
現在 ENV.[]= は setenv(3) や putenv(3) の返り値を見ていませんが、
[#40059] [Bug:1.8] block.callの中でsuperできない — Kouhei Sutou <kou@...>
須藤です。
[#40063] [BUG] marshaling Time.utc_offset — Nobuyoshi Nakada <nobu@...>
なかだです。
2010年1月13日13:27 Nobuyoshi Nakada <nobu@ruby-lang.org>:
なかだです。
2010年1月14日13:01 Nobuyoshi Nakada <nobu@ruby-lang.org>:
Tanaka Akira =E3=81=95=E3=82=93=E3=81=AF=E6=9B=B8=E3=81=8D=E3=81=BE=E3=81=
[#40074] [Bug #2603] NetBSD 5.0以降でpthreadの処理に由来する不具合 — Takahiro Kambe <redmine@...>
Bug #2603: NetBSD 5.0以降でpthreadの処理に由来する不具合
NTTレゾナントの三浦です。不完全なpatchを書いてすみません。
こんばんは。
kosakiです
こんにちは。
こんにちは
At Fri, 15 Jan 2010 12:25:52 +0900, Takahiro Kambe wrote:
[#40077] [Bug #2604] test_dsa_sign_verify() in test/openssl/test_ec.rb failes — Takahiro Kambe <redmine@...>
Bug #2604: test_dsa_sign_verify() in test/openssl/test_ec.rb failes
MjAxMC8xLzE0IFRha2FoaXJvIEthbWJlIDxyZWRtaW5lQHJ1YnktbGFuZy5vcmc+Ogo+IBskQiQz
In message <a67aadf81001161911j7f5fbd1bwca86375b70cf514f@mail.gmail.com>
[#40130] arm9プロセッサ用にビルド中のトラブル — hirohito <hirohito-ml@...>
東と申します。
[#40153] [Bug:trunk] three bugs of Matrix::Scalar — Yusuke ENDOH <mame@...>
連投すみません。
けいじゅ@いしつかです.
遠藤です。
けいじゅ@いしつかです.
まつもと ゆきひろです
けいじゅ@いしつかです.
まつもと ゆきひろです
遠藤です。
けいじゅ@いしつかです.
遠藤です。
けいじゅ@いしつかです.
[#40162] [Bug #2658] rubyspec: Ruby character strings interpolates the return value of Object#inspect, without ivars, if Object#to_s does not return a String instance ERROR — Yusuke Endoh <redmine@...>
Bug #2658: rubyspec: Ruby character strings interpolates the return value of Object#inspect, without ivars, if Object#to_s does not return a String instance ERROR
2010年1月26日20:39 Yusuke Endoh <redmine@ruby-lang.org>:
2010年1月26日21:49 Tanaka Akira <akr@fsij.org>:
まつもと ゆきひろです
On 1/27/10 6:29 PM, Yukihiro Matsumoto wrote:
遠藤です。
[#40165] [Bug:1.8] compatibility issue of BigDecimal#** and #power — Yusuke ENDOH <mame@...>
まつもとさんか卜部さん
[#40168] [Bug #2662] BigDecimal#ceil, etc. should not return Integer — Yusuke Endoh <redmine@...>
Bug #2662: BigDecimal#ceil, etc. should not return Integer
ちょっと試してみました。
まつもと ゆきひろです
[#40169] [Bug #2664] Failure: test_segv_test(TestRubyOptions) — Kazuhiro NISHIYAMA <redmine@...>
Bug #2664: Failure: test_segv_test(TestRubyOptions)
[#40200] [Feature #2673] the length for an enumerator generated by Array#permutation and Array#combination — Kenta Murata <redmine@...>
Feature #2673: the length for an enumerator generated by Array#permutation and Array#combination
チケット #2673 が更新されました。 (by _ wanabe)
遠藤です。
=1B$B$`$i$?$G$9!#=1B(B
チケット #2673 が更新されました。 (by Marc-Andre Lafortune)
[#40202] [Feature:trunk] RubyVM::InstructionSequence to accept IOs — Urabe Shyouhei <shyouhei@...>
RipperはRipper#initializeでIOを受け付けますが、ISeqはそうはなっていません。
[#40209] [Bug:trunk] behavior change of some methods of Date between 1.8 and 1.9 — Yusuke ENDOH <mame@...>
ふなばさん
[#40221] [Bug:trunk] rubyspec: SimpleDelegator when frozen creates a frozen clone ERROR — Yusuke ENDOH <mame@...>
まつもとさん、または lib/delegator.rb についてわかる誰か
チケット #2679 が更新されました。 (by Yusuke Endoh)
[#40241] [Feature:trunk] rubyspec: Vector.each2 given one argument returns self when given a block FAILED — Yusuke ENDOH <mame@...>
いしつかさん
[#40265] MonitorMixin::ConditionVariable#wait timeout — Tanaka Akira <akr@...>
手元の Ubuntu 9.10 の環境で Ruby 1.9.2 を make test-all すると
前田です。
前田さん、akr さん
2010年5月5日9:32 Yusuke ENDOH <mame@tsg.ne.jp>:
遠藤です。
2010年5月5日11:46 Yusuke ENDOH <mame@tsg.ne.jp>:
遠藤です。
小崎です
2010年5月5日16:48 KOSAKI Motohiro <kosaki.motohiro@gmail.com>:
2010年5月5日13:22 Yusuke ENDOH <mame@tsg.ne.jp>:
遠藤です。
2010年5月6日19:58 Yusuke ENDOH <mame@tsg.ne.jp>:
遠藤です。
遠藤です。
2010年5月6日23:08 Yusuke ENDOH <mame@tsg.ne.jp>:
2010年5月6日23:15 KOSAKI Motohiro <kosaki.motohiro@gmail.com>:
遠藤です。
kosakiです
遠藤です。
樽家です。
遠藤です。
樽家です。
2010年5月11日19:17 Masaya TARUI <tarui@prx.jp>:
2010年5月12日23:39 Tanaka Akira <akr@fsij.org>:
2010年5月13日22:19 Masaya TARUI <tarui@prx.jp>:
[#40269] [Feature #2695] Supported Platforms — Kazuhiro NISHIYAMA <redmine@...>
Feature #2695: Supported Platforms
チケット #2695 が更新されました。 (by Yusuke Endoh)
2010/3/26 Yusuke Endoh <redmine@ruby-lang.org>:
遠藤です。
2010/3/26 Yusuke ENDOH <mame@tsg.ne.jp>:
遠藤です。
=1B$B$`$i$?$G$9!#=1B(B
[ruby-dev:40189] Re: [Bug:trunk] three bugs of Matrix::Scalar
遠藤です。
2010年1月27日19:50 石塚圭樹 <keiju@ishitsuka.com>:
> 一連のメイルをまとめると以下のパッチではいかがでしょう?
いいと思いました。
ひとつだけ気になったこと。ErrOperationNotImplement よりは
ErrOperationNotImplemented の方がよくないでしょうか。
これがコミットされたら、以下のテストをコミットしたいと思います。
diff --git a/test/matrix/test_matrix.rb b/test/matrix/test_matrix.rb
index 6b9b587..526d7a3 100644
--- a/test/matrix/test_matrix.rb
+++ b/test/matrix/test_matrix.rb
@@ -10,6 +10,15 @@ class TestMatrix < Test::Unit::TestCase
@n1 = Matrix[[2,3,4], [5,6,7]]
end
+ def test_matrix
+ assert_equal(1, @m1[0, 0])
+ assert_equal(2, @m1[0, 1])
+ assert_equal(3, @m1[0, 2])
+ assert_equal(4, @m1[1, 0])
+ assert_equal(5, @m1[1, 1])
+ assert_equal(6, @m1[1, 2])
+ end
+
def test_identity
assert_same @m1, @m1
assert_not_same @m1, @m2
@@ -153,4 +162,297 @@ class TestMatrix < Test::Unit::TestCase
assert_equal(45, Matrix[[7,6], [3,9]].determinant)
assert_equal(-18, Matrix[[2,0,1],[0,-2,2],[1,2,3]].determinant)
end
+
+ def test_new_matrix
+ assert_raise(TypeError) { Matrix[Object.new] }
+ o = Object.new
+ def o.to_ary; [1,2,3]; end
+ assert_equal(@m1, Matrix[o, [4,5,6]])
+ end
+
+ def test_rows
+ assert_equal(@m1, Matrix.rows([[1, 2, 3], [4, 5, 6]]))
+ end
+
+ def test_columns
+ assert_equal(@m1, Matrix.columns([[1, 4], [2, 5], [3, 6]]))
+ end
+
+ def test_diagonal
+ assert_equal(Matrix[[3,0,0],[0,2,0],[0,0,1]], Matrix.diagonal(3, 2, 1))
+ assert_equal(Matrix[[4,0,0,0],[0,3,0,0],[0,0,2,0],[0,0,0,1]],
Matrix.diagonal(4, 3, 2, 1))
+ end
+
+ def test_scalar
+ assert_equal(Matrix[[2,0,0],[0,2,0],[0,0,2]], Matrix.scalar(3, 2))
+ assert_equal(Matrix[[2,0,0,0],[0,2,0,0],[0,0,2,0],[0,0,0,2]],
Matrix.scalar(4, 2))
+ end
+
+ def test_identity2
+ assert_equal(Matrix[[1,0,0],[0,1,0],[0,0,1]], Matrix.identity(3))
+ assert_equal(Matrix[[1,0,0],[0,1,0],[0,0,1]], Matrix.unit(3))
+ assert_equal(Matrix[[1,0,0],[0,1,0],[0,0,1]], Matrix.I(3))
+ assert_equal(Matrix[[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]],
Matrix.identity(4))
+ end
+
+ def test_zero
+ assert_equal(Matrix[[0,0,0],[0,0,0],[0,0,0]], Matrix.zero(3))
+ assert_equal(Matrix[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]],
Matrix.zero(4))
+ assert_equal(Matrix[[0]], Matrix.zero(1))
+ end
+
+ def test_row_vector
+ assert_equal(Matrix[[1,2,3,4]], Matrix.row_vector([1,2,3,4]))
+ end
+
+ def test_column_vector
+ assert_equal(Matrix[[1],[2],[3],[4]], Matrix.column_vector([1,2,3,4]))
+ end
+
+ def test_empty
+ m = Matrix.empty(2, 0)
+ assert_equal(Matrix[ [], [] ], m)
+ n = Matrix.empty(0, 3)
+ assert_equal(Matrix.columns([ [], [], [] ]), n)
+ assert_equal(Matrix[[0, 0, 0], [0, 0, 0]], m * n)
+ end
+
+ def test_row
+ assert_equal(Vector[1, 2, 3], @m1.row(0))
+ assert_equal(Vector[4, 5, 6], @m1.row(1))
+ a = []; @m1.row(0) {|x| a << x }
+ assert_equal([1, 2, 3], a)
+ end
+
+ def test_column
+ assert_equal(Vector[1, 4], @m1.column(0))
+ assert_equal(Vector[2, 5], @m1.column(1))
+ assert_equal(Vector[3, 6], @m1.column(2))
+ a = []; @m1.column(0) {|x| a << x }
+ assert_equal([1, 4], a)
+ end
+
+ def test_collect
+ assert_equal(Matrix[[1, 4, 9], [16, 25, 36]], @m1.collect {|x| x ** 2 })
+ end
+
+ def test_minor
+ assert_equal(Matrix[[1, 2], [4, 5]], @m1.minor(0..1, 0..1))
+ assert_equal(Matrix[[2], [5]], @m1.minor(0..1, 1..1))
+ assert_equal(Matrix[[4, 5]], @m1.minor(1..1, 0..1))
+ assert_equal(Matrix[[1, 2], [4, 5]], @m1.minor(0, 2, 0, 2))
+ assert_equal(Matrix[[4, 5]], @m1.minor(1, 1, 0, 2))
+ assert_equal(Matrix[[2], [5]], @m1.minor(0, 2, 1, 1))
+ assert_raise(ArgumentError) { @m1.minor(0) }
+ end
+
+ def test_regular?
+ assert(Matrix[[1, 0], [0, 1]].regular?)
+ assert(Matrix[[1, 0, 0], [0, 1, 0], [0, 0, 1]].regular?)
+ assert(!Matrix[[1, 0, 0], [0, 0, 1], [0, 0, 1]].regular?)
+ assert(!Matrix[[1, 0, 0], [0, 1, 0]].regular?)
+ end
+
+ def test_singular?
+ assert(!Matrix[[1, 0], [0, 1]].singular?)
+ assert(!Matrix[[1, 0, 0], [0, 1, 0], [0, 0, 1]].singular?)
+ assert(Matrix[[1, 0, 0], [0, 0, 1], [0, 0, 1]].singular?)
+ assert(Matrix[[1, 0, 0], [0, 1, 0]].singular?)
+ end
+
+ def test_square?
+ assert(Matrix[[1, 0], [0, 1]].square?)
+ assert(Matrix[[1, 0, 0], [0, 1, 0], [0, 0, 1]].square?)
+ assert(Matrix[[1, 0, 0], [0, 0, 1], [0, 0, 1]].square?)
+ assert(!Matrix[[1, 0, 0], [0, 1, 0]].square?)
+ end
+
+ def test_compare_by_row_vectors
+ assert(@m1.compare_by_row_vectors([[1, 2, 3], [4, 5, 6]]))
+ end
+
+ def test_mul
+ assert_equal(Matrix[[2,4],[6,8]], Matrix[[2,4],[6,8]] * Matrix.I(2))
+ assert_equal(Matrix[[4,8],[12,16]], Matrix[[2,4],[6,8]] * 2)
+ assert_equal(Matrix[[4,8],[12,16]], 2 * Matrix[[2,4],[6,8]])
+ assert_equal(Matrix[[14,32],[32,77]], @m1 * @m1.transpose)
+ assert_equal(Matrix[[17,22,27],[22,29,36],[27,36,45]], @m1.transpose * @m1)
+ assert_equal(Vector[14,32], @m1 * Vector[1,2,3])
+ o = Object.new
+ def o.coerce(m)
+ [m, m.transpose]
+ end
+ assert_equal(Matrix[[14,32],[32,77]], @m1 * o)
+ end
+
+ def test_add
+ assert_equal(Matrix[[6,0],[-4,12]], Matrix.scalar(2,5) +
Matrix[[1,0],[-4,7]])
+ assert_equal(Matrix[[3,5,7],[9,11,13]], @m1 + @n1)
+ assert_equal(Matrix[[3,5,7],[9,11,13]], @n1 + @m1)
+ assert_equal(Matrix[[2],[4],[6]], Matrix[[1],[2],[3]] + Vector[1,2,3])
+ assert_raise(Matrix::ErrOperationNotDefined) { @m1 + 1 }
+ o = Object.new
+ def o.coerce(m)
+ [m, m]
+ end
+ assert_equal(Matrix[[2,4,6],[8,10,12]], @m1 + o)
+ end
+
+ def test_sub
+ assert_equal(Matrix[[4,0],[4,-2]], Matrix.scalar(2,5) -
Matrix[[1,0],[-4,7]])
+ assert_equal(Matrix[[-1,-1,-1],[-1,-1,-1]], @m1 - @n1)
+ assert_equal(Matrix[[1,1,1],[1,1,1]], @n1 - @m1)
+ assert_equal(Matrix[[0],[0],[0]], Matrix[[1],[2],[3]] - Vector[1,2,3])
+ assert_raise(Matrix::ErrOperationNotDefined) { @m1 - 1 }
+ o = Object.new
+ def o.coerce(m)
+ [m, m]
+ end
+ assert_equal(Matrix[[0,0,0],[0,0,0]], @m1 - o)
+ end
+
+ def test_div
+ assert_equal(Matrix[[0,1,1],[2,2,3]], @m1 / 2)
+ assert_equal(Matrix[[1,1],[1,1]], Matrix[[2,2],[2,2]] / Matrix.scalar(2,2))
+ o = Object.new
+ def o.coerce(m)
+ [m, Matrix.scalar(2,2)]
+ end
+ assert_equal(Matrix[[1,1],[1,1]], Matrix[[2,2],[2,2]] / o)
+ end
+
+ def test_exp
+ assert_equal(Matrix[[67,96],[48,99]], Matrix[[7,6],[3,9]] ** 2)
+ assert_equal(Matrix.I(5), Matrix.I(5) ** -1)
+ assert_raise(Matrix::ErrOperationNotImplemented) { Matrix.I(5) ** 1.0 }
+ assert_raise(Matrix::ErrOperationNotDefined) { Matrix.I(5) ** Object.new }
+ end
+
+ def test_det
+ assert_in_delta(45.0, Matrix[[7,6],[3,9]].det, 0.0001)
+ assert_in_delta(0.0, Matrix[[0,0],[0,0]].det, 0.0001)
+ assert_in_delta(-7.0, Matrix[[0,0,1],[0,7,6],[1,3,9]].det, 0.0001)
+ assert_in_delta(0,0, @m1.det, 0.0001)
+ end
+
+ def test_det_e
+ assert_equal(45, Matrix[[7,6],[3,9]].det_e)
+ assert_equal(0, Matrix[[0,0],[0,0]].det_e)
+ assert_equal(-7, Matrix[[0,0,1],[0,7,6],[1,3,9]].det_e)
+ assert_equal(0, @m1.det_e)
+ end
+
+ def test_rank2
+ assert_equal(2, Matrix[[7,6],[3,9]].rank)
+ assert_equal(0, Matrix[[0,0],[0,0]].rank)
+ assert_equal(3, Matrix[[0,0,1],[0,7,6],[1,3,9]].rank)
+ assert_equal(2, @m1.rank)
+ end
+
+ def test_rank_e
+ assert_equal(2, Matrix[[7,6],[3,9]].rank_e)
+ assert_equal(0, Matrix[[0,0],[0,0]].rank_e)
+ assert_equal(3, Matrix[[0,0,1],[0,7,6],[1,3,9]].rank_e)
+ assert_equal(2, @m1.rank_e)
+ end
+
+ def test_trace
+ assert_equal(1+5+9, Matrix[[1,2,3],[4,5,6],[7,8,9]].trace)
+ end
+
+ def test_transpose
+ assert_equal(Matrix[[1,4],[2,5],[3,6]], @m1.transpose)
+ end
+
+ def test_row_vectors
+ assert_equal([Vector[1,2,3], Vector[4,5,6]], @m1.row_vectors)
+ end
+
+ def test_column_vectors
+ assert_equal([Vector[1,4], Vector[2,5], Vector[3,6]], @m1.column_vectors)
+ end
+
+ def test_elements_to_f
+ assert_equal(Matrix[[0.5,1.0,1.5],[2.0,2.5,3.0]], @m1.elements_to_f / 2)
+ end
+
+ def test_elements_to_i
+ assert_equal(Matrix[[0,1,1],[2,2,3]], (@m1.elements_to_f /
2).elements_to_i)
+ end
+
+ def test_elements_to_r
+ assert_equal(@m1.collect {|x| Rational(x, 2) }, @m1.elements_to_r / 2)
+ end
+
+ def test_to_s
+ assert_equal("Matrix[[1, 2, 3], [4, 5, 6]]", @m1.to_s)
+ assert_equal("Matrix.empty(0, 0)", Matrix[].to_s)
+ assert_equal("Matrix.empty(1, 0)", Matrix[[]].to_s)
+ end
+
+ def test_inspect
+ assert_equal("Matrix[[1, 2, 3], [4, 5, 6]]", @m1.inspect)
+ assert_equal("Matrix.empty(0, 0)", Matrix[].inspect)
+ assert_equal("Matrix.empty(1, 0)", Matrix[[]].inspect)
+ end
+
+ def test_scalar_add
+ s1 = @m1.coerce(1).first
+ assert_equal(Matrix[[1]], (s1 + 0) * Matrix[[1]])
+ assert_raise(Matrix::ErrOperationNotDefined) { s1 + Vector[0] }
+ assert_raise(Matrix::ErrOperationNotDefined) { s1 + Matrix[[0]] }
+ o = Object.new
+ def o.coerce(x)
+ [1, 1]
+ end
+ assert_equal(2, s1 + o)
+ end
+
+ def test_scalar_sub
+ s1 = @m1.coerce(1).first
+ assert_equal(Matrix[[1]], (s1 - 0) * Matrix[[1]])
+ assert_raise(Matrix::ErrOperationNotDefined) { s1 - Vector[0] }
+ assert_raise(Matrix::ErrOperationNotDefined) { s1 - Matrix[[0]] }
+ o = Object.new
+ def o.coerce(x)
+ [1, 1]
+ end
+ assert_equal(0, s1 - o)
+ end
+
+ def test_scalar_mul
+ s1 = @m1.coerce(1).first
+ assert_equal(Matrix[[1]], (s1 * 1) * Matrix[[1]])
+ assert_equal(Vector[2], s1 * Vector[2])
+ assert_equal(Matrix[[2]], s1 * Matrix[[2]])
+ o = Object.new
+ def o.coerce(x)
+ [1, 1]
+ end
+ assert_equal(1, s1 * o)
+ end
+
+ def test_scalar_div
+ s1 = @m1.coerce(1).first
+ assert_equal(Matrix[[1]], (s1 / 1) * Matrix[[1]])
+ assert_raise(Matrix::ErrOperationNotDefined) { s1 / Vector[0] }
+ assert_equal(Matrix[[Rational(1,2)]], s1 / Matrix[[2]])
+ o = Object.new
+ def o.coerce(x)
+ [1, 1]
+ end
+ assert_equal(1, s1 / o)
+ end
+
+ def test_scalar_pow
+ s1 = @m1.coerce(1).first
+ assert_equal(Matrix[[1]], (s1 ** 1) * Matrix[[1]])
+ assert_raise(Matrix::ErrOperationNotDefined) { s1 ** Vector[0] }
+ assert_raise(Matrix::ErrOperationNotImplemented) { s1 ** Matrix[[1]] }
+ o = Object.new
+ def o.coerce(x)
+ [1, 1]
+ end
+ assert_equal(1, s1 ** o)
+ end
end
diff --git a/test/matrix/test_vector.rb b/test/matrix/test_vector.rb
index 95a3969..9be54af 100644
--- a/test/matrix/test_vector.rb
+++ b/test/matrix/test_vector.rb
@@ -46,4 +46,106 @@ class TestVector < Test::Unit::TestCase
assert_equal @v1.hash, @v2.hash
assert_equal @v1.hash, @v3.hash
end
+
+ def test_aref
+ assert_equal(1, @v1[0])
+ assert_equal(2, @v1[1])
+ assert_equal(3, @v1[2])
+ assert_equal(3, @v1[-1])
+ assert_equal(nil, @v1[3])
+ end
+
+ def test_size
+ assert_equal(3, @v1.size)
+ end
+
+ def test_each2
+ a = []
+ @v1.each2(@v4) {|x, y| a << [x, y] }
+ assert_equal([[1,1.0],[2,2.0],[3,3.0]], a)
+ end
+
+ def test_collect
+ a = @v1.collect {|x| x + 1 }
+ assert_equal(Vector[2,3,4], a)
+ end
+
+ def test_collect2
+ a = @v1.collect2(@v4) {|x, y| x + y }
+ assert_equal([2.0,4.0,6.0], a)
+ end
+
+ def test_map2
+ a = @v1.map2(@v4) {|x, y| x + y }
+ assert_equal(Vector[2.0,4.0,6.0], a)
+ end
+
+ def test_compare_by
+ assert(@v1.compare_by([1,2,3], :==))
+ assert(!@v1.compare_by([1,2,3], :equal?))
+ end
+
+ def test_mul
+ assert_equal(Vector[2,4,6], @v1 * 2)
+ assert_equal(Matrix[[1, 4, 9], [2, 8, 18], [3, 12, 27]], @v1 *
Matrix[[1,4,9]])
+ assert_raise(Matrix::ErrOperationNotDefined) { @v1 * Vector[1,4,9] }
+ o = Object.new
+ def o.coerce(x)
+ [1, 1]
+ end
+ assert_equal(1, Vector[1, 2, 3] * o)
+ end
+
+ def test_add
+ assert_equal(Vector[2,4,6], @v1 + @v1)
+ assert_equal(Matrix[[2],[6],[12]], @v1 + Matrix[[1],[4],[9]])
+ o = Object.new
+ def o.coerce(x)
+ [1, 1]
+ end
+ assert_equal(2, Vector[1, 2, 3] + o)
+ end
+
+ def test_sub
+ assert_equal(Vector[0,0,0], @v1 - @v1)
+ assert_equal(Matrix[[0],[-2],[-6]], @v1 - Matrix[[1],[4],[9]])
+ o = Object.new
+ def o.coerce(x)
+ [1, 1]
+ end
+ assert_equal(0, Vector[1, 2, 3] - o)
+ end
+
+ def test_inner_product
+ assert_equal(1+4+9, @v1.inner_product(@v1))
+ end
+
+ def test_r
+ assert_equal(5, Vector[3, 4].r)
+ end
+
+ def test_covector
+ assert_equal(Matrix[[1,2,3]], @v1.covector)
+ end
+
+ def test_elements_to_f
+ assert_equal(Vector[0.5,1.0,1.5], @v1.elements_to_f * Rational(1, 2))
+ end
+
+ def test_elements_to_i
+ assert_equal(Vector[0,1,1], (@v1.elements_to_f * Rational(1,
2)).elements_to_i)
+ end
+
+ def test_elements_to_r
+ assert_equal(@v1.collect {|x| Rational(x, 2) }, @v1.elements_to_r
* Rational(1, 2))
+ end
+
+ def test_to_s
+ assert_equal("Vector[1, 2, 3]", @v1.to_s)
+ end
+
+ def test_inspect
+ assert_equal("Vector[1, 2, 3]", @v1.inspect)
+ end
+
end
--
Yusuke ENDOH <mame@tsg.ne.jp>