unageanu-javaclass 0.0.1 → 0.1.1

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/test/test_class.rb CHANGED
@@ -1,90 +1,90 @@
1
- #!/usr/bin/ruby
2
-
3
- $: << "../lib"
4
-
5
- require "test/unit"
6
- require "javaclass"
7
- require "test_util"
8
-
9
- require "javaclass"
10
-
11
- module JavaClass
12
-
13
- #
14
- #=== Classのテスト
15
- #
16
- class ClassTest < Test::Unit::TestCase
17
-
18
- include TestUtil
19
- include ConstantFactory
20
-
21
- def setup
22
- end
23
-
24
- def teardown
25
- end
26
-
27
- #
28
- #=== 基本のクラスの解析テスト
29
- #
30
- def test_basic_parse
31
-
32
- jc = get_class_from_resource( "/java_class/com/example/TestClass1.class")
33
- assert_class( jc ) {|a|
34
- assert_equal a.name, "com.example.TestClass1"
35
- assert_equal a.super_class, "java.util.ArrayList"
36
- assert_equal a.interfaces, ["java.io.Serializable", "java.io.Closeable"]
37
- assert_equal a.signature, "<T:Ljava/lang/Object;X::Ljava/lang/Runnable;>Ljava/util/ArrayList<TT;>;Ljava/io/Serializable;Ljava/io/Closeable;"
38
- assert_equal a.deprecated?, false
39
- assert_equal a.source_file, "TestClass1.java"
40
- assert_equal a.inner_classes.map{|c| "#{c.name}:#{c.inner_class.name}" },
41
- [ ":com.example.TestClass1$1", "Hoo:com.example.TestClass1$Hoo", "Var:com.example.TestClass1$Var" ]
42
- assert_equal a.enclosing_method, nil
43
- assert_equal a.access_flag, ClassAccessFlag.new(
44
- ClassAccessFlag::ACC_PUBLIC | ClassAccessFlag::ACC_FINAL | ClassAccessFlag::ACC_SUPER )
45
- assert_equal a.fields.length, 10
46
- assert_equal a.methods.length, 3
47
-
48
- assert_equal a.find_method( "close" ).name, "close"
49
- assert_equal a.find_method( "not found" ), nil
50
- assert_equal a.find_method( "close", "void" ).name, "close"
51
- assert_equal a.find_method( "close", "not" ), nil
52
- assert_equal a.find_method( "close", "void", [] ).name, "close"
53
- assert_equal a.find_method( "close", "void", ["not"] ), nil
54
-
55
- assert_equal a.find_field( "stringConstant" ).name, "stringConstant"
56
- assert_equal a.find_field( "not found" ), nil
57
- }
58
-
59
- end
60
-
61
- #
62
- #=== Constantの追加のテスト
63
- #
64
- def test_put_constant
65
-
66
- jc = get_class_from_resource( "/java_class/com/example/TestClass1.class")
67
- str_index = jc.put_constant( utf8("abc" ) )
68
- puts str_index
69
- assert_equal str_index, jc.put_constant( utf8("abc" ) ) # 同じindexが返される。
70
-
71
- # バイト配列化→復元で同じ値が返されることを確認
72
- assert_class( jc ) {|a|
73
- assert_equal a.get_constant_value( str_index ), "abc"
74
- }
75
- end
76
-
77
- def get_class_from_resource( path )
78
- File.open( resource( path), "r" ) {|f|
79
- JavaClass.from f
80
- }
81
- end
82
-
83
- def assert_class( a, &block )
84
- assert_to_byte_and_read a, block, proc {|io|
85
- JavaClass.from( io )
86
- }
87
- end
88
- end
89
-
90
- end
1
+ #!/usr/bin/ruby
2
+
3
+ $: << "../lib"
4
+
5
+ require "test/unit"
6
+ require "javaclass"
7
+ require "test_util"
8
+
9
+ require "javaclass"
10
+
11
+ module JavaClass
12
+
13
+ #
14
+ #=== Classのテスト
15
+ #
16
+ class ClassTest < Test::Unit::TestCase
17
+
18
+ include TestUtil
19
+ include ConstantFactory
20
+
21
+ def setup
22
+ end
23
+
24
+ def teardown
25
+ end
26
+
27
+ #
28
+ #=== 基本のクラスの解析テスト
29
+ #
30
+ def test_basic_parse
31
+
32
+ jc = get_class_from_resource( "/java_class/com/example/TestClass1.class")
33
+ assert_class( jc ) {|a|
34
+ assert_equal a.name, "com.example.TestClass1"
35
+ assert_equal a.super_class, "java.util.ArrayList"
36
+ assert_equal a.interfaces, ["java.io.Serializable", "java.io.Closeable"]
37
+ assert_equal a.signature, "<T:Ljava/lang/Object;X::Ljava/lang/Runnable;>Ljava/util/ArrayList<TT;>;Ljava/io/Serializable;Ljava/io/Closeable;"
38
+ assert_equal a.deprecated?, false
39
+ assert_equal a.source_file, "TestClass1.java"
40
+ assert_equal a.inner_classes.map{|c| "#{c.name}:#{c.inner_class.name}" },
41
+ [ ":com.example.TestClass1$1", "Hoo:com.example.TestClass1$Hoo", "Var:com.example.TestClass1$Var" ]
42
+ assert_equal a.enclosing_method, nil
43
+ assert_equal a.access_flag, ClassAccessFlag.new(
44
+ ClassAccessFlag::ACC_PUBLIC | ClassAccessFlag::ACC_FINAL | ClassAccessFlag::ACC_SUPER )
45
+ assert_equal a.fields.length, 10
46
+ assert_equal a.methods.length, 3
47
+
48
+ assert_equal a.find_method( "close" ).name, "close"
49
+ assert_equal a.find_method( "not found" ), nil
50
+ assert_equal a.find_method( "close", "void" ).name, "close"
51
+ assert_equal a.find_method( "close", "not" ), nil
52
+ assert_equal a.find_method( "close", "void", [] ).name, "close"
53
+ assert_equal a.find_method( "close", "void", ["not"] ), nil
54
+
55
+ assert_equal a.find_field( "stringConstant" ).name, "stringConstant"
56
+ assert_equal a.find_field( "not found" ), nil
57
+ }
58
+
59
+ end
60
+
61
+ #
62
+ #=== Constantの追加のテスト
63
+ #
64
+ def test_put_constant
65
+
66
+ jc = get_class_from_resource( "/java_class/com/example/TestClass1.class")
67
+ str_index = jc.put_constant( utf8("abc" ) )
68
+ puts str_index
69
+ assert_equal str_index, jc.put_constant( utf8("abc" ) ) # 同じindexが返される。
70
+
71
+ # バイト配列化→復元で同じ値が返されることを確認
72
+ assert_class( jc ) {|a|
73
+ assert_equal a.get_constant_value( str_index ), "abc"
74
+ }
75
+ end
76
+
77
+ def get_class_from_resource( path )
78
+ File.open( resource( path), "r" ) {|f|
79
+ JavaClass.from f
80
+ }
81
+ end
82
+
83
+ def assert_class( a, &block )
84
+ assert_to_byte_and_read a, block, proc {|io|
85
+ JavaClass.from( io )
86
+ }
87
+ end
88
+ end
89
+
90
+ end