unageanu-javaclass 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|