javaclass 0.0.2 → 0.0.3
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/Rakefile +208 -23
- data/Readme.txt +56 -19
- data/examples/generate_class_lists.rb +61 -0
- data/history.txt +13 -19
- data/lib/javaclass/classfile/access_flags.rb +52 -0
- data/lib/javaclass/classfile/class_magic.rb +29 -0
- data/lib/javaclass/classfile/class_version.rb +67 -0
- data/lib/javaclass/classfile/constant_pool.rb +91 -0
- data/lib/javaclass/classfile/constants/base.rb +33 -0
- data/lib/javaclass/classfile/constants/double_reference.rb +99 -0
- data/lib/javaclass/classfile/constants/single_reference.rb +65 -0
- data/lib/javaclass/classfile/constants/value.rb +116 -0
- data/lib/javaclass/classfile/java_class_header.rb +102 -0
- data/lib/javaclass/classfile/references.rb +43 -0
- data/lib/javaclass/classlist/class_entry.rb +89 -0
- data/lib/javaclass/classlist/jar_searcher.rb +69 -0
- data/lib/javaclass/classlist/list.rb +126 -0
- data/lib/javaclass/classlist/package_entry.rb +87 -0
- data/lib/javaclass/classpath/classpaths.txt +2 -0
- data/lib/javaclass/classpath/composite_classpath.rb +99 -0
- data/lib/javaclass/classpath/folder_classpath.rb +83 -0
- data/lib/javaclass/classpath/jar_classpath.rb +100 -0
- data/lib/javaclass/classpath/java_home_classpath.rb +40 -0
- data/lib/javaclass/classpath/port_ClassPathEntry.java +202 -0
- data/lib/javaclass/classpath/port_ClassPathEntryFactory.java +311 -0
- data/lib/javaclass/classpath/port_DirectoryRepository.java +24 -0
- data/lib/javaclass/java_name.rb +90 -0
- data/lib/javaclass/metric/ccd.rb +68 -0
- data/lib/javaclass/metric/class_usage.rb +41 -0
- data/lib/javaclass/metric/metrics.txt +15 -0
- data/lib/javaclass.rb +44 -11
- data/test/data/ShortClientData$1-4000Wert.class +0 -0
- data/test/data/{AccessFlagsTestAbstract.class → access_flags/AccessFlagsTestAbstract.class} +0 -0
- data/test/data/{AccessFlagsTestAbstract.java → access_flags/AccessFlagsTestAbstract.java} +0 -0
- data/test/data/{AccessFlagsTestFinal.class → access_flags/AccessFlagsTestFinal.class} +0 -0
- data/test/data/{AccessFlagsTestFinal.java → access_flags/AccessFlagsTestFinal.java} +0 -0
- data/test/data/{AccessFlagsTestInterface.class → access_flags/AccessFlagsTestInterface.class} +0 -0
- data/test/data/{AccessFlagsTestInterface.java → access_flags/AccessFlagsTestInterface.java} +0 -0
- data/test/data/{AccessFlagsTestPackage.class → access_flags/AccessFlagsTestPackage.class} +0 -0
- data/test/data/{AccessFlagsTestPackage.java → access_flags/AccessFlagsTestPackage.java} +0 -0
- data/test/data/access_flags/AccessFlagsTestPublic$Inner.class +0 -0
- data/test/data/access_flags/AccessFlagsTestPublic$InnerInterface.class +0 -0
- data/test/data/access_flags/AccessFlagsTestPublic$StaticInner.class +0 -0
- data/test/data/access_flags/AccessFlagsTestPublic.class +0 -0
- data/test/data/access_flags/AccessFlagsTestPublic.java +11 -0
- data/test/data/access_flags/AccessFlagsTestPublic_javap.txt +29 -0
- data/test/data/{makeAccessFlagsTest.bat → access_flags/make.bat} +0 -0
- data/test/data/{ClassVersionTest.java → class_version/ClassVersionTest.java} +0 -0
- data/test/data/{ClassVersionTest10.class → class_version/ClassVersionTest10.class} +0 -0
- data/test/data/{ClassVersionTest11.class → class_version/ClassVersionTest11.class} +0 -0
- data/test/data/{ClassVersionTest12.class → class_version/ClassVersionTest12.class} +0 -0
- data/test/data/{ClassVersionTest13.class → class_version/ClassVersionTest13.class} +0 -0
- data/test/data/{ClassVersionTest14.class → class_version/ClassVersionTest14.class} +0 -0
- data/test/data/{ClassVersionTest15.class → class_version/ClassVersionTest15.class} +0 -0
- data/test/data/{ClassVersionTest16.class → class_version/ClassVersionTest16.class} +0 -0
- data/test/data/{makeClassVersionTest.bat → class_version/make.bat} +0 -0
- data/test/data/{ConstantPoolTest.class → constant_pool/ConstantPoolTest.class} +0 -0
- data/test/data/{ConstantPoolTest.java → constant_pool/ConstantPoolTest.java} +0 -0
- data/test/data/{makeConstantPoolTest.bat → constant_pool/make.bat} +0 -0
- data/test/data/folder_classpath/JarClasspathTestFolder/ClassVersionTest10.class +0 -0
- data/test/data/folder_classpath/JarClasspathTestFolder/package/ClassVersionTest11.class +0 -0
- data/test/data/jar_classpath/JarClasspathTest.jar +0 -0
- data/test/data/jar_classpath/JarClasspathTest.zip +0 -0
- data/test/data/jar_classpath/JarClasspathTestManifest.jar +0 -0
- data/test/data/jar_classpath/JarClasspathTestMultiManifest.jar +0 -0
- data/test/data/jar_classpath/make.bat +24 -0
- data/test/data/jar_searcher/JarClassListTest.jar +0 -0
- data/test/data/jar_searcher/PublicClass.java +12 -0
- data/test/data/jar_searcher/PublicInterface.java +5 -0
- data/test/data/jar_searcher/make.bat +13 -0
- data/test/data/java_home_classpath/jdk/jre/lib/rt.jar +0 -0
- data/test/data/java_home_classpath/jre/lib/rt.jar +0 -0
- data/test/data/java_home_classpath/jre-ext/lib/ext/ext.jar +0 -0
- data/test/data/java_home_classpath/jre-ext/lib/rt.jar +0 -0
- data/test/data/java_home_classpath/make.bat +13 -0
- data/test/data/references/ReferencesTest.class +0 -0
- data/test/data/references/ReferencesTest.java +12 -0
- data/test/data/references/make.bat +5 -0
- data/test/setup.rb +6 -5
- data/test/test_access_flags.rb +59 -44
- data/test/test_base.rb +20 -15
- data/test/test_class_entry.rb +198 -0
- data/test/test_class_version.rb +48 -46
- data/test/test_composite_classpath.rb +68 -0
- data/test/test_constant_pool.rb +49 -41
- data/test/test_folder_classpath.rb +45 -0
- data/test/test_jar_classpath.rb +57 -0
- data/test/test_jar_searcher.rb +93 -0
- data/test/test_java_class_header.rb +34 -22
- data/test/test_java_home_classpath.rb +50 -0
- data/test/test_java_name.rb +110 -0
- data/test/test_javaclass.rb +22 -0
- data/test/test_list.rb +123 -0
- data/test/test_package_entry.rb +91 -0
- data/test/test_references.rb +38 -20
- data/test/test_string_ux.rb +99 -2
- data/test/ts_all_tests.rb +42 -21
- metadata +171 -50
- data/lib/javaclass/access_flags.rb +0 -44
- data/lib/javaclass/class_magic.rb +0 -27
- data/lib/javaclass/class_version.rb +0 -65
- data/lib/javaclass/constant_pool.rb +0 -85
- data/lib/javaclass/constants/base.rb +0 -31
- data/lib/javaclass/constants/double_reference.rb +0 -81
- data/lib/javaclass/constants/single_reference.rb +0 -58
- data/lib/javaclass/constants/value.rb +0 -114
- data/lib/javaclass/java_class_header.rb +0 -88
- data/lib/javaclass/references.rb +0 -31
- data/test/data/AccessFlagsTestPublic$InnerClass.class +0 -0
- data/test/data/AccessFlagsTestPublic.class +0 -0
- data/test/data/AccessFlagsTestPublic.java +0 -7
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# add the lib to the load path
|
|
2
|
+
$:.unshift File.join(File.dirname(__FILE__), 'lib')
|
|
3
|
+
|
|
4
|
+
# TODO cleanup this code fragment and make a proper class
|
|
5
|
+
|
|
6
|
+
require 'javaclass'
|
|
7
|
+
include JavaClass
|
|
8
|
+
|
|
9
|
+
JDK_PACKAGES = %w| java javax.accessibility javax.activity javax.crypto javax.imageio javax.jnlp javax.management
|
|
10
|
+
javax.naming javax.net javax.print javax.rmi javax.script javax.security.auth javax.security.cert
|
|
11
|
+
javax.security.sasl javax.sound.midi javax.sound.sampled javax.sql javax.swing javax.transaction
|
|
12
|
+
javax.xml org.ietf.jgss org.w3c.dom org.xml.sax|.collect { |pkg| /^#{pkg}\./ }
|
|
13
|
+
|
|
14
|
+
def in_jdk?(name)
|
|
15
|
+
JDK_PACKAGES.find { |regex| name =~ regex } != nil
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def imported_types(classes)
|
|
19
|
+
own_classes = classes.names.collect { |name| name.gsub('/', '.').sub(/\.class$/, '')}.sort
|
|
20
|
+
|
|
21
|
+
imported = classes.names.collect do |name|
|
|
22
|
+
clazz = JavaClassHeader.new(classes.load_binary(name))
|
|
23
|
+
clazz.references.used_classes.collect { |c| c.to_s.gsub('/', '.') }
|
|
24
|
+
end.flatten.uniq.sort
|
|
25
|
+
|
|
26
|
+
imported.reject { |name| in_jdk?(name) } - own_classes
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# TODO detect and read spring XML configs?
|
|
30
|
+
|
|
31
|
+
classes = JavaClass::Classpath::FolderClasspath.new("./target/classes")
|
|
32
|
+
own = classes.names.collect { |name| name.gsub('/', '.').sub(/\.class$/, '')}.sort
|
|
33
|
+
used = imported_types(classes)
|
|
34
|
+
puts "---------- used types"
|
|
35
|
+
puts used
|
|
36
|
+
|
|
37
|
+
test_classes = JavaClass::Classpath::FolderClasspath.new("./target/test-classes")
|
|
38
|
+
test = imported_types(test_classes) - own - used
|
|
39
|
+
puts "---------- for tests"
|
|
40
|
+
puts test
|
|
41
|
+
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
=== Metrics
|
|
2
|
+
|
|
3
|
+
* "metric" if all referencing classes of a class is another package, propose moving it there.
|
|
4
|
+
* "Greed Detector"
|
|
5
|
+
* count outgoing references (usage) per method
|
|
6
|
+
* which signatures are called how often
|
|
7
|
+
* maybe move current method there?
|
|
8
|
+
* CRSS Metric
|
|
9
|
+
* CCD
|
|
10
|
+
|
|
11
|
+
* {Chidamber and Kemerer Java Metrics (ckjm)}[http://www.spinellis.gr/sw/ckjm/]
|
|
12
|
+
* {The CRSS Metric for Package Design Quality}[http://crpit.com/confpapers/CRPITV62Melton2.pdf]
|
|
13
|
+
|
|
14
|
+
* {Evolutionary architecture and emergent design: Emergent design through metrics}[http://www.ibm.com/developerworks/java/library/j-eaed6/]
|
|
15
|
+
|
data/lib/javaclass.rb
CHANGED
|
@@ -1,14 +1,47 @@
|
|
|
1
|
-
require 'javaclass/java_class_header'
|
|
1
|
+
require 'javaclass/classfile/java_class_header'
|
|
2
|
+
require 'javaclass/classpath/java_home_classpath'
|
|
3
|
+
require 'javaclass/classpath/composite_classpath'
|
|
2
4
|
|
|
3
|
-
#
|
|
5
|
+
# Main entry point for class file parsing.
|
|
4
6
|
# Author:: Peter Kofler
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
7
|
+
module JavaClass
|
|
8
|
+
|
|
9
|
+
# Read and disassemble the given class from _filename_ (full file name).
|
|
10
|
+
def self.load_fs(filename)
|
|
11
|
+
disassemble(File.open(filename, 'rb') { |io| io.read } )
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def self.parse(filename)
|
|
15
|
+
warn 'Deprecated method JavaClass::parse will be removed in next release. Use method load_fs instead.'
|
|
16
|
+
load_fs(filename)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# Read and disassemble the given class _classname_ from _classpath_ .
|
|
20
|
+
def self.load_cp(classname, classpath)
|
|
21
|
+
disassemble(classpath.load_binary(classname))
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# Read and disassemble the given class inside _data_ (byte data).
|
|
25
|
+
def self.disassemble(data)
|
|
26
|
+
ClassFile::JavaClassHeader.new(data)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# Parse the given path variable _path_ and return a chain of class path elements.
|
|
30
|
+
def self.classpath(path)
|
|
31
|
+
full_classpath(nil, path)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# Parse and scan the system classpath. Needs +JAVA_HOME+ set. Uses environment +CLASSPATH+ if set.
|
|
35
|
+
def self.environment_classpath
|
|
36
|
+
full_classpath(ENV['JAVA_HOME'], ENV['CLASSPATH'])
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# Parse the given path variable _path_ and return a chain of class path elements together with _javahome_ if any.
|
|
40
|
+
def self.full_classpath(javahome, path='')
|
|
41
|
+
cp = Classpath::CompositeClasspath.new
|
|
42
|
+
cp.add_element(Classpath::JavaHomeClasspath.new(javahome)) if javahome
|
|
43
|
+
path.split(File::PATH_SEPARATOR).each { |cpe| cp.add_file_name(cpe) } if path
|
|
44
|
+
cp
|
|
45
|
+
end
|
|
46
|
+
|
|
14
47
|
end
|
|
Binary file
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
data/test/data/{AccessFlagsTestInterface.class → access_flags/AccessFlagsTestInterface.class}
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
public class packagename.AccessFlagsTestPublic extends java.lang.Object
|
|
2
|
+
minor version: 0
|
|
3
|
+
major version: 50
|
|
4
|
+
Constant pool:
|
|
5
|
+
const #1 = Method #3.#17; // java/lang/Object."<init>":()V
|
|
6
|
+
const #2 = class #18; // packagename/AccessFlagsTestPublic
|
|
7
|
+
const #3 = class #19; // java/lang/Object
|
|
8
|
+
const #4 = class #20; // packagename/AccessFlagsTestPublic$InnerInterface
|
|
9
|
+
const #5 = Asciz InnerInterface;
|
|
10
|
+
const #6 = Asciz InnerClasses;
|
|
11
|
+
const #7 = class #21; // packagename/AccessFlagsTestPublic$StaticInner
|
|
12
|
+
const #8 = Asciz StaticInner;
|
|
13
|
+
const #9 = class #22; // packagename/AccessFlagsTestPublic$Inner
|
|
14
|
+
const #10 = Asciz Inner;
|
|
15
|
+
const #11 = Asciz <init>;
|
|
16
|
+
const #12 = Asciz ()V;
|
|
17
|
+
const #13 = Asciz Code;
|
|
18
|
+
const #14 = Asciz LineNumberTable;
|
|
19
|
+
const #15 = Asciz SourceFile;
|
|
20
|
+
const #16 = Asciz AccessFlagsTestPublic.java;
|
|
21
|
+
const #17 = NameAndType #11:#12;// "<init>":()V
|
|
22
|
+
const #18 = Asciz packagename/AccessFlagsTestPublic;
|
|
23
|
+
const #19 = Asciz java/lang/Object;
|
|
24
|
+
const #20 = Asciz packagename/AccessFlagsTestPublic$InnerInterface;
|
|
25
|
+
const #21 = Asciz packagename/AccessFlagsTestPublic$StaticInner;
|
|
26
|
+
const #22 = Asciz packagename/AccessFlagsTestPublic$Inner;
|
|
27
|
+
|
|
28
|
+
{
|
|
29
|
+
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
if exist JarClasspathTest*.* del JarClasspathTest*.*
|
|
2
|
+
|
|
3
|
+
md JarClasspathTestFolder\package
|
|
4
|
+
copy ..\class_version\ClassVersionTest10.class JarClasspathTestFolder
|
|
5
|
+
copy ..\class_version\ClassVersionTest11.class JarClasspathTestFolder\package
|
|
6
|
+
|
|
7
|
+
cd JarClasspathTestFolder
|
|
8
|
+
jar -cf ..\JarClasspathTest.jar .
|
|
9
|
+
cd ..
|
|
10
|
+
|
|
11
|
+
call winzip -a JarClasspathTest.zip ClassVersionTest10.class
|
|
12
|
+
|
|
13
|
+
echo Class-Path: JarClasspathTest.jar > manifest.txt
|
|
14
|
+
jar -cfm JarClasspathTestManifest.jar manifest.txt ClassVersionTest11.class
|
|
15
|
+
del manifest.txt
|
|
16
|
+
|
|
17
|
+
echo Version: 1.0.0> manifest.txt
|
|
18
|
+
echo Main-Class: at.kugel.tool.disconnect.Main>> manifest.txt
|
|
19
|
+
echo Class-Path: lib/httpunit-1.6.2.jar lib/nekohtml-0.9.1.jar >> manifest.txt
|
|
20
|
+
echo lib/xercesImpl-2.5.jar lib/js-1.5R4.1.jar>> manifest.txt
|
|
21
|
+
jar -cfm JarClasspathTestMultiManifest.jar manifest.txt ClassVersionTest11.class
|
|
22
|
+
del manifest.txt
|
|
23
|
+
|
|
24
|
+
pause
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
if exist JavaHomeClasspathTest\nul rmdir /S /Q JavaHomeClasspathTest
|
|
2
|
+
|
|
3
|
+
md JavaHomeClasspathTest\jdk\jre\lib
|
|
4
|
+
jar -cf JavaHomeClasspathTest\jdk\jre\lib\rt.jar ..\class_version\ClassVersionTest10.class
|
|
5
|
+
|
|
6
|
+
md JavaHomeClasspathTest\jre\lib
|
|
7
|
+
jar -cf JavaHomeClasspathTest\jre\lib\rt.jar ..\class_version\ClassVersionTest10.class
|
|
8
|
+
|
|
9
|
+
md JavaHomeClasspathTest\jre-ext\lib\ext
|
|
10
|
+
jar -cf JavaHomeClasspathTest\jre-ext\lib\rt.jar ..\class_version\ClassVersionTest10.class
|
|
11
|
+
jar -cf JavaHomeClasspathTest\jre-ext\lib\ext\ext.jar ..\class_version\ClassVersionTest11.class
|
|
12
|
+
|
|
13
|
+
pause
|
|
Binary file
|
data/test/setup.rb
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
require 'test/unit'
|
|
1
|
+
require 'test/unit'
|
|
2
|
+
require 'test/unit/testcase'
|
|
3
|
+
|
|
4
|
+
# Base require of tests.
|
|
5
|
+
# Author:: Peter Kofler
|
|
2
6
|
|
|
3
7
|
# add the lib to the load path
|
|
4
8
|
$:.unshift File.join(File.dirname(__FILE__), '..', 'lib')
|
|
@@ -7,8 +11,5 @@ TEST_DATA_PATH = File.join(File.dirname(__FILE__), 'data')
|
|
|
7
11
|
|
|
8
12
|
# Load the binary class data of given _name_ from the test path.
|
|
9
13
|
def load_class(name)
|
|
10
|
-
File.open("#{TEST_DATA_PATH}/#{name}.class", 'rb') {|io| io.read }
|
|
14
|
+
File.open("#{TEST_DATA_PATH}/#{name}.class", 'rb') {|io| io.read }
|
|
11
15
|
end
|
|
12
|
-
|
|
13
|
-
# require 'javaclass'
|
|
14
|
-
# require File.join(File.dirname(__FILE__), %w[.. lib javaclass])
|
data/test/test_access_flags.rb
CHANGED
|
@@ -1,53 +1,68 @@
|
|
|
1
1
|
require File.dirname(__FILE__) + '/setup'
|
|
2
|
-
require 'javaclass/java_class_header'
|
|
2
|
+
require 'javaclass/classfile/java_class_header'
|
|
3
3
|
|
|
4
4
|
module TestJavaClass
|
|
5
|
-
|
|
6
|
-
class TestAccessFlags < Test::Unit::TestCase
|
|
5
|
+
module TestClassFile
|
|
7
6
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
7
|
+
class TestAccessFlags < Test::Unit::TestCase
|
|
8
|
+
|
|
9
|
+
def setup
|
|
10
|
+
@cls = {}
|
|
11
|
+
%w[Public Package Abstract Interface Final Public$Inner Public$StaticInner Public$InnerInterface].each do |t|
|
|
12
|
+
eval("@#{t.sub(/Public\$/, '').downcase} = JavaClass::ClassFile::JavaClassHeader.new(load_class('access_flags/AccessFlagsTest#{t}')).access_flags")
|
|
13
|
+
end
|
|
12
14
|
end
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
15
|
+
|
|
16
|
+
def test_accessible_eh
|
|
17
|
+
assert(@public.accessible?)
|
|
18
|
+
assert(!@package.accessible?)
|
|
19
|
+
assert(@abstract.accessible?)
|
|
20
|
+
assert(@interface.accessible?)
|
|
21
|
+
assert(@final.accessible?)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def test_public_eh
|
|
25
|
+
assert(@public.public?)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def test_interface_eh
|
|
29
|
+
assert(!@public.interface?)
|
|
30
|
+
assert(!@package.interface?)
|
|
31
|
+
assert(!@abstract.interface?)
|
|
32
|
+
assert(@interface.interface?)
|
|
33
|
+
assert(!@final.interface?)
|
|
34
|
+
assert(@innerinterface.interface?)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def test_abstract_eh
|
|
38
|
+
assert(!@public.abstract?)
|
|
39
|
+
assert(!@package.abstract?)
|
|
40
|
+
assert(@abstract.abstract?)
|
|
41
|
+
assert(@interface.abstract?)
|
|
42
|
+
assert(!@final.abstract?)
|
|
43
|
+
assert(@innerinterface.abstract?)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def test_final_eh
|
|
47
|
+
assert(!@public.final?)
|
|
48
|
+
assert(!@package.final?)
|
|
49
|
+
assert(!@abstract.final?)
|
|
50
|
+
assert(!@interface.final?)
|
|
51
|
+
assert(@final.final?)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# def test_inner_eh
|
|
55
|
+
# assert(!@public.inner?)
|
|
56
|
+
# assert(!@package.inner?)
|
|
57
|
+
# assert(!@abstract.inner?)
|
|
58
|
+
# assert(!@interface.inner?)
|
|
59
|
+
# assert(!@final.inner?)
|
|
60
|
+
# assert(@inner.inner?)
|
|
61
|
+
# assert(@staticinner.inner?)
|
|
62
|
+
# assert(@innerinterface.inner?)
|
|
63
|
+
# end
|
|
64
|
+
|
|
49
65
|
end
|
|
50
66
|
|
|
51
67
|
end
|
|
52
|
-
|
|
53
68
|
end
|
data/test/test_base.rb
CHANGED
|
@@ -1,22 +1,27 @@
|
|
|
1
1
|
require File.dirname(__FILE__) + '/setup'
|
|
2
|
-
require 'javaclass/constants/base'
|
|
2
|
+
require 'javaclass/classfile/constants/base'
|
|
3
3
|
|
|
4
4
|
module TestJavaClass
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
5
|
+
module TestClassFile
|
|
6
|
+
module TestConstants
|
|
7
|
+
|
|
8
|
+
class TestBase < Test::Unit::TestCase
|
|
9
|
+
|
|
10
|
+
class ConstantClass < JavaClass::ClassFile::Constants::Base; # ZenTest SKIP mock class
|
|
11
|
+
def initialize(name=nil); super(name); end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def test_name
|
|
15
|
+
v = ConstantClass.new
|
|
16
|
+
assert_equal('Class', v.name)
|
|
17
|
+
|
|
18
|
+
v = ConstantClass.new('Bubu')
|
|
19
|
+
assert_equal('Bubu', v.name)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
end
|
|
15
23
|
|
|
16
|
-
v = ConstantClass.new("Bubu")
|
|
17
|
-
assert_equal("Bubu", v.name)
|
|
18
24
|
end
|
|
19
|
-
|
|
20
25
|
end
|
|
21
|
-
|
|
22
26
|
end
|
|
27
|
+
|