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.
- data/ChangeLog +0 -0
- data/README +4 -0
- data/lib/javaclass/accessflag.rb +279 -0
- data/lib/javaclass/attribute.rb +1061 -0
- data/lib/javaclass/base.rb +369 -0
- data/lib/javaclass/class.rb +282 -0
- data/lib/javaclass/constant.rb +522 -0
- data/lib/javaclass/member.rb +194 -0
- data/lib/javaclass/reader.rb +449 -0
- data/lib/javaclass.rb +8 -0
- data/sample/class_list.rb +22 -0
- data/sample/create_assert.rb +69 -0
- data/sample/java_class/HelloWorld.class +0 -0
- data/sample/java_class/com/example/Constants.class +0 -0
- data/sample/java_class/com/example/Deprecated.class +0 -0
- data/sample/java_class/com/example/InnerClass$1.class +0 -0
- data/sample/java_class/com/example/InnerClass$BasicInnerClass.class +0 -0
- data/sample/java_class/com/example/InnerClass$StaticInnerClass$InnerInnerClass.class +0 -0
- data/sample/java_class/com/example/InnerClass$StaticInnerClass$StaticInnerInnerClass.class +0 -0
- data/sample/java_class/com/example/InnerClass$StaticInnerClass.class +0 -0
- data/sample/java_class/com/example/InnerClass.class +0 -0
- data/sample/java_class/com/example/InnerClassImpl$1.class +0 -0
- data/sample/java_class/com/example/InnerClassImpl$1MethodInnerClass.class +0 -0
- data/sample/java_class/com/example/InnerClassImpl$2.class +0 -0
- data/sample/java_class/com/example/InnerClassImpl$BasicInnerClass2.class +0 -0
- data/sample/java_class/com/example/InnerClassImpl$StaticInnerClass2.class +0 -0
- data/sample/java_class/com/example/InnerClassImpl.class +0 -0
- data/sample/java_class/com/example/Kitten.class +0 -0
- data/sample/java_class/com/example/ThrowsException.class +0 -0
- data/sample/java_class/com/example/annotation/Annotated.class +0 -0
- data/sample/java_class/com/example/annotation/AnnotatedMethod$A.class +0 -0
- data/sample/java_class/com/example/annotation/AnnotatedMethod$B.class +0 -0
- data/sample/java_class/com/example/annotation/AnnotatedMethod$C.class +0 -0
- data/sample/java_class/com/example/annotation/AnnotatedMethod.class +0 -0
- data/sample/java_class/com/example/annotation/ClassAnnotationA.class +0 -0
- data/sample/java_class/com/example/annotation/HasDefaultValue.class +0 -0
- data/sample/java_class/com/example/annotation/RuntimeAnnotationA.class +0 -0
- data/sample/java_class/com/example/annotation/RuntimeAnnotationB.class +0 -0
- data/sample/java_class/com/example/annotation/RuntimeAnnotationC.class +0 -0
- data/sample/java_class/com/example/annotation/SourceAnnotationA.class +0 -0
- data/sample/java_class/com/example/types/TypeVariables.class +0 -0
- data/sample/java_src/HelloWorld.java +6 -0
- data/sample/java_src/com/example/Constants.java +45 -0
- data/sample/java_src/com/example/Deprecated.java +16 -0
- data/sample/java_src/com/example/InnerClass.java +23 -0
- data/sample/java_src/com/example/InnerClassImpl.java +31 -0
- data/sample/java_src/com/example/Kitten.java +78 -0
- data/sample/java_src/com/example/ThrowsException.java +12 -0
- data/sample/java_src/com/example/annotation/Annotated.java +47 -0
- data/sample/java_src/com/example/annotation/AnnotatedMethod.java +18 -0
- data/sample/java_src/com/example/annotation/ClassAnnotationA.java +10 -0
- data/sample/java_src/com/example/annotation/HasDefaultValue.java +10 -0
- data/sample/java_src/com/example/annotation/RuntimeAnnotationA.java +15 -0
- data/sample/java_src/com/example/annotation/RuntimeAnnotationB.java +10 -0
- data/sample/java_src/com/example/annotation/RuntimeAnnotationC.java +8 -0
- data/sample/java_src/com/example/annotation/SourceAnnotationA.java +10 -0
- data/sample/java_src/com/example/types/TypeVariables.java +19 -0
- data/sample/sample.rb +27 -0
- data/test/all-tests.rb +32 -0
- data/test/java_class/com/example/TestClass1$1.class +0 -0
- data/test/java_class/com/example/TestClass1$Hoo.class +0 -0
- data/test/java_class/com/example/TestClass1$Var.class +0 -0
- data/test/java_class/com/example/TestClass1.class +0 -0
- data/test/java_src/com/example/TestClass1.java +28 -0
- data/test/test_access_flag.rb +205 -0
- data/test/test_attribute.rb +955 -0
- data/test/test_class.rb +90 -0
- data/test/test_constant.rb +830 -0
- data/test/test_member.rb +282 -0
- data/test/test_util.rb +20 -0
- metadata +157 -0
@@ -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,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.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,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
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -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
|