unageanu-javaclass 0.0.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.
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