unageanu-javaclass 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (71) hide show
  1. data/ChangeLog +0 -0
  2. data/README +4 -0
  3. data/lib/javaclass/accessflag.rb +279 -0
  4. data/lib/javaclass/attribute.rb +1061 -0
  5. data/lib/javaclass/base.rb +369 -0
  6. data/lib/javaclass/class.rb +282 -0
  7. data/lib/javaclass/constant.rb +522 -0
  8. data/lib/javaclass/member.rb +194 -0
  9. data/lib/javaclass/reader.rb +449 -0
  10. data/lib/javaclass.rb +8 -0
  11. data/sample/class_list.rb +22 -0
  12. data/sample/create_assert.rb +69 -0
  13. data/sample/java_class/HelloWorld.class +0 -0
  14. data/sample/java_class/com/example/Constants.class +0 -0
  15. data/sample/java_class/com/example/Deprecated.class +0 -0
  16. data/sample/java_class/com/example/InnerClass$1.class +0 -0
  17. data/sample/java_class/com/example/InnerClass$BasicInnerClass.class +0 -0
  18. data/sample/java_class/com/example/InnerClass$StaticInnerClass$InnerInnerClass.class +0 -0
  19. data/sample/java_class/com/example/InnerClass$StaticInnerClass$StaticInnerInnerClass.class +0 -0
  20. data/sample/java_class/com/example/InnerClass$StaticInnerClass.class +0 -0
  21. data/sample/java_class/com/example/InnerClass.class +0 -0
  22. data/sample/java_class/com/example/InnerClassImpl$1.class +0 -0
  23. data/sample/java_class/com/example/InnerClassImpl$1MethodInnerClass.class +0 -0
  24. data/sample/java_class/com/example/InnerClassImpl$2.class +0 -0
  25. data/sample/java_class/com/example/InnerClassImpl$BasicInnerClass2.class +0 -0
  26. data/sample/java_class/com/example/InnerClassImpl$StaticInnerClass2.class +0 -0
  27. data/sample/java_class/com/example/InnerClassImpl.class +0 -0
  28. data/sample/java_class/com/example/Kitten.class +0 -0
  29. data/sample/java_class/com/example/ThrowsException.class +0 -0
  30. data/sample/java_class/com/example/annotation/Annotated.class +0 -0
  31. data/sample/java_class/com/example/annotation/AnnotatedMethod$A.class +0 -0
  32. data/sample/java_class/com/example/annotation/AnnotatedMethod$B.class +0 -0
  33. data/sample/java_class/com/example/annotation/AnnotatedMethod$C.class +0 -0
  34. data/sample/java_class/com/example/annotation/AnnotatedMethod.class +0 -0
  35. data/sample/java_class/com/example/annotation/ClassAnnotationA.class +0 -0
  36. data/sample/java_class/com/example/annotation/HasDefaultValue.class +0 -0
  37. data/sample/java_class/com/example/annotation/RuntimeAnnotationA.class +0 -0
  38. data/sample/java_class/com/example/annotation/RuntimeAnnotationB.class +0 -0
  39. data/sample/java_class/com/example/annotation/RuntimeAnnotationC.class +0 -0
  40. data/sample/java_class/com/example/annotation/SourceAnnotationA.class +0 -0
  41. data/sample/java_class/com/example/types/TypeVariables.class +0 -0
  42. data/sample/java_src/HelloWorld.java +6 -0
  43. data/sample/java_src/com/example/Constants.java +45 -0
  44. data/sample/java_src/com/example/Deprecated.java +16 -0
  45. data/sample/java_src/com/example/InnerClass.java +23 -0
  46. data/sample/java_src/com/example/InnerClassImpl.java +31 -0
  47. data/sample/java_src/com/example/Kitten.java +78 -0
  48. data/sample/java_src/com/example/ThrowsException.java +12 -0
  49. data/sample/java_src/com/example/annotation/Annotated.java +47 -0
  50. data/sample/java_src/com/example/annotation/AnnotatedMethod.java +18 -0
  51. data/sample/java_src/com/example/annotation/ClassAnnotationA.java +10 -0
  52. data/sample/java_src/com/example/annotation/HasDefaultValue.java +10 -0
  53. data/sample/java_src/com/example/annotation/RuntimeAnnotationA.java +15 -0
  54. data/sample/java_src/com/example/annotation/RuntimeAnnotationB.java +10 -0
  55. data/sample/java_src/com/example/annotation/RuntimeAnnotationC.java +8 -0
  56. data/sample/java_src/com/example/annotation/SourceAnnotationA.java +10 -0
  57. data/sample/java_src/com/example/types/TypeVariables.java +19 -0
  58. data/sample/sample.rb +27 -0
  59. data/test/all-tests.rb +32 -0
  60. data/test/java_class/com/example/TestClass1$1.class +0 -0
  61. data/test/java_class/com/example/TestClass1$Hoo.class +0 -0
  62. data/test/java_class/com/example/TestClass1$Var.class +0 -0
  63. data/test/java_class/com/example/TestClass1.class +0 -0
  64. data/test/java_src/com/example/TestClass1.java +28 -0
  65. data/test/test_access_flag.rb +205 -0
  66. data/test/test_attribute.rb +955 -0
  67. data/test/test_class.rb +90 -0
  68. data/test/test_constant.rb +830 -0
  69. data/test/test_member.rb +282 -0
  70. data/test/test_util.rb +20 -0
  71. metadata +157 -0
