rjb 1.3.0-universal-darwin-10
Sign up to get free protection for your applications and to get access to all the features.
- data/COPYING +504 -0
- data/ChangeLog +502 -0
- data/data/rjb/jp/co/infoseek/hp/arton/rjb/RBridge.class +0 -0
- data/ext/RBridge.java +39 -0
- data/ext/depend +23 -0
- data/ext/extconf.h +9 -0
- data/ext/jniwrap.h +32 -0
- data/ext/jp_co_infoseek_hp_arton_rjb_RBridge.h +21 -0
- data/ext/load.c +380 -0
- data/ext/riconv.c +218 -0
- data/ext/riconv.h +24 -0
- data/ext/rjb.c +3170 -0
- data/ext/rjb.h +163 -0
- data/ext/rjbexception.c +160 -0
- data/lib/rjb.rb +98 -0
- data/lib/rjbcore.bundle +0 -0
- data/lib/rjbextension.rb +128 -0
- data/readme.sj +27 -0
- data/readme.txt +28 -0
- data/samples/filechooser.rb +35 -0
- data/test/exttest.rb +39 -0
- data/test/gctest.rb +24 -0
- data/test/jartest.jar +0 -0
- data/test/jp/co/infoseek/hp/arton/rjb/IBase.class +0 -0
- data/test/jp/co/infoseek/hp/arton/rjb/Test$TestTypes.class +0 -0
- data/test/jp/co/infoseek/hp/arton/rjb/Test.class +0 -0
- data/test/rjbtest.jar +0 -0
- data/test/test.rb +754 -0
- metadata +85 -0
data/readme.sj
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
����
|
2
|
+
�E���炩���ߊ��ϐ���JAVA_HOME��ݒ肵�Ă����Ă��������B
|
3
|
+
�E���̏ꍇ�AJAVA_HOME�́AJ2SDK�̃C���X�g�[���f�B���N�g���̕K�v������܂��B
|
4
|
+
�E���炩���ߊ��ϐ�PATH��$JAVA_HOME/bin��ݒ肵�Ă����Ă��������B
|
5
|
+
�EWindows�̏ꍇ�APATH�ɂ�%PATH%;%JAVA_HOME%bin��ݒ肷�邱�ƂɂȂ�܂��B
|
6
|
+
�Eruby1.8�ȍ~�����s�ł���悤��PATH��ݒ肵�Ă����Ă��������B
|
7
|
+
|
8
|
+
�C���X�g�[�����@
|
9
|
+
1. unzip rjb-*
|
10
|
+
2. cd rjb-*
|
11
|
+
3. ruby setup.rb config
|
12
|
+
4. ruby setup.rb setup
|
13
|
+
5. sudo ruby setup.rb install
|
14
|
+
Windows�ł́A�قƂ�ǂ̏ꍇ�ŏ���sudo�͕s�v�ł��B�u�قƂ�ǂ̏ꍇ�v�ɊY�����Ȃ��ꍇ�͉����K�v���͂킩���Ă���͂��ł��̂Ő����͏ȗ����܂��B
|
15
|
+
|
16
|
+
���s��
|
17
|
+
�E���炩���ߊ��ϐ���JAVA_HOME��ݒ肵�Ă����Ă��������B
|
18
|
+
�E���̏ꍇ�AJAVA_HOME�́AJ2SDK�̃C���X�g�[���f�B���N�g���̕K�v������܂��B
|
19
|
+
�ELinux�Ɋւ��Ă�LD_LIBRARY_PATH�ɁAjava2�̋��L�I�u�W�F�N�g�f�B���N�g����ݒ肵�Ă����K�v������܂��B
|
20
|
+
|
21
|
+
�e�X�g������
|
22
|
+
Windows2000 SP4-ruby1.8.2-j2se1.5.0, Solaris9-ruby1.8.0-j2se1.4.2, Linux 2.4.26-ruby-1.8.1-j2se1.4.2
|
23
|
+
|
24
|
+
�A����
|
25
|
+
artonx@yahoo.co.jp
|
26
|
+
http://arton.no-ip.info/collabo/backyard/?RjbQandA (�L�����ɂ�diary�փc�b�R�~�����Ă��������j
|
27
|
+
|
data/readme.txt
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
Rjb is Ruby-Java bridge using Java Native Interface.
|
2
|
+
|
3
|
+
How to install
|
4
|
+
|
5
|
+
you need to install Java2 sdk, and setup JAVA_HOME enviromental varible except for OS X.
|
6
|
+
I assume that OS X's JAVA_HOME is fixed as '/System/Library/Frameworks/JavaVM.framework'.
|
7
|
+
|
8
|
+
then,
|
9
|
+
|
10
|
+
ruby setup.rb config
|
11
|
+
ruby setup.rb setup
|
12
|
+
|
13
|
+
(in Unix)
|
14
|
+
sudo ruby setup.rb install
|
15
|
+
or
|
16
|
+
(in win32)
|
17
|
+
ruby setup.rb install
|
18
|
+
|
19
|
+
How to test
|
20
|
+
in Win32
|
21
|
+
cd test
|
22
|
+
ruby test.rb
|
23
|
+
|
24
|
+
in Unix
|
25
|
+
see test/readme.unix
|
26
|
+
you must set LD_LIBRARY_PATH environmental variable to run rjb.
|
27
|
+
|
28
|
+
artonx@yahoo.co.jp
|
@@ -0,0 +1,35 @@
|
|
1
|
+
#!/usr/local/bin/ruby -Ks
|
2
|
+
#coding: cp932
|
3
|
+
|
4
|
+
require 'rjb'
|
5
|
+
|
6
|
+
Rjb::load
|
7
|
+
|
8
|
+
unless RUBY_VERSION =~ /^1\.9/
|
9
|
+
class String
|
10
|
+
def encode(s)
|
11
|
+
self
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
class FileChooser
|
17
|
+
@@klass = Rjb::import('javax.swing.JFileChooser')
|
18
|
+
def initialize(ext = '*', desc = 'any files')
|
19
|
+
@selected = nil
|
20
|
+
end
|
21
|
+
|
22
|
+
def show()
|
23
|
+
chooser = @@klass.new
|
24
|
+
if chooser.showOpenDialog(nil) == @@klass.APPROVE_OPTION
|
25
|
+
@selected = chooser.getSelectedFile
|
26
|
+
end
|
27
|
+
end
|
28
|
+
attr_reader :selected
|
29
|
+
end
|
30
|
+
|
31
|
+
f = FileChooser.new
|
32
|
+
if f.show
|
33
|
+
puts f.selected.getAbsolutePath.encode('cp932')
|
34
|
+
end
|
35
|
+
puts 'bye'
|
data/test/exttest.rb
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
#!/usr/local/env ruby -Ku
|
2
|
+
# encoding: utf-8
|
3
|
+
# $Id:$
|
4
|
+
|
5
|
+
begin
|
6
|
+
require 'rjb'
|
7
|
+
rescue LoadError
|
8
|
+
require 'rubygems'
|
9
|
+
require 'rjb'
|
10
|
+
end
|
11
|
+
|
12
|
+
if Rjb::VERSION < '1.2.2'
|
13
|
+
puts "Rjb #{Rjb::VERSION} does not support rjbextension. exit"
|
14
|
+
exit 0
|
15
|
+
end
|
16
|
+
|
17
|
+
require 'rjbextension'
|
18
|
+
require 'test/unit'
|
19
|
+
require 'fileutils'
|
20
|
+
|
21
|
+
FileUtils.rm_f 'jp/co/infoseek/hp/arton/rjb/Base.class'
|
22
|
+
|
23
|
+
puts "start RJB(#{Rjb::VERSION}) test"
|
24
|
+
class ExtTestRjb < Test::Unit::TestCase
|
25
|
+
|
26
|
+
def jp
|
27
|
+
JavaPackage.new('jp')
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_require_extension
|
31
|
+
assert !Rjb::loaded?
|
32
|
+
$LOAD_PATH << '.'
|
33
|
+
require 'rjbtest.jar'
|
34
|
+
Rjb::load
|
35
|
+
assert Rjb::loaded?
|
36
|
+
base = jp.co.infoseek.hp.arton.rjb.Base.new
|
37
|
+
assert_equal('hello', base.instance_var)
|
38
|
+
end
|
39
|
+
end
|
data/test/gctest.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'rjb'
|
3
|
+
|
4
|
+
class TestRjbGC < Test::Unit::TestCase
|
5
|
+
include Rjb
|
6
|
+
def setup
|
7
|
+
load(nil, ['-verbose:gc'])
|
8
|
+
end
|
9
|
+
|
10
|
+
def tearDown
|
11
|
+
unload
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_gc
|
15
|
+
stringBuffer = import('java.lang.StringBuffer')
|
16
|
+
(0..1000).each do |i|
|
17
|
+
sb = stringBuffer.new
|
18
|
+
(0..1000).each do |j|
|
19
|
+
sb.append(' ')
|
20
|
+
end
|
21
|
+
GC.start
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
data/test/jartest.jar
ADDED
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/test/rjbtest.jar
ADDED
Binary file
|
data/test/test.rb
ADDED
@@ -0,0 +1,754 @@
|
|
1
|
+
#!/usr/local/env ruby -Ku
|
2
|
+
# encoding: utf-8
|
3
|
+
# $Id: test.rb 147 2010-10-23 05:10:33Z arton $
|
4
|
+
|
5
|
+
begin
|
6
|
+
require 'rjb'
|
7
|
+
rescue LoadError
|
8
|
+
require 'rubygems'
|
9
|
+
require 'rjb'
|
10
|
+
end
|
11
|
+
require 'test/unit'
|
12
|
+
require 'fileutils'
|
13
|
+
|
14
|
+
FileUtils.rm_f 'jp/co/infoseek/hp/arton/rjb/Base.class'
|
15
|
+
FileUtils.rm_f 'jp/co/infoseek/hp/arton/rjb/ExtBase.class'
|
16
|
+
|
17
|
+
puts "start RJB(#{Rjb::VERSION}) test"
|
18
|
+
class TestRjb < Test::Unit::TestCase
|
19
|
+
include Rjb
|
20
|
+
def setup
|
21
|
+
Rjb::load('.')
|
22
|
+
Rjb::add_jar(File.expand_path('rjbtest.jar'))
|
23
|
+
Rjb::primitive_conversion = false
|
24
|
+
|
25
|
+
@jString = import('java.lang.String')
|
26
|
+
@jInteger = import('java.lang.Integer')
|
27
|
+
@jShort = import('java.lang.Short')
|
28
|
+
@jDouble = import('java.lang.Double')
|
29
|
+
@jFloat = import('java.lang.Float')
|
30
|
+
@jBoolean = import('java.lang.Boolean')
|
31
|
+
@jByte = import('java.lang.Byte')
|
32
|
+
@jLong = import('java.lang.Long')
|
33
|
+
@jChar = import('java.lang.Character')
|
34
|
+
end
|
35
|
+
|
36
|
+
def teardown
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_metaclass
|
40
|
+
cls = import('java.lang.Class')
|
41
|
+
assert_equal('java.lang.Class', cls._classname)
|
42
|
+
assert_equal('java.lang.Class', cls.getName)
|
43
|
+
assert_equal(17, cls.getModifiers)
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_scalar
|
47
|
+
assert_equal('java.lang.Class', @jString._classname)
|
48
|
+
assert_equal('class java.lang.String', @jString.toString)
|
49
|
+
str = @jString.new
|
50
|
+
assert_equal('java.lang.String', str._classname)
|
51
|
+
assert_equal(0, str.length)
|
52
|
+
assert_equal('', str.toString)
|
53
|
+
str = @jString.new_with_sig('Ljava.lang.String;', "abcde")
|
54
|
+
# result integer
|
55
|
+
assert_equal(5, str.length)
|
56
|
+
# result string
|
57
|
+
assert_equal('abcde', str.toString)
|
58
|
+
# argument test
|
59
|
+
# char
|
60
|
+
assert_equal('abxde', str.replace("c".sum, "x".sum))
|
61
|
+
# string
|
62
|
+
assert_equal('abdxe', str.replaceAll('cd', 'dx'))
|
63
|
+
# int
|
64
|
+
assert_equal('bc', str.substring(1, 3))
|
65
|
+
assert_equal('e', str.substring(4))
|
66
|
+
# float with static
|
67
|
+
assert_equal('5.23', @jString._invoke('valueOf', 'F', 5.23))
|
68
|
+
assert_equal('25.233', @jString._invoke('valueOf', 'D', 25.233))
|
69
|
+
# rjb object (String)
|
70
|
+
str2 = @jString.new_with_sig('Ljava.lang.String;', 'fghijk')
|
71
|
+
assert_equal('abcdefghijk', str.concat(str2))
|
72
|
+
# rjb object other (implicit toString call is Rjb feature)
|
73
|
+
i = @jInteger.new_with_sig('I', 35901)
|
74
|
+
assert_equal('abcde35901', str.concat(i))
|
75
|
+
# result boolean and argument is rjb object
|
76
|
+
assert_equal(false, i.equals(str))
|
77
|
+
assert_equal(false, str.equals(i))
|
78
|
+
assert_equal(true, str.equals("abcde"))
|
79
|
+
assert_equal(true, str.equals(str))
|
80
|
+
# long
|
81
|
+
l = @jLong.new_with_sig('J', -9223372036854775808)
|
82
|
+
assert_equal(-9223372036854775808, l.longValue)
|
83
|
+
l = @jLong.new_with_sig('J', 9223372036854775807)
|
84
|
+
assert_equal(9223372036854775807, l.longValue)
|
85
|
+
# double
|
86
|
+
d = @jDouble.new_with_sig('D', 1234.5678901234567890)
|
87
|
+
assert_equal(1234.5678901234567890, d.doubleValue)
|
88
|
+
# byte
|
89
|
+
b = @jByte.new_with_sig('B', 13)
|
90
|
+
assert_equal(13, b.byteValue)
|
91
|
+
# float
|
92
|
+
f = @jFloat.new_with_sig('F', 13.5)
|
93
|
+
assert_equal(13.5, f.floatValue)
|
94
|
+
# short
|
95
|
+
s = @jShort.new_with_sig('S', 1532)
|
96
|
+
assert_equal(1532, s.shortValue)
|
97
|
+
c = @jChar.new_with_sig('C', "A".sum)
|
98
|
+
assert_equal("A".sum, c.charValue)
|
99
|
+
end
|
100
|
+
|
101
|
+
def test_array
|
102
|
+
str = @jString.new_with_sig('[C', ["a".sum, "b".sum, "c".sum, "d".sum, "e".sum, "c".sum, "f".sum, "c".sum, "g".sum])
|
103
|
+
assert_equal('abcdecfcg', str.toString)
|
104
|
+
# conv string array
|
105
|
+
splt = str.split('c')
|
106
|
+
assert(Array === splt)
|
107
|
+
assert_equal(4, splt.size)
|
108
|
+
assert_equal('ab', splt[0])
|
109
|
+
assert_equal('g', splt[3])
|
110
|
+
# conv byte array to (ruby)string
|
111
|
+
ba = str.getBytes
|
112
|
+
assert_equal('abcdecfcg', ba)
|
113
|
+
# conv char array to array(int)
|
114
|
+
ca = str.toCharArray
|
115
|
+
assert_equal(["a".sum, "b".sum, "c".sum, "d".sum, "e".sum, "c".sum, "f".sum, "c".sum, "g".sum], ca)
|
116
|
+
end
|
117
|
+
|
118
|
+
def test_importobj()
|
119
|
+
sys = import('java.lang.System')
|
120
|
+
props = sys.getProperties
|
121
|
+
assert_equal('java.util.Properties', props._classname)
|
122
|
+
if /cygwin/ =~ RUBY_PLATFORM # patch for dirty environment
|
123
|
+
assert_equal(Dir::pwd, %x[cygpath -u #{props.getProperty('user.dir').gsub('\\', '/')}].chop)
|
124
|
+
else
|
125
|
+
assert_equal(Dir::pwd, props.getProperty('user.dir').gsub('\\', '/'))
|
126
|
+
end
|
127
|
+
assert_equal(@jBoolean.valueOf(true).booleanValue(), true)
|
128
|
+
assert_equal(@jBoolean.valueOf(false).booleanValue(), false)
|
129
|
+
assert_equal(@jBoolean.valueOf('true').booleanValue(), true)
|
130
|
+
assert_equal(@jBoolean.valueOf('false').booleanValue(), false)
|
131
|
+
end
|
132
|
+
|
133
|
+
def test_importobjarray()
|
134
|
+
jarray = import('java.util.ArrayList')
|
135
|
+
a = jarray.new()
|
136
|
+
a.add(@jInteger.new_with_sig('I', 1))
|
137
|
+
a.add(@jInteger.new_with_sig('I', 2))
|
138
|
+
a.add(@jInteger.new_with_sig('I', 3))
|
139
|
+
oa = a.toArray
|
140
|
+
assert_equal(3, oa.size)
|
141
|
+
assert_equal(1, oa[0].intValue)
|
142
|
+
assert_equal(2, oa[1].intValue)
|
143
|
+
assert_equal(3, oa[2].intValue)
|
144
|
+
end
|
145
|
+
|
146
|
+
def test_kjconv()
|
147
|
+
if Object::const_defined?(:Encoding)
|
148
|
+
test = import('jp.co.infoseek.hp.arton.rjb.Test').new
|
149
|
+
euc_kj = "\xb4\xc1\xbb\xfa\xa5\xc6\xa5\xad\xa5\xb9\xa5\xc8".force_encoding Encoding::EUC_JP
|
150
|
+
s = @jString.new(euc_kj)
|
151
|
+
assert_equal(s.toString().encoding, Encoding::UTF_8)
|
152
|
+
assert(test.isSameString(s))
|
153
|
+
assert(test.isSameString(euc_kj))
|
154
|
+
assert_equal(s.toString().encode(Encoding::EUC_JP), euc_kj)
|
155
|
+
sjis_kj = "\x8a\xbf\x8e\x9a\x83\x65\x83\x4c\x83\x58\x83\x67".force_encoding Encoding::SHIFT_JIS
|
156
|
+
s = @jString.new(sjis_kj)
|
157
|
+
assert_equal(s.toString().encoding, Encoding::UTF_8)
|
158
|
+
assert(test.isSameString(s))
|
159
|
+
assert(test.isSameString(sjis_kj))
|
160
|
+
assert_equal(s.toString().encode(Encoding::SHIFT_JIS), sjis_kj)
|
161
|
+
utf8_kj = "\xE6\xBC\xA2\xE5\xAD\x97\xE3\x83\x86\xE3\x82\xAD\xE3\x82\xB9\xE3\x83\x88".force_encoding Encoding::UTF_8
|
162
|
+
s = @jString.new(utf8_kj)
|
163
|
+
assert_equal(s.toString().encoding, Encoding::UTF_8)
|
164
|
+
assert(test.isSameString(s))
|
165
|
+
assert(test.isSameString(utf8_kj))
|
166
|
+
assert_equal(s.toString().encode(Encoding::UTF_8), utf8_kj)
|
167
|
+
iso2022jp_kj = "\x1b\x24\x42\x34\x41\x3b\x7a\x25\x46\x25\x2d\x25\x39\x25\x48\x1b\x28\x42".force_encoding Encoding::ISO_2022_JP
|
168
|
+
s = @jString.new(iso2022jp_kj)
|
169
|
+
assert_equal(s.toString().encoding, Encoding::UTF_8)
|
170
|
+
assert(test.isSameString(s))
|
171
|
+
assert(test.isSameString(iso2022jp_kj))
|
172
|
+
assert_equal(s.toString().encode(Encoding::ISO_2022_JP), iso2022jp_kj)
|
173
|
+
assert_equal(@jString.new("abcdef".force_encoding(Encoding::ASCII_8BIT)).toString(), "abcdef")
|
174
|
+
assert_equal(@jString.new("abcdef".force_encoding(Encoding::find("us-ascii"))).toString(), "abcdef")
|
175
|
+
else
|
176
|
+
default_kcode = $KCODE
|
177
|
+
begin
|
178
|
+
$KCODE = 'euc'
|
179
|
+
euc_kj = "\xb4\xc1\xbb\xfa\xa5\xc6\xa5\xad\xa5\xb9\xa5\xc8"
|
180
|
+
s = @jString.new(euc_kj)
|
181
|
+
assert_equal(s.toString(), euc_kj)
|
182
|
+
$KCODE = 'sjis'
|
183
|
+
sjis_kj = "\x8a\xbf\x8e\x9a\x83\x65\x83\x4c\x83\x58\x83\x67"
|
184
|
+
s = @jString.new(sjis_kj)
|
185
|
+
assert_equal(s.toString(), sjis_kj)
|
186
|
+
$KCODE = 'utf8'
|
187
|
+
utf8_kj = "\xE6\xBC\xA2\xE5\xAD\x97\xE3\x83\x86\xE3\x82\xAD\xE3\x82\xB9\xE3\x83\x88"
|
188
|
+
s = @jString.new(utf8_kj)
|
189
|
+
assert_equal(s.toString(), utf8_kj)
|
190
|
+
$KCODE = 'none'
|
191
|
+
if /mswin(?!ce)|mingw|cygwin|bccwin/ =~ RUBY_PLATFORM
|
192
|
+
#expecting shift_jis on windows
|
193
|
+
none_kj = "\x8a\xbf\x8e\x9a\x83\x65\x83\x4c\x83\x58\x83\x67"
|
194
|
+
else
|
195
|
+
#expecting utf-8 unless windows
|
196
|
+
none_kj = "\xE6\xBC\xA2\xE5\xAD\x97\xE3\x83\x86\xE3\x82\xAD\xE3\x82\xB9\xE3\x83\x88"
|
197
|
+
end
|
198
|
+
s = @jString.new(none_kj)
|
199
|
+
assert_equal(s.toString(), none_kj)
|
200
|
+
$KCODE = 'utf8'
|
201
|
+
utf8_kj = "\xE6\xBC\xA2\xE5\xAD\x97\xE3\x83\x86\xE3\x82\xAD\xE3\x82\xB9\xE3\x83\x88"
|
202
|
+
s = @jString.new(utf8_kj)
|
203
|
+
assert_equal(s.toString(), utf8_kj)
|
204
|
+
$KCODE = 'sjis'
|
205
|
+
sjis_kj = "\x8a\xbf\x8e\x9a\x83\x65\x83\x4c\x83\x58\x83\x67"
|
206
|
+
s = @jString.new(sjis_kj)
|
207
|
+
assert_equal(s.toString(), sjis_kj)
|
208
|
+
$KCODE = 'euc'
|
209
|
+
euc_kj = "\xb4\xc1\xbb\xfa\xa5\xc6\xa5\xad\xa5\xb9\xa5\xc8"
|
210
|
+
s = @jString.new(euc_kj)
|
211
|
+
assert_equal(s.toString(), euc_kj)
|
212
|
+
ensure
|
213
|
+
$KCODE = default_kcode
|
214
|
+
end
|
215
|
+
end
|
216
|
+
end
|
217
|
+
|
218
|
+
def test_combination_charcters
|
219
|
+
teststr = "\xc7\x96\xc3\xbc\xcc\x84\x75\xcc\x88\xcc\x84\xed\xa1\xa9\xed\xba\xb2\xe3\x81\x8b\xe3\x82\x9a"
|
220
|
+
test = import('jp.co.infoseek.hp.arton.rjb.Test').new
|
221
|
+
s = test.getUmlaut()
|
222
|
+
if Object::const_defined?(:Encoding) #>=1.9
|
223
|
+
teststr = teststr.force_encoding(Encoding::UTF_8)
|
224
|
+
assert_equal(s, teststr)
|
225
|
+
else
|
226
|
+
default_kcode = $KCODE
|
227
|
+
begin
|
228
|
+
$KCODE = "utf8"
|
229
|
+
assert_equal(s, teststr)
|
230
|
+
ensure
|
231
|
+
$KCODE = default_kcode
|
232
|
+
end
|
233
|
+
end
|
234
|
+
end
|
235
|
+
|
236
|
+
def test_constants()
|
237
|
+
assert_equal(0x7fffffffffffffff, @jLong.MAX_VALUE)
|
238
|
+
assert_equal(-9223372036854775808, @jLong.MIN_VALUE)
|
239
|
+
end
|
240
|
+
|
241
|
+
class TestIter
|
242
|
+
def initialize()
|
243
|
+
@i = 5
|
244
|
+
end
|
245
|
+
def hasNext()
|
246
|
+
@i > 0
|
247
|
+
end
|
248
|
+
def next()
|
249
|
+
@i -= 1
|
250
|
+
@i.to_s
|
251
|
+
end
|
252
|
+
end
|
253
|
+
|
254
|
+
def test_newobject()
|
255
|
+
it = TestIter.new
|
256
|
+
it = bind(it, 'java.util.Iterator')
|
257
|
+
test = import('jp.co.infoseek.hp.arton.rjb.Test')
|
258
|
+
a = test.new
|
259
|
+
assert("43210", a.concat(it))
|
260
|
+
end
|
261
|
+
|
262
|
+
def test_unbind()
|
263
|
+
it = TestIter.new
|
264
|
+
it = bind(it, 'java.util.Iterator')
|
265
|
+
assert_equal(it, unbind(it))
|
266
|
+
end
|
267
|
+
|
268
|
+
class TestComparator
|
269
|
+
def compare(o1, o2)
|
270
|
+
o1.to_i - o2.to_i
|
271
|
+
end
|
272
|
+
def equals(o)
|
273
|
+
o == self
|
274
|
+
end
|
275
|
+
end
|
276
|
+
|
277
|
+
def test_comparator
|
278
|
+
cp = TestComparator.new
|
279
|
+
cp = bind(cp, 'java.util.Comparator')
|
280
|
+
test = import('jp.co.infoseek.hp.arton.rjb.Test')
|
281
|
+
a = test.new
|
282
|
+
assert_equal(0, a.check(cp, 123, 123))
|
283
|
+
assert_equal(5, a.check(cp, 81, 76))
|
284
|
+
assert_equal(-5, a.check(cp, 76, 81))
|
285
|
+
end
|
286
|
+
|
287
|
+
# assert_raise is useless in this test, because NumberFormatException may be defined in
|
288
|
+
# its block.
|
289
|
+
def test_exception()
|
290
|
+
begin
|
291
|
+
@jInteger.parseInt('blabla')
|
292
|
+
flunk('no exception')
|
293
|
+
rescue NumberFormatException => e
|
294
|
+
assert_nil(e.cause)
|
295
|
+
# OK
|
296
|
+
end
|
297
|
+
end
|
298
|
+
|
299
|
+
class TestIterator
|
300
|
+
def initialize(tp)
|
301
|
+
@type = tp
|
302
|
+
end
|
303
|
+
def hasNext()
|
304
|
+
true
|
305
|
+
end
|
306
|
+
def next()
|
307
|
+
if @type == 0
|
308
|
+
Rjb::throw('java.util.NoSuchElementException', 'test exception')
|
309
|
+
elsif @type == 1
|
310
|
+
Rjb::throw(Rjb::import('java.util.NoSuchElementException').new('instance test'))
|
311
|
+
end
|
312
|
+
end
|
313
|
+
end
|
314
|
+
|
315
|
+
def test_throw()
|
316
|
+
it = TestIterator.new(0)
|
317
|
+
it = bind(it, 'java.util.Iterator')
|
318
|
+
test = import('jp.co.infoseek.hp.arton.rjb.Test')
|
319
|
+
a = test.new
|
320
|
+
begin
|
321
|
+
a.concat(it)
|
322
|
+
flunk('no exception')
|
323
|
+
rescue NoSuchElementException => e
|
324
|
+
assert_equal('test exception', e.message)
|
325
|
+
end
|
326
|
+
end
|
327
|
+
|
328
|
+
def test_instance_throw()
|
329
|
+
it = TestIterator.new(1)
|
330
|
+
it = bind(it, 'java.util.Iterator')
|
331
|
+
test = import('jp.co.infoseek.hp.arton.rjb.Test')
|
332
|
+
a = test.new
|
333
|
+
begin
|
334
|
+
a.concat(it)
|
335
|
+
flunk('no exception')
|
336
|
+
rescue NoSuchElementException => e
|
337
|
+
assert_equal('instance test', e.message)
|
338
|
+
end
|
339
|
+
end
|
340
|
+
|
341
|
+
def test_null_string()
|
342
|
+
sys = import('java.lang.System')
|
343
|
+
begin
|
344
|
+
sys.getProperty(nil)
|
345
|
+
flunk('no exception')
|
346
|
+
rescue NullPointerException => e
|
347
|
+
assert(true)
|
348
|
+
rescue RuntimeError => e
|
349
|
+
flunk(e.message)
|
350
|
+
end
|
351
|
+
end
|
352
|
+
|
353
|
+
def test_throw_error()
|
354
|
+
begin
|
355
|
+
throw(self)
|
356
|
+
flunk('no exception')
|
357
|
+
rescue TypeError => e
|
358
|
+
end
|
359
|
+
begin
|
360
|
+
throw(@jString.new('a'))
|
361
|
+
flunk('no exception')
|
362
|
+
rescue RuntimeError => e
|
363
|
+
assert_equal('arg1 must be a throwable', e.message)
|
364
|
+
end
|
365
|
+
begin
|
366
|
+
throw('java.lang.NoSuchException', 'test')
|
367
|
+
flunk('no excpetion')
|
368
|
+
rescue RuntimeError => e
|
369
|
+
assert_equal("`java.lang.NoSuchException' not found", e.message)
|
370
|
+
end
|
371
|
+
end
|
372
|
+
|
373
|
+
def test_throw_clear()
|
374
|
+
assert_nothing_raised {
|
375
|
+
begin
|
376
|
+
Rjb::throw('java.util.NoSuchElementException', 'test exception')
|
377
|
+
rescue #drop ruby exception
|
378
|
+
end
|
379
|
+
test = import('jp.co.infoseek.hp.arton.rjb.Test')
|
380
|
+
begin
|
381
|
+
Rjb::throw('java.util.NoSuchElementException', 'test exception')
|
382
|
+
rescue #drop ruby exception
|
383
|
+
end
|
384
|
+
test.new
|
385
|
+
begin
|
386
|
+
Rjb::throw('java.util.NoSuchElementException', 'test exception')
|
387
|
+
rescue #drop ruby exception
|
388
|
+
end
|
389
|
+
@jString.new_with_sig('Ljava.lang.String;', "abcde")
|
390
|
+
begin
|
391
|
+
Rjb::throw('java.util.NoSuchElementException', 'test exception')
|
392
|
+
rescue #drop ruby exception
|
393
|
+
end
|
394
|
+
it = TestIterator.new(0)
|
395
|
+
it = bind(it, 'java.util.Iterator')
|
396
|
+
begin
|
397
|
+
Rjb::throw('java.util.NoSuchElementException', 'test exception')
|
398
|
+
rescue NoSuchElementException
|
399
|
+
end
|
400
|
+
begin
|
401
|
+
Rjb::throw('java.lang.IllegalAccessException', 'test exception')
|
402
|
+
rescue IllegalAccessException
|
403
|
+
end
|
404
|
+
unbind(it)
|
405
|
+
}
|
406
|
+
end
|
407
|
+
|
408
|
+
def test_field()
|
409
|
+
test = import('jp.co.infoseek.hp.arton.rjb.Test').new
|
410
|
+
assert_equal('Hello World !!', test.helloData)
|
411
|
+
test.helloData = 'Goodby World !'
|
412
|
+
assert_equal('Goodby World !', test.helloData)
|
413
|
+
end
|
414
|
+
|
415
|
+
def test_instancemethod_from_class()
|
416
|
+
begin
|
417
|
+
assert_equal('true', @jString.valueOf(true))
|
418
|
+
@jString.length
|
419
|
+
flunk('no exception')
|
420
|
+
rescue RuntimeError => e
|
421
|
+
assert_equal('instance method `length\' for class', e.message)
|
422
|
+
end
|
423
|
+
end
|
424
|
+
|
425
|
+
def test_instancefield_from_class()
|
426
|
+
point = import('java.awt.Point')
|
427
|
+
begin
|
428
|
+
point.x
|
429
|
+
flunk('no exception')
|
430
|
+
rescue RuntimeError => e
|
431
|
+
assert_equal('instance field `x\' for class', e.message)
|
432
|
+
end
|
433
|
+
begin
|
434
|
+
point.x = 30
|
435
|
+
rescue RuntimeError => e
|
436
|
+
assert_equal('instance field `x\' for class', e.message)
|
437
|
+
end
|
438
|
+
end
|
439
|
+
|
440
|
+
def test_static_derived_method()
|
441
|
+
ext = import('jp.co.infoseek.hp.arton.rjb.ExtBase')
|
442
|
+
assert_equal("sVal", ext.getSVal)
|
443
|
+
end
|
444
|
+
|
445
|
+
def test_capitalized_method()
|
446
|
+
bs = import('jp.co.infoseek.hp.arton.rjb.Base')
|
447
|
+
assert_equal("val", bs.val)
|
448
|
+
assert_equal("Val", bs.Val)
|
449
|
+
end
|
450
|
+
|
451
|
+
def test_underscored_constant()
|
452
|
+
bs = import('jp.co.infoseek.hp.arton.rjb.Base')
|
453
|
+
assert_equal(5, bs._NUMBER_FIVE)
|
454
|
+
end
|
455
|
+
|
456
|
+
def test_passingclass()
|
457
|
+
ibs = import('jp.co.infoseek.hp.arton.rjb.IBase')
|
458
|
+
bs = import('jp.co.infoseek.hp.arton.rjb.Base')
|
459
|
+
assert_equal('interface jp.co.infoseek.hp.arton.rjb.IBase', bs.intf(ibs))
|
460
|
+
end
|
461
|
+
|
462
|
+
def test_fornamehook()
|
463
|
+
# j2se class
|
464
|
+
cls = import('java.lang.Class')
|
465
|
+
c = cls.forName('java.lang.Class')
|
466
|
+
assert_equal(cls, c)
|
467
|
+
# user class
|
468
|
+
bs = import('jp.co.infoseek.hp.arton.rjb.Base')
|
469
|
+
b = cls.forName('jp.co.infoseek.hp.arton.rjb.Base')
|
470
|
+
assert_equal(bs, b)
|
471
|
+
# check class that was loaded from classpath
|
472
|
+
loader = Rjb::import('java.lang.ClassLoader')
|
473
|
+
b = cls.forName('jp.co.infoseek.hp.arton.rjb.IBase', true, loader.getSystemClassLoader)
|
474
|
+
assert(b.isInterface)
|
475
|
+
end
|
476
|
+
|
477
|
+
def test_send_array_of_arrays()
|
478
|
+
test = import('jp.co.infoseek.hp.arton.rjb.Test').new
|
479
|
+
a = test.joinStringArray([['ab', 'cd'], ['ef', 'gh']])
|
480
|
+
assert_equal(['ab', 'cd', 'ef', 'gh'], a)
|
481
|
+
a = test.joinIntArray([[1, 2, 3], [4, 5, 6]])
|
482
|
+
a.collect! {|e| e.intValue }
|
483
|
+
assert_equal([1, 2, 3, 4, 5, 6], a)
|
484
|
+
r = [[[ 1, 2], [2, 3] ], [[ 3, 4], [5, 6]], [[7, 8], [1, 3]]]
|
485
|
+
a = test.throughIntArray(r)
|
486
|
+
assert_equal(a, r)
|
487
|
+
end
|
488
|
+
|
489
|
+
def test_import_and_instanciate()
|
490
|
+
b = import('jp.co.infoseek.hp.arton.rjb.Base')
|
491
|
+
assert_equal('hello', b.new.getInstanceVar())
|
492
|
+
end
|
493
|
+
|
494
|
+
def test_array_of_arrays()
|
495
|
+
jversion = import('java.lang.System').getProperty('java.version')
|
496
|
+
if /^1\.5/ =~ jversion
|
497
|
+
method = import('java.lang.reflect.Method')
|
498
|
+
end
|
499
|
+
test = import('jp.co.infoseek.hp.arton.rjb.Test').new
|
500
|
+
a = test.getStringArrayOfArrays()
|
501
|
+
assert_equal("abc", a[0][0])
|
502
|
+
assert_equal("def", a[0][1])
|
503
|
+
assert_equal("123", a[1][0])
|
504
|
+
assert_equal("456", a[1][1])
|
505
|
+
|
506
|
+
ints = test.getIntArrayOfArrays()
|
507
|
+
assert_equal(2, ints.size )
|
508
|
+
assert_equal([1,2,3], ints[0] )
|
509
|
+
assert_equal([[1,2,3],[4,5,6]], ints )
|
510
|
+
|
511
|
+
sized = test.getSizedArray()
|
512
|
+
assert_equal("find me",sized[0][1][2][3])
|
513
|
+
|
514
|
+
mixed = test.getMixedArray()
|
515
|
+
assert_equal(12,mixed[0][0][0].intValue)
|
516
|
+
assert_equal("another string",mixed[1][0][1].toString)
|
517
|
+
assert_equal([],mixed[2])
|
518
|
+
end
|
519
|
+
|
520
|
+
def test_CastObjectArray()
|
521
|
+
test = import('jp.co.infoseek.hp.arton.rjb.Test').new
|
522
|
+
a = test.getObjectArray()
|
523
|
+
assert_equal(1, a[0].intValue)
|
524
|
+
assert_equal('Hello World !', a[1].toString)
|
525
|
+
a = test.getObjectArrayOfArray()
|
526
|
+
assert_equal(1, a[0][0].intValue)
|
527
|
+
assert_equal('Hello World !', a[0][1].toString)
|
528
|
+
assert_equal(2, a[1][0].intValue)
|
529
|
+
assert_equal('Hello World !!', a[1][1].toString)
|
530
|
+
end
|
531
|
+
|
532
|
+
def test_CallByNullForArrays()
|
533
|
+
test = import('jp.co.infoseek.hp.arton.rjb.Test').new
|
534
|
+
assert_equal(nil, test.callWithArrays(nil, nil, nil, nil, nil, nil,
|
535
|
+
nil, nil))
|
536
|
+
end
|
537
|
+
|
538
|
+
def test_failed_constructor_call()
|
539
|
+
begin
|
540
|
+
s = @jString.new('a', 'b', 'c')
|
541
|
+
flunk('no exception')
|
542
|
+
rescue RuntimeError => e
|
543
|
+
assert(e)
|
544
|
+
end
|
545
|
+
end
|
546
|
+
|
547
|
+
def test_rubyize
|
548
|
+
loader = Rjb::import('java.lang.ClassLoader')
|
549
|
+
cls = import('java.lang.Class')
|
550
|
+
b = cls.for_name('jp.co.infoseek.hp.arton.rjb.IBase', true, loader.system_class_loader)
|
551
|
+
assert(b.interface?)
|
552
|
+
stringbuffer = Rjb::import('java.lang.StringBuffer')
|
553
|
+
sb = stringbuffer.new('abc')
|
554
|
+
assert_equal(1, sb.index_of('bc'))
|
555
|
+
sb.set_char_at(1, "B".sum)
|
556
|
+
assert_equal('aBc', sb.to_string)
|
557
|
+
sb.length = 2
|
558
|
+
assert_equal('aB', sb.to_string)
|
559
|
+
end
|
560
|
+
|
561
|
+
def test_auto_conv
|
562
|
+
assert_equal(false, Rjb::primitive_conversion)
|
563
|
+
Rjb::primitive_conversion = true
|
564
|
+
assert_equal(true, Rjb::primitive_conversion)
|
565
|
+
assert_equal(1, @jInteger.valueOf('1'))
|
566
|
+
assert_equal(-1, @jInteger.valueOf('-1'))
|
567
|
+
assert_equal(2, @jShort.valueOf('2'))
|
568
|
+
assert_equal(-2, @jShort.valueOf('-2'))
|
569
|
+
assert_equal(3.1, @jDouble.valueOf('3.1'))
|
570
|
+
assert_equal(4.5, @jFloat.valueOf('4.5'))
|
571
|
+
assert(@jBoolean.TRUE)
|
572
|
+
assert_equal(5, @jByte.valueOf('5'))
|
573
|
+
assert_equal(-6, @jByte.valueOf('-6'))
|
574
|
+
assert_equal(0x7000000000000000, @jLong.valueOf('8070450532247928832'))
|
575
|
+
assert_equal(-9223372036854775807, @jLong.valueOf('-9223372036854775807'))
|
576
|
+
assert_equal("A".sum, @jChar.valueOf("A".sum))
|
577
|
+
end
|
578
|
+
|
579
|
+
def test_obj_to_primitive
|
580
|
+
ar = Rjb::import('java.util.ArrayList')
|
581
|
+
a = ar.new
|
582
|
+
a.add @jString.new('abcdef')
|
583
|
+
a.add @jInteger.valueOf('1')
|
584
|
+
a.add @jShort.valueOf('2')
|
585
|
+
a.add @jDouble.valueOf('3.1')
|
586
|
+
a.add @jFloat.valueOf('4.5')
|
587
|
+
a.add @jBoolean.TRUE
|
588
|
+
a.add @jByte.valueOf('5')
|
589
|
+
a.add @jLong.valueOf('8070450532247928832')
|
590
|
+
a.add @jChar.valueOf("A".sum)
|
591
|
+
|
592
|
+
Rjb::primitive_conversion = true
|
593
|
+
|
594
|
+
assert_equal 'abcdef', a.get(0)
|
595
|
+
assert_equal 1, a.get(1)
|
596
|
+
assert_equal 2, a.get(2)
|
597
|
+
assert_equal 3.1, a.get(3)
|
598
|
+
assert_equal 4.5, a.get(4)
|
599
|
+
assert a.get(5)
|
600
|
+
assert_equal 5, a.get(6)
|
601
|
+
assert_equal 8070450532247928832, a.get(7)
|
602
|
+
assert_equal "A".sum, a.get(8)
|
603
|
+
end
|
604
|
+
|
605
|
+
def test_primitive_to_obj
|
606
|
+
Rjb::primitive_conversion = true
|
607
|
+
|
608
|
+
ar = Rjb::import('java.util.ArrayList')
|
609
|
+
a = ar.new
|
610
|
+
a.add @jString.new('abcdef')
|
611
|
+
a.add @jInteger.valueOf('1')
|
612
|
+
a.add @jShort.valueOf('2')
|
613
|
+
a.add @jDouble.valueOf('3.1')
|
614
|
+
a.add @jFloat.valueOf('4.5')
|
615
|
+
a.add @jBoolean.TRUE
|
616
|
+
a.add @jByte.valueOf('5')
|
617
|
+
a.add @jLong.valueOf('8070450532247928832')
|
618
|
+
a.add @jChar.valueOf("A".sum)
|
619
|
+
assert_equal 'abcdef', a.get(0)
|
620
|
+
assert_equal 1, a.get(1)
|
621
|
+
assert_equal 2, a.get(2)
|
622
|
+
assert_equal 3.1, a.get(3)
|
623
|
+
assert_equal 4.5, a.get(4)
|
624
|
+
assert a.get(5)
|
625
|
+
assert_equal 5, a.get(6)
|
626
|
+
assert_equal 8070450532247928832, a.get(7)
|
627
|
+
assert_equal "A".sum, a.get(8)
|
628
|
+
end
|
629
|
+
|
630
|
+
def test_enum
|
631
|
+
t = Rjb::import('jp.co.infoseek.hp.arton.rjb.Test$TestTypes')
|
632
|
+
assert t.ONE.equals(t.values()[0])
|
633
|
+
assert_equal 3, t.values().size
|
634
|
+
assert_equal 2, t.THREE.ordinal
|
635
|
+
assert_equal "TWO", t.TWO.name
|
636
|
+
assert_equal "THREE", t.THREE.toString
|
637
|
+
end
|
638
|
+
|
639
|
+
#rjb-bugs-15430 rebported by Bryan Duxbury
|
640
|
+
def test_generics_map
|
641
|
+
test = import('jp.co.infoseek.hp.arton.rjb.Test').new
|
642
|
+
map = test.sorted_map
|
643
|
+
assert_equal "\0\x1\x2\x3\x4", map.get('abc')
|
644
|
+
assert_equal "\x5\x6\x7\x8\x9", map.get('def')
|
645
|
+
end
|
646
|
+
|
647
|
+
def x_test_zzunload
|
648
|
+
# this test should run at the last
|
649
|
+
unload
|
650
|
+
begin
|
651
|
+
load('.')
|
652
|
+
fail 'no exception'
|
653
|
+
rescue
|
654
|
+
assert_equal "can't create Java VM", $!.message
|
655
|
+
end
|
656
|
+
end
|
657
|
+
|
658
|
+
module TestMixin
|
659
|
+
def test_hello(s)
|
660
|
+
'hello ' + s
|
661
|
+
end
|
662
|
+
end
|
663
|
+
def test_extend
|
664
|
+
@jString.class_eval do
|
665
|
+
include TestRjb::TestMixin
|
666
|
+
end
|
667
|
+
s = @jString.new
|
668
|
+
assert_equal('hello world', s.test_hello('world'))
|
669
|
+
end
|
670
|
+
def test_extend_with_factory
|
671
|
+
point = import('java.awt.Point')
|
672
|
+
point.class_eval do
|
673
|
+
include TestRjb::TestMixin
|
674
|
+
end
|
675
|
+
p = point.new(11, 12)
|
676
|
+
assert_equal(11, p.x)
|
677
|
+
assert_equal(12, p.y)
|
678
|
+
assert_equal('hello world', p.test_hello('world'))
|
679
|
+
p = p.location
|
680
|
+
assert_equal(11, p.x)
|
681
|
+
assert_equal(12, p.y)
|
682
|
+
assert_equal('hello world', p.test_hello('world'))
|
683
|
+
end
|
684
|
+
def test_fetch_method_signature
|
685
|
+
expected = ['I', 'II', 'Ljava.lang.String;', 'Ljava.lang.String;I']
|
686
|
+
sig = @jString.sigs('indexOf').sort
|
687
|
+
assert_equal(expected, sig)
|
688
|
+
end
|
689
|
+
def test_fetch_method_without_signature
|
690
|
+
sig =
|
691
|
+
assert_equal([nil], @jString.sigs('toString'))
|
692
|
+
end
|
693
|
+
def test_fetch_static_method_signature
|
694
|
+
expected = ['Ljava.lang.String;[Ljava.lang.Object;',
|
695
|
+
'Ljava.util.Locale;Ljava.lang.String;[Ljava.lang.Object;']
|
696
|
+
sig = @jString.static_sigs('format').sort
|
697
|
+
assert_equal(expected, sig)
|
698
|
+
end
|
699
|
+
def test_fetch_ctor_signature
|
700
|
+
expected = ['I', 'Ljava.lang.String;']
|
701
|
+
sig = @jInteger.ctor_sigs.sort
|
702
|
+
assert_equal(expected, sig)
|
703
|
+
end
|
704
|
+
def test_methods_extension
|
705
|
+
m = @jString.new('').methods
|
706
|
+
assert m.include?('indexOf')
|
707
|
+
end
|
708
|
+
def test_class_methods_extension
|
709
|
+
m = @jString.methods
|
710
|
+
assert m.include?('format')
|
711
|
+
end
|
712
|
+
def test_pmethods_extension
|
713
|
+
m = @jString.new('').public_methods
|
714
|
+
assert m.include?('indexOf')
|
715
|
+
end
|
716
|
+
def test_class_pmethods_extension
|
717
|
+
m = @jString.public_methods
|
718
|
+
assert m.include?('format')
|
719
|
+
end
|
720
|
+
def test_java_methods
|
721
|
+
indexof = @jString.new('').java_methods.find do |m|
|
722
|
+
m =~ /^indexOf/
|
723
|
+
end
|
724
|
+
args = indexof.match(/\[([^\]]+)\]/)[1]
|
725
|
+
assert_equal('Ljava.lang.String;I, II, I, Ljava.lang.String;'.split(/,\s*/).sort,
|
726
|
+
args.split(/,\s*/).sort)
|
727
|
+
end
|
728
|
+
def test_java_class_methods
|
729
|
+
format = @jString.java_methods.find do |m|
|
730
|
+
m =~ /^format/
|
731
|
+
end
|
732
|
+
args = format.match(/\[([^\]]+)\]/)[1]
|
733
|
+
assert_equal('Ljava.lang.String;[Ljava.lang.Object;, Ljava.util.Locale;Ljava.lang.String;[Ljava.lang.Object;'.split(/,\s*/).sort, args.split(/,\s*/).sort)
|
734
|
+
end
|
735
|
+
def test_64fixnum
|
736
|
+
big = @jLong.new_with_sig('J', 1230918239495)
|
737
|
+
assert_equal 1230918239495, big.long_value
|
738
|
+
end
|
739
|
+
def test_add_jar
|
740
|
+
add_jar(File.expand_path('./jartest.jar'))
|
741
|
+
jt = import('jp.co.infoseek.hp.arton.rjb.JarTest')
|
742
|
+
assert jt
|
743
|
+
assert_equal 'abcd', jt.new.add('ab', 'cd')
|
744
|
+
end
|
745
|
+
def test_add_jars
|
746
|
+
arg = ['./jartest.jar', './jartest.jar'].map do |e|
|
747
|
+
File.expand_path(e)
|
748
|
+
end
|
749
|
+
add_jar(arg)
|
750
|
+
jt = import('jp.co.infoseek.hp.arton.rjb.JarTest')
|
751
|
+
assert_equal 'abcd', jt.new.add('ab', 'cd')
|
752
|
+
end
|
753
|
+
end
|
754
|
+
|