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