@@ -0,0 +1,16 @@
1
+ package com.example;
2
+
3
+ /**
4
+ * @deprecated
5
+ */
6
+ public class Deprecated {
7
+
8
+ /**@deprecated*/
9
+ static final int DEPRECATED_FIELD = 0;
10
+
11
+ /**@deprecated*/
12
+ Deprecated() {}
13
+
14
+ /**@deprecated*/
15
+ public void deprecatedMethod () {}
16
+ }
@@ -0,0 +1,23 @@
1
+ package com.example;
2
+
3
+
4
+ import java.util.Map;
5
+
6
+ public interface InnerClass {
7
+
8
+ // staticなインナークラス
9
+ static class StaticInnerClass {
10
+ // インナークラス内インナークラス
11
+ static class StaticInnerInnerClass{}
12
+ class InnerInnerClass{}
13
+ }
14
+
15
+ // インナークラス
16
+ class BasicInnerClass {}
17
+
18
+ // 匿名クラス
19
+ Object x = new Object() {
20
+ public String toString() { return "x"; }
21
+ };
22
+
23
+ }
@@ -0,0 +1,31 @@
1
+ package com.example;
2
+
3
+
4
+ import java.util.Map;
5
+
6
+
7
+ public class InnerClassImpl
8
+ implements InnerClass {
9
+
10
+ // staticなインナークラス
11
+ static class StaticInnerClass2 {}
12
+
13
+ // インナークラス
14
+ class BasicInnerClass2 {}
15
+
16
+ // 匿名クラス
17
+ Object xx = new Object() {
18
+ public String toString() { return "xx"; }
19
+ };
20
+
21
+ public static void main() {
22
+
23
+ // 関数内クラス
24
+ class MethodInnerClass {}
25
+
26
+ // 関数内の匿名クラス
27
+ Object yy = new Object() {
28
+ public String toString() { return "yy"; }
29
+ };
30
+ }
31
+ }
@@ -0,0 +1,78 @@
1
+ package com.example;
2
+
3
+ import java.io.Serializable;
4
+
5
+ /**
6
+ * 猫。
7
+ *
8
+ * @version $Revision:$
9
+ * @author $Author:$
10
+ */
11
+ public class Kitten implements Serializable {
12
+
13
+ /**
14
+ * 名前
15
+ */
16
+ private String name = "";
17
+
18
+ /**
19
+ * 年齢
20
+ */
21
+ private int age = 0;
22
+
23
+ /**
24
+ * コンストラクタ
25
+ */
26
+ public Kitten (){}
27
+
28
+ /**
29
+ * コンストラクタ
30
+ *
31
+ * @param name
32
+ * 名前
33
+ * @param age
34
+ * 年齢
35
+ */
36
+ public Kitten (
37
+ String name,
38
+ int age ) {
39
+ this.name = name;
40
+ this.age = age;
41
+ }
42
+
43
+ /**
44
+ * 名前を取得する。
45
+ * @return 名前
46
+ */
47
+ public String getName () {
48
+ return name;
49
+ }
50
+ /**
51
+ * 名前を設定する。
52
+ * @param name 名前
53
+ */
54
+ public void setName ( String name ) {
55
+ this.name = name;
56
+ }
57
+
58
+ /**
59
+ * 年齢を取得する。
60
+ * @return 年齢
61
+ */
62
+ public int getAge () {
63
+ return age;
64
+ }
65
+ /**
66
+ * 年齢を設定する。
67
+ * @param age 年齢
68
+ */
69
+ public void setAge ( int age ) {
70
+ this.age = age;
71
+ }
72
+ /**
73
+ * 鳴く
74
+ */
75
+ public void meow( ) {
76
+ System.out.println( "meow!" );
77
+ }
78
+ }
@@ -0,0 +1,12 @@
1
+ package com.example;
2
+
3
+ import java.io.IOException;
4
+
5
+ /**
6
+ * 例外を投げる
7
+ */
8
+ public class ThrowsException {
9
+ public static void main ( String[] args )
10
+ throws IOException, IllegalArgumentException, OutOfMemoryError {}
11
+
12
+ }
@@ -0,0 +1,47 @@
1
+ package com.example.annotation;
2
+
3
+ import java.util.ArrayList;
4
+
5
+ @RuntimeAnnotationA(
6
+ string = "aaa",
7
+ stringArray = { "a", "b", "c" },
8
+ bool = false,
9
+ integer = 1000,
10
+ state = Thread.State.BLOCKED,
11
+ type = ArrayList.class
12
+ )
13
+ @RuntimeAnnotationB("test")
14
+ @SourceAnnotationA("test")
15
+ @ClassAnnotationA("test")
16
+ public class Annotated {
17
+
18
+ @RuntimeAnnotationA(
19
+ string = "bbb",
20
+ stringArray = { "a", "b", "c" },
21
+ bool = false,
22
+ integer = 1000,
23
+ state = Thread.State.BLOCKED,
24
+ type = ArrayList.class
25
+ )
26
+ @RuntimeAnnotationB("test")
27
+ @SourceAnnotationA("test")
28
+ @ClassAnnotationA("test")
29
+ public String foo;
30
+
31
+ // アノテーション付きメソッド。
32
+ // パラメータもアノテーションを持つ。
33
+ @RuntimeAnnotationA(
34
+ string = "ccc",
35
+ stringArray = { "a", "b", "c" },
36
+ bool = false,
37
+ integer = 1000,
38
+ state = Thread.State.BLOCKED,
39
+ type = ArrayList.class
40
+ )
41
+ @RuntimeAnnotationB("test")
42
+ @SourceAnnotationA("test")
43
+ @ClassAnnotationA("test")
44
+ void foo(
45
+ @HasDefaultValue @RuntimeAnnotationB("test") @RuntimeAnnotationC String str,
46
+ @RuntimeAnnotationC @RuntimeAnnotationB("test") int x ) {}
47
+ }
@@ -0,0 +1,18 @@
1
+ package com.example.annotation;
2
+
3
+ import java.util.ArrayList;
4
+
5
+ public class AnnotatedMethod {
6
+
7
+
8
+ // アノテーション付きパラメータを持つメソッド。
9
+ void foo(
10
+ @A("test") @B @C String str,
11
+ @B @C int x ) {}
12
+
13
+ static @interface A {
14
+ String value();
15
+ }
16
+ static @interface B {}
17
+ static @interface C {}
18
+ }
@@ -0,0 +1,10 @@
1
+ package com.example.annotation;
2
+
3
+ import java.lang.annotation.Retention;
4
+ import java.lang.annotation.RetentionPolicy;
5
+ import java.util.List;
6
+
7
+ @Retention( RetentionPolicy.CLASS )
8
+ public @interface ClassAnnotationA {
9
+ String value();
10
+ }
@@ -0,0 +1,10 @@
1
+ package com.example.annotation;
2
+
3
+ import java.lang.annotation.Retention;
4
+ import java.lang.annotation.RetentionPolicy;
5
+ import java.util.List;
6
+
7
+ @Retention( RetentionPolicy.RUNTIME )
8
+ public @interface HasDefaultValue {
9
+ String value() default "default";
10
+ }
@@ -0,0 +1,15 @@
1
+ package com.example.annotation;
2
+
3
+ import java.lang.annotation.Retention;
4
+ import java.lang.annotation.RetentionPolicy;
5
+ import java.util.List;
6
+
7
+ @Retention( RetentionPolicy.RUNTIME )
8
+ public @interface RuntimeAnnotationA {
9
+ String string();
10
+ String[] stringArray();
11
+ int integer();
12
+ boolean bool();
13
+ java.lang.Class<? extends List> type();
14
+ Thread.State state();
15
+ }
@@ -0,0 +1,10 @@
1
+ package com.example.annotation;
2
+
3
+ import java.lang.annotation.Retention;
4
+ import java.lang.annotation.RetentionPolicy;
5
+ import java.util.List;
6
+
7
+ @Retention( RetentionPolicy.RUNTIME )
8
+ public @interface RuntimeAnnotationB {
9
+ String value();
10
+ }
@@ -0,0 +1,8 @@
1
+ package com.example.annotation;
2
+
3
+ import java.lang.annotation.Retention;
4
+ import java.lang.annotation.RetentionPolicy;
5
+ import java.util.List;
6
+
7
+ @Retention( RetentionPolicy.RUNTIME )
8
+ public @interface RuntimeAnnotationC {}
@@ -0,0 +1,10 @@
1
+ package com.example.annotation;
2
+
3
+ import java.lang.annotation.Retention;
4
+ import java.lang.annotation.RetentionPolicy;
5
+ import java.util.List;
6
+
7
+ @Retention( RetentionPolicy.SOURCE )
8
+ public @interface SourceAnnotationA {
9
+ String value();
10
+ }
@@ -0,0 +1,19 @@
1
+ package com.example.types;
2
+
3
+ import java.util.List;
4
+ import java.util.Set;
5
+
6
+ public class TypeVariables<T> {
7
+
8
+ private List<T> list;
9
+ private List<String> list2;
10
+ private List<? extends String>[] list3;
11
+
12
+ public <S, U extends T> S foo( List<U> args ) {
13
+ return null;
14
+ }
15
+
16
+ public <U extends Object & List & Set > U var( List<U> args ) {
17
+ return null;
18
+ }
19
+ }
data/sample/sample.rb ADDED
@@ -0,0 +1,27 @@
1
+
2
+ require "rubygems"
3
+ require "javaclass"
4
+ require "kconv"
5
+
6
+ [
7
+ "./java_class/com/example/Kitten.class",
8
+ "./java_class/HelloWorld.class",
9
+ "./java_class/com/example/Constants.class",
10
+ "./java_class/com/example/InnerClass.class",
11
+ "./java_class/com/example/InnerClassImpl.class",
12
+ "./java_class/com/example/InnerClass$StaticInnerClass.class",
13
+ "./java_class/com/example/ThrowsException.class",
14
+ "./java_class/com/example/InnerClassImpl$1MethodInnerClass.class",
15
+ "./java_class/com/example/InnerClassImpl$2.class",
16
+ "./java_class/com/example/types/TypeVariables.class",
17
+ "./java_class/com/example/Deprecated.class",
18
+ "./java_class/com/example/annotation/Annotated.class",
19
+ "./java_class/com/example/annotation/HasDefaultValue.class",
20
+ "./java_class/com/example/annotation/AnnotatedMethod.class"
21
+ ].each { |c|
22
+ open( c, "r+b" ) {|io|
23
+ jc = JavaClass.from io
24
+ puts jc.to_s.tosjis
25
+ puts ""
26
+ }
27
+ }
data/test/all-tests.rb ADDED
@@ -0,0 +1,32 @@
1
+
2
+ $: << "../src"
3
+
4
+ require 'test/unit/testsuite'
5
+ require 'access-flag-test'
6
+ require 'attribute-test'
7
+ require 'constant-test'
8
+ require 'member-test'
9
+
10
+ module JavaClass
11
+
12
+ class AllTests
13
+ def self.suite
14
+ suite = Test::Unit::TestSuite.new( "javaclass all tests." )
15
+ suite << AccessFlagTest.suite
16
+ suite << AttributeTest.suite
17
+ suite << AttributeTest.suite
18
+ suite << UTF8ConstantTest
19
+ suite << IntegerConstantTest
20
+ suite << LongConstantTest.suite
21
+ suite << FloatConstantTest.suite
22
+ suite << DoubleConstantTest.suite
23
+ suite << StringConstantTest.suite
24
+ suite << NameAndTypeConstantTest.suite
25
+ suite << ClassConstantTest.suite
26
+ suite << MemberRefConstantTest.suite
27
+ suite << MemberTest.suite
28
+ return suite
29
+ end
30
+ end
31
+
32
+ end
@@ -0,0 +1,28 @@
1
+ package com.example;
2
+
3
+ import java.io.Closeable;
4
+ import java.io.IOException;
5
+ import java.io.Serializable;
6
+ import java.util.ArrayList;
7
+ import java.util.List;
8
+
9
+ public final class TestClass1<T, X extends Runnable>
10
+ extends ArrayList<T>
11
+ implements Serializable, Closeable{
12
+
13
+ static class Hoo {};
14
+ class Var {};
15
+ Object x = new Object() {}; // 無名クラス
16
+
17
+ static String stringConstant = "あいう";
18
+ static int intConstant = 1;
19
+ static long longConstant = 100L;
20
+ static List<String> listConstant = new ArrayList<String>();
21
+ static float floatConstant = 0F;
22
+ static double doubleConstant0 = 0D;
23
+ static byte byteConstant = 10;
24
+ static char charConstant = 'a';
25
+ static boolean booleanConstant = false;
26
+
27
+ public void close() throws IOException {}
28
+ }
@@ -0,0 +1,205 @@
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
+ #=== AccessFlagのテスト。
15
+ #
16
+ class AccessFlagTest < Test::Unit::TestCase
17
+
18
+ def setup
19
+ end
20
+
21
+ def teardown
22
+ end
23
+
24
+ def test_class_access_flag
25
+
26
+ a = ClassAccessFlag.new( ClassAccessFlag::ACC_PUBLIC )
27
+ assert_equal a.to_s, "public class"
28
+ assert_equal a.dump, "0001"
29
+ assert_equal a.source_modifiers, []
30
+ assert_equal a.accessor, "public"
31
+ assert_equal a.type, "class"
32
+ assert a.on?(ClassAccessFlag::ACC_PUBLIC)
33
+ assert !a.on?(ClassAccessFlag::ACC_FINAL)
34
+ assert !a.on?(ClassAccessFlag::ACC_ABSTRACT)
35
+
36
+ a.on( ClassAccessFlag::ACC_INTERFACE )
37
+ a.on( ClassAccessFlag::ACC_ABSTRACT )
38
+ assert_equal a.to_s, "public abstract interface"
39
+ assert_equal a.dump, "0601"
40
+ assert_equal a.source_modifiers, ["abstract"]
41
+ assert_equal a.accessor, "public"
42
+ assert_equal a.type, "interface"
43
+ assert a.on?(ClassAccessFlag::ACC_PUBLIC)
44
+ assert a.on?(ClassAccessFlag::ACC_INTERFACE)
45
+ assert !a.on?(ClassAccessFlag::ACC_FINAL)
46
+ assert a.on?(ClassAccessFlag::ACC_ABSTRACT)
47
+
48
+ a.off( ClassAccessFlag::ACC_INTERFACE )
49
+ a.off( ClassAccessFlag::ACC_ABSTRACT )
50
+ a.off( ClassAccessFlag::ACC_PUBLIC )
51
+ a.on( ClassAccessFlag::ACC_ENUM )
52
+ assert_equal a.to_s, "enum"
53
+ assert_equal a.dump, "4000"
54
+ assert_equal a.source_modifiers, []
55
+ assert_equal a.accessor, ""
56
+ assert_equal a.type, "enum"
57
+ assert !a.on?(ClassAccessFlag::ACC_PUBLIC)
58
+ assert !a.on?(ClassAccessFlag::ACC_INTERFACE)
59
+ assert !a.on?(ClassAccessFlag::ACC_FINAL)
60
+ assert a.on?(ClassAccessFlag::ACC_ENUM)
61
+
62
+ a.off( ClassAccessFlag::ACC_ENUM )
63
+ a.on( ClassAccessFlag::ACC_PUBLIC )
64
+ a.on( ClassAccessFlag::ACC_ANNOTATION )
65
+ a.on( ClassAccessFlag::ACC_INTERFACE )
66
+ assert_equal a.to_s, "public @interface"
67
+ assert_equal a.dump, "2201"
68
+ assert_equal a.source_modifiers, []
69
+ assert_equal a.accessor, "public"
70
+ assert_equal a.type, "@interface"
71
+ assert a.on?(ClassAccessFlag::ACC_PUBLIC)
72
+ assert a.on?(ClassAccessFlag::ACC_INTERFACE)
73
+ assert !a.on?(ClassAccessFlag::ACC_FINAL)
74
+ assert a.on?(ClassAccessFlag::ACC_ANNOTATION)
75
+
76
+ end
77
+ def test_field_access_flag
78
+
79
+ a = FieldAccessFlag.new( FieldAccessFlag::ACC_PUBLIC )
80
+ assert_equal a.to_s, "public"
81
+ assert_equal a.dump, "0001"
82
+ assert_equal a.source_modifiers, []
83
+ assert_equal a.accessor, "public"
84
+ assert a.on?(FieldAccessFlag::ACC_PUBLIC)
85
+ assert !a.on?(FieldAccessFlag::ACC_FINAL)
86
+ assert !a.on?(FieldAccessFlag::ACC_STATIC)
87
+
88
+ a.off( FieldAccessFlag::ACC_PUBLIC )
89
+ a.on( FieldAccessFlag::ACC_PROTECTED )
90
+ a.on( FieldAccessFlag::ACC_STATIC )
91
+ a.on( FieldAccessFlag::ACC_FINAL )
92
+ a.on( FieldAccessFlag::ACC_ENUM )
93
+ assert_equal a.to_s, "protected static final"
94
+ assert_equal a.dump, "401C"
95
+ assert_equal a.source_modifiers, ["static","final"]
96
+ assert_equal a.accessor, "protected"
97
+
98
+ a.off( FieldAccessFlag::ACC_PROTECTED )
99
+ a.on( FieldAccessFlag::ACC_PRIVATE )
100
+ a.on( FieldAccessFlag::ACC_VOLATILE )
101
+ a.on( FieldAccessFlag::ACC_TRANSIENT )
102
+ a.off( FieldAccessFlag::ACC_STATIC )
103
+ a.off( FieldAccessFlag::ACC_FINAL )
104
+ a.off( FieldAccessFlag::ACC_ENUM )
105
+ assert_equal a.to_s, "private volatile transient"
106
+ assert_equal a.dump, "00C2"
107
+ assert_equal a.source_modifiers, ["volatile","transient"]
108
+ assert_equal a.accessor, "private"
109
+
110
+ a.off( FieldAccessFlag::ACC_PRIVATE )
111
+ a.off( FieldAccessFlag::ACC_VOLATILE )
112
+ a.off( FieldAccessFlag::ACC_TRANSIENT )
113
+ assert_equal a.to_s, ""
114
+ assert_equal a.dump, "0000"
115
+ assert_equal a.source_modifiers, []
116
+ assert_equal a.accessor, ""
117
+
118
+ end
119
+
120
+ def test_method_access_flag
121
+
122
+ a = MethodAccessFlag.new( MethodAccessFlag::ACC_PUBLIC )
123
+ assert_equal a.to_s, "public"
124
+ assert_equal a.dump, "0001"
125
+ assert_equal a.source_modifiers, []
126
+ assert_equal a.accessor, "public"
127
+ assert a.on?(MethodAccessFlag::ACC_PUBLIC)
128
+ assert !a.on?(MethodAccessFlag::ACC_FINAL)
129
+ assert !a.on?(MethodAccessFlag::ACC_STATIC)
130
+
131
+ a.off( MethodAccessFlag::ACC_PUBLIC )
132
+ a.on( MethodAccessFlag::ACC_PROTECTED )
133
+ a.on( MethodAccessFlag::ACC_STATIC )
134
+ a.on( MethodAccessFlag::ACC_FINAL )
135
+ assert_equal a.to_s, "protected static final"
136
+ assert_equal a.dump, "001C"
137
+ assert_equal a.source_modifiers, ["static","final"]
138
+ assert_equal a.accessor, "protected"
139
+
140
+ a.off( MethodAccessFlag::ACC_PROTECTED )
141
+ a.on( MethodAccessFlag::ACC_PRIVATE )
142
+ a.on( MethodAccessFlag::ACC_NATIVE )
143
+ a.on( MethodAccessFlag::ACC_VARARGS )
144
+ a.on( MethodAccessFlag::ACC_SYNCHRONIZED)
145
+ a.off( MethodAccessFlag::ACC_STATIC )
146
+ a.off( MethodAccessFlag::ACC_FINAL )
147
+ assert_equal a.to_s, "private synchronized native"
148
+ assert_equal a.dump, "01A2"
149
+ assert_equal a.source_modifiers, ["synchronized", "native"]
150
+ assert_equal a.accessor, "private"
151
+
152
+ a.off( MethodAccessFlag::ACC_PRIVATE )
153
+ a.off( MethodAccessFlag::ACC_NATIVE )
154
+ a.off( MethodAccessFlag::ACC_VARARGS )
155
+ a.off( MethodAccessFlag::ACC_SYNCHRONIZED)
156
+ assert_equal a.to_s, ""
157
+ assert_equal a.dump, "0000"
158
+ assert_equal a.source_modifiers, []
159
+ assert_equal a.accessor, ""
160
+
161
+ end
162
+
163
+ def test_inner_class_access_flag
164
+
165
+ a = InnerClassAccessFlag.new( InnerClassAccessFlag::ACC_PUBLIC )
166
+ assert_equal a.to_s, "public class"
167
+ assert_equal a.dump, "0001"
168
+ assert_equal a.source_modifiers, []
169
+ assert_equal a.accessor, "public"
170
+ assert a.on?(InnerClassAccessFlag::ACC_PUBLIC)
171
+ assert !a.on?(InnerClassAccessFlag::ACC_FINAL)
172
+ assert !a.on?(InnerClassAccessFlag::ACC_STATIC)
173
+
174
+ a.off( InnerClassAccessFlag::ACC_PUBLIC )
175
+ a.on( InnerClassAccessFlag::ACC_PROTECTED )
176
+ a.on( InnerClassAccessFlag::ACC_STATIC )
177
+ a.on( InnerClassAccessFlag::ACC_FINAL )
178
+ assert_equal a.to_s, "protected static final class"
179
+ assert_equal a.dump, "001C"
180
+ assert_equal a.source_modifiers, ["static","final"]
181
+ assert_equal a.accessor, "protected"
182
+
183
+ a.off( InnerClassAccessFlag::ACC_PROTECTED )
184
+ a.on( InnerClassAccessFlag::ACC_PRIVATE )
185
+ a.on( InnerClassAccessFlag::ACC_SYNTHETIC )
186
+ a.on( InnerClassAccessFlag::ACC_ENUM )
187
+ a.off( InnerClassAccessFlag::ACC_STATIC )
188
+ a.off( InnerClassAccessFlag::ACC_FINAL )
189
+ assert_equal a.to_s, "private enum"
190
+ assert_equal a.dump, "5002"
191
+ assert_equal a.source_modifiers, []
192
+ assert_equal a.accessor, "private"
193
+
194
+ a.off( InnerClassAccessFlag::ACC_PRIVATE )
195
+ a.off( InnerClassAccessFlag::ACC_SYNTHETIC )
196
+ a.off( InnerClassAccessFlag::ACC_ENUM)
197
+ assert_equal a.to_s, "class"
198
+ assert_equal a.dump, "0000"
199
+ assert_equal a.source_modifiers, []
200
+ assert_equal a.accessor, ""
201
+
202
+ end
203
+
204
+ end
205
+ end