javaclass 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +67 -56
- data/Readme.txt +42 -39
- data/example_task.rb +172 -0
- data/examples/check_interface_names.rb +44 -0
- data/examples/corpus.rb +19 -0
- data/examples/count_classes_in_modules.rb +38 -0
- data/examples/cumulative_dependencies.rb +39 -0
- data/examples/find_all_imported_types.rb +44 -0
- data/examples/find_referenced_modules.rb +53 -0
- data/examples/find_unreferenced_classes.rb +65 -0
- data/examples/generate_class_lists.rb +67 -43
- data/examples/profiler_scratchpad.rb +33 -0
- data/examples/simple_usage.rb +42 -0
- data/history.txt +29 -7
- data/javaclass.gemspec +31 -0
- data/lib/javaclass/adder_tree.rb +92 -0
- data/lib/javaclass/analyse/dependencies.rb +52 -0
- data/lib/javaclass/{metric/metrics.txt → analyse/ideas.txt} +2 -2
- data/lib/javaclass/analyse/transitive_dependencies.rb +52 -0
- data/lib/javaclass/classfile/access_flag_constants.rb +24 -0
- data/lib/javaclass/classfile/access_flags.rb +49 -26
- data/lib/javaclass/classfile/class_format_error.rb +37 -0
- data/lib/javaclass/classfile/class_magic.rb +16 -8
- data/lib/javaclass/classfile/class_version.rb +19 -25
- data/lib/javaclass/classfile/constant_pool.rb +110 -45
- data/lib/javaclass/classfile/constants/base.rb +33 -12
- data/lib/javaclass/classfile/constants/double_reference.rb +55 -41
- data/lib/javaclass/classfile/constants/single_reference.rb +29 -21
- data/lib/javaclass/classfile/constants/value.rb +43 -33
- data/lib/javaclass/classfile/java_class_header.rb +72 -46
- data/lib/javaclass/classfile/java_class_header_as_java_name.rb +33 -0
- data/lib/javaclass/classfile/java_class_header_shortcuts.rb +19 -0
- data/lib/javaclass/classfile/references.rb +21 -19
- data/lib/javaclass/classlist/class_entry.rb +26 -27
- data/lib/javaclass/classlist/jar_searcher.rb +34 -25
- data/lib/javaclass/classlist/list.rb +31 -31
- data/lib/javaclass/classlist/package_entry.rb +25 -24
- data/lib/javaclass/classpath/any_classpath.rb +48 -0
- data/lib/javaclass/classpath/class_not_found_error.rb +20 -0
- data/lib/javaclass/classpath/classpaths.txt +2 -2
- data/lib/javaclass/classpath/composite_classpath.rb +56 -54
- data/lib/javaclass/classpath/convention_classpath.rb +38 -0
- data/lib/javaclass/classpath/eclipse_classpath.rb +74 -0
- data/lib/javaclass/classpath/factory.rb +65 -0
- data/lib/javaclass/classpath/file_classpath.rb +47 -0
- data/lib/javaclass/classpath/folder_classpath.rb +42 -44
- data/lib/javaclass/classpath/jar_classpath.rb +91 -52
- data/lib/javaclass/classpath/java_home_classpath.rb +24 -13
- data/lib/javaclass/classpath/maven_classpath.rb +44 -0
- data/lib/javaclass/classpath/temporary_unpacker.rb +111 -0
- data/lib/javaclass/classpath/tracking_classpath.rb +144 -0
- data/lib/javaclass/classscanner/ideas.txt +3 -0
- data/lib/javaclass/classscanner/imported_types.rb +29 -0
- data/lib/javaclass/classscanner/scanners.rb +29 -0
- data/lib/javaclass/delegate_directive.rb +15 -0
- data/lib/javaclass/dsl/caching_classpath.rb +38 -0
- data/lib/javaclass/dsl/classpath_analysers.rb +27 -0
- data/lib/javaclass/dsl/java_name_factory.rb +79 -0
- data/lib/javaclass/dsl/loader.rb +42 -0
- data/lib/javaclass/dsl/loading_classpath.rb +53 -0
- data/lib/javaclass/dsl/mixin.rb +54 -0
- data/lib/javaclass/gems/zip_file.rb +154 -0
- data/lib/javaclass/java_language.rb +50 -0
- data/lib/javaclass/java_name.rb +329 -55
- data/lib/javaclass/java_name_scanner.rb +95 -0
- data/lib/javaclass/resources/iso_3166_countries.txt +240 -0
- data/lib/javaclass/resources/jdk0_packages.txt +6 -0
- data/lib/javaclass/resources/jdk1_packages.txt +6 -0
- data/lib/javaclass/resources/jdk2_packages.txt +4 -0
- data/lib/javaclass/resources/jdk3_packages.txt +6 -0
- data/lib/javaclass/resources/jdk4_packages.txt +22 -0
- data/lib/javaclass/resources/jdk5_packages.txt +5 -0
- data/lib/javaclass/resources/jdk6_packages.txt +7 -0
- data/lib/javaclass/resources/jdk7_packages.txt +0 -0
- data/lib/javaclass/resources/jdk_packages.txt +53 -0
- data/lib/javaclass/resources/reserved_words.txt +50 -0
- data/lib/javaclass/string_hexdump.rb +76 -0
- data/lib/javaclass/string_ux.rb +21 -10
- data/lib/javaclass.rb +16 -41
- data/license.txt +28 -0
- data/planned.txt +13 -0
- data/test/data/Object_102.class +0 -0
- data/test/data/Runnable_102.class +0 -0
- data/test/data/access_flags/AccessFlagsTestAnnotation.class +0 -0
- data/test/data/access_flags/AccessFlagsTestAnnotation.java +3 -0
- data/test/data/access_flags/AccessFlagsTestEnum$1.class +0 -0
- data/test/data/access_flags/AccessFlagsTestEnum.class +0 -0
- data/test/data/access_flags/AccessFlagsTestEnum.java +6 -0
- data/test/data/access_flags/AccessFlagsTestInner$1.class +0 -0
- data/test/data/access_flags/AccessFlagsTestInner$2.class +0 -0
- data/test/data/access_flags/AccessFlagsTestInner.class +0 -0
- data/test/data/access_flags/AccessFlagsTestInner.java +13 -0
- data/test/data/access_flags/AccessFlagsTestPackage.class +0 -0
- data/test/data/access_flags/AccessFlagsTestPackage.java +1 -1
- data/test/data/api/packagename/AccessFlagsTestPublic.class +0 -0
- data/test/data/class_version/ClassVersionTest17.class +0 -0
- data/test/data/class_version/make.bat +6 -2
- data/test/data/eclipse_classpath/classes/ClassVersionTest12.class +0 -0
- data/test/data/eclipse_classpath/lib/JarClasspathTest.jar +0 -0
- data/test/data/eclipse_classpath/test-classes/ClassVersionTest13.class +0 -0
- data/test/data/folder_classpath/{JarClasspathTestFolder → classes}/ClassVersionTest10.class +0 -0
- data/test/data/folder_classpath/{JarClasspathTestFolder → classes}/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 +6 -2
- data/test/data/jar_searcher/BrokenRunnable_102.class +0 -0
- data/test/data/java_home_classpath/jdk118/lib/classes.zip +0 -0
- data/test/data/java_name_scanner/META-INF/MANIFEST.MF +12 -0
- data/test/data/java_name_scanner/plugin.xml +18 -0
- data/test/data/maven_classpath/module/pom.xml +8 -0
- data/test/data/maven_classpath/module/target/classes/ClassVersionTest12.class +0 -0
- data/test/data/maven_classpath/pom.xml +8 -0
- data/test/data/maven_classpath/target/classes/ClassVersionTest10.class +0 -0
- data/test/data/maven_classpath/target/test-classes/ClassVersionTest11.class +0 -0
- data/test/data/transitive_dependencies/A.class +0 -0
- data/test/data/transitive_dependencies/A.java +5 -0
- data/test/data/transitive_dependencies/B.class +0 -0
- data/test/data/transitive_dependencies/B.java +3 -0
- data/test/data/transitive_dependencies/C.class +0 -0
- data/test/data/transitive_dependencies/C.java +3 -0
- data/test/data/transitive_dependencies/Start.class +0 -0
- data/test/data/transitive_dependencies/Start.java +4 -0
- data/test/data/transitive_dependencies/make.bat +3 -0
- data/test/data/zip_file/commons-math-2.2-broken.zip +0 -0
- data/test/data/zip_file/regenerated-with-7zip.zip +0 -0
- data/test/data/zip_file/regenerated-with-jar.zip +0 -0
- data/test/dot_classpath.rb +33 -0
- data/test/logging_folder_classpath.rb +19 -0
- data/test/setup.rb +1 -1
- data/test/test_access_flags.rb +58 -32
- data/test/test_adder_tree.rb +78 -0
- data/test/test_any_classpath.rb +39 -0
- data/test/test_base.rb +9 -7
- data/test/test_caching_classpath.rb +41 -0
- data/test/test_class_entry.rb +60 -60
- data/test/test_class_magic.rb +31 -0
- data/test/test_class_version.rb +25 -25
- data/test/test_composite_classpath.rb +22 -23
- data/test/test_constant_pool.rb +37 -13
- data/test/test_convention_classpath.rb +39 -0
- data/test/test_eclipse_classpath.rb +73 -0
- data/test/test_factory.rb +61 -0
- data/test/test_folder_classpath.rb +26 -10
- data/test/test_imported_types.rb +34 -0
- data/test/test_jar_classpath.rb +29 -14
- data/test/test_jar_searcher.rb +27 -14
- data/test/test_java_class_header.rb +22 -10
- data/test/test_java_class_header_as_java_name.rb +41 -0
- data/test/test_java_home_classpath.rb +17 -11
- data/test/test_java_name.rb +204 -64
- data/test/test_java_name_factory.rb +52 -0
- data/test/test_java_name_scanner.rb +24 -0
- data/test/test_javaclass_api.rb +43 -0
- data/test/test_list.rb +58 -44
- data/test/test_load_directive.rb +34 -0
- data/test/test_maven_classpath.rb +46 -0
- data/test/test_package_entry.rb +27 -22
- data/test/test_references.rb +14 -14
- data/test/test_string_hexdump.rb +24 -0
- data/test/test_string_ux.rb +18 -106
- data/test/test_tracking_classpath.rb +112 -0
- data/test/test_transitive_dependencies.rb +31 -0
- data/test/test_unpacking_jar_classpath.rb +43 -0
- data/test/test_zip_file.rb +33 -0
- data/test/ts_all_tests.rb +80 -18
- data/thanks.txt +2 -0
- metadata +151 -22
- data/lib/javaclass/classpath/port_ClassPathEntry.java +0 -202
- data/lib/javaclass/classpath/port_ClassPathEntryFactory.java +0 -311
- data/lib/javaclass/classpath/port_DirectoryRepository.java +0 -24
- data/lib/javaclass/metric/ccd.rb +0 -68
- data/lib/javaclass/metric/class_usage.rb +0 -41
- data/test/test_javaclass.rb +0 -22
@@ -0,0 +1,46 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/setup'
|
2
|
+
require 'javaclass/classpath/maven_classpath'
|
3
|
+
|
4
|
+
module TestJavaClass
|
5
|
+
module TestClasspath
|
6
|
+
|
7
|
+
class TestMavenClasspath < Test::Unit::TestCase
|
8
|
+
|
9
|
+
def setup
|
10
|
+
@cpe = JavaClass::Classpath::MavenClasspath.new("#{TEST_DATA_PATH}/maven_classpath")
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_class_valid_location_eh
|
14
|
+
assert(JavaClass::Classpath::MavenClasspath.valid_location?("#{TEST_DATA_PATH}/maven_classpath"))
|
15
|
+
assert(JavaClass::Classpath::MavenClasspath.valid_location?("#{TEST_DATA_PATH}/maven_classpath/module"))
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_class_valid_location_eh_no_pom
|
19
|
+
assert(!JavaClass::Classpath::MavenClasspath.valid_location?("#{TEST_DATA_PATH}/folder_classpath"))
|
20
|
+
assert(!JavaClass::Classpath::MavenClasspath.valid_location?("#{TEST_DATA_PATH}/not_existing_folder"))
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_count
|
24
|
+
assert_equal(3, @cpe.count)
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_elements
|
28
|
+
assert_equal(3, @cpe.elements.size)
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_includes_eh
|
32
|
+
assert(@cpe.includes?('ClassVersionTest10.class'))
|
33
|
+
assert(@cpe.includes?('ClassVersionTest11.class'))
|
34
|
+
assert(@cpe.includes?('ClassVersionTest12.class'))
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_class_new_invalid
|
38
|
+
assert_raise(IOError) {
|
39
|
+
JavaClass::Classpath::MavenClasspath.new("#{TEST_DATA_PATH}/folder_classpath")
|
40
|
+
}
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
end
|
data/test/test_package_entry.rb
CHANGED
@@ -3,22 +3,22 @@ require 'javaclass/classlist/package_entry'
|
|
3
3
|
|
4
4
|
module TestJavaClass
|
5
5
|
module TestClassList
|
6
|
-
|
6
|
+
|
7
7
|
class TestPackageEntry < Test::Unit::TestCase
|
8
|
-
|
8
|
+
|
9
9
|
def test_size
|
10
10
|
pkg = JavaClass::ClassList::PackageEntry.new('packagename', 2)
|
11
11
|
assert_equal(0, pkg.size)
|
12
|
-
pkg.add_class('packagename.PublicClass',
|
12
|
+
pkg.add_class('packagename.PublicClass', :public, 2);
|
13
13
|
assert_equal(1, pkg.size)
|
14
|
-
pkg.add_class('packagename.PublicInterface',
|
14
|
+
pkg.add_class('packagename.PublicInterface', :public, 2);
|
15
15
|
assert_equal(2, pkg.size)
|
16
|
-
end
|
17
|
-
|
16
|
+
end
|
17
|
+
|
18
18
|
def test_version
|
19
19
|
pkg = JavaClass::ClassList::PackageEntry.new('packagename', 1)
|
20
20
|
assert_equal([1], pkg.version)
|
21
|
-
pkg.add_class('packagename.PublicClass',
|
21
|
+
pkg.add_class('packagename.PublicClass', :public, 2);
|
22
22
|
assert_equal([1,2], pkg.version)
|
23
23
|
end
|
24
24
|
|
@@ -26,25 +26,25 @@ module TestJavaClass
|
|
26
26
|
# fake methods for zentest, tested in all other tests
|
27
27
|
assert(true)
|
28
28
|
end
|
29
|
-
|
29
|
+
|
30
30
|
def test_to_package_shortcut_s
|
31
31
|
pkg = JavaClass::ClassList::PackageEntry.new('packagename', 2)
|
32
|
-
pkg.add_class('packagename.PublicClass',
|
33
|
-
pkg.add_class('packagename.PublicInterface',
|
32
|
+
pkg.add_class('packagename.PublicClass', :public, 2);
|
33
|
+
pkg.add_class('packagename.PublicInterface', :public, 2);
|
34
34
|
assert_equal([2], pkg.version)
|
35
35
|
assert_equal(2, pkg.size)
|
36
36
|
assert_equal("packagename [2] - \n" + " PublicClass - \n" + " PublicInterface - \n", pkg.to_package_shortcut_s(1,2))
|
37
|
-
|
37
|
+
|
38
38
|
classes = pkg.classes
|
39
39
|
assert_equal(2, classes.size)
|
40
40
|
assert_equal('PublicClass', classes[0].name)
|
41
41
|
assert_equal([2], classes[0].version)
|
42
|
-
|
43
|
-
pkg.add_class('packagename.PublicClass',
|
44
|
-
pkg.add_class('packagename.SomeClass',
|
42
|
+
|
43
|
+
pkg.add_class('packagename.PublicClass', :public, 3)
|
44
|
+
pkg.add_class('packagename.SomeClass', :public, 3)
|
45
45
|
assert_equal([2,3], pkg.version)
|
46
46
|
assert_equal(3, pkg.size)
|
47
|
-
|
47
|
+
|
48
48
|
classes = pkg.classes
|
49
49
|
assert_equal(3, classes.size)
|
50
50
|
assert_equal([2,3], classes[0].version)
|
@@ -53,17 +53,17 @@ module TestJavaClass
|
|
53
53
|
assert_equal("packagename [2] - \n" + " PublicClass - \n" + " PublicInterface [-2] - \n"+ " SomeClass [3] - \n", pkg.to_package_shortcut_s(1,3))
|
54
54
|
assert_equal("packagename [2-3] - \n" + " PublicClass - \n" + " PublicInterface [-2] - \n"+ " SomeClass [3] - \n", pkg.to_package_shortcut_s(1,4))
|
55
55
|
end
|
56
|
-
|
56
|
+
|
57
57
|
def test_to_package_shortcut_s_package
|
58
58
|
pkg = JavaClass::ClassList::PackageEntry.new('packagename', 2)
|
59
|
-
pkg.add_class('packagename.PublicClass',
|
59
|
+
pkg.add_class('packagename.PublicClass', :public, 2);
|
60
60
|
pkg.add_class('packagename.PuckageClass', false, 2);
|
61
61
|
assert_equal([2], pkg.version)
|
62
62
|
assert_equal(2, pkg.size)
|
63
63
|
assert_equal("packagename [2] - \n" + " PublicClass - \n" + " PuckageClass [2p] - \n", pkg.to_package_shortcut_s(1,2))
|
64
64
|
end
|
65
|
-
|
66
|
-
def test_spaceship
|
65
|
+
|
66
|
+
def test_spaceship
|
67
67
|
sorted = [
|
68
68
|
a=JavaClass::ClassList::PackageEntry.new('com.sun'),
|
69
69
|
b=JavaClass::ClassList::PackageEntry.new('java.beans'),
|
@@ -71,12 +71,12 @@ module TestJavaClass
|
|
71
71
|
d=JavaClass::ClassList::PackageEntry.new('java.lang'),
|
72
72
|
e=JavaClass::ClassList::PackageEntry.new('java.io')
|
73
73
|
].sort
|
74
|
-
|
74
|
+
|
75
75
|
assert_equal(-1, d<=>a)
|
76
76
|
assert_equal(-1, d<=>b)
|
77
77
|
assert_equal(-1, d<=>c)
|
78
78
|
assert_equal(-1, d<=>e)
|
79
|
-
|
79
|
+
|
80
80
|
#sorting in packages is: java.lang, other java.*, javax, andere
|
81
81
|
assert_equal('java.lang', sorted[0].name)
|
82
82
|
assert_equal('java.beans', sorted[1].name)
|
@@ -84,8 +84,13 @@ module TestJavaClass
|
|
84
84
|
assert_equal('javax.ejb', sorted[3].name)
|
85
85
|
assert_equal('com.sun', sorted[4].name)
|
86
86
|
end
|
87
|
+
|
88
|
+
def test_to_s
|
89
|
+
pkg = JavaClass::ClassList::PackageEntry.new('packagename', 2)
|
90
|
+
assert_equal('packagename', pkg.to_s)
|
91
|
+
end
|
87
92
|
|
88
93
|
end
|
89
|
-
|
94
|
+
|
90
95
|
end
|
91
96
|
end
|
data/test/test_references.rb
CHANGED
@@ -3,45 +3,45 @@ require 'javaclass/classfile/java_class_header'
|
|
3
3
|
|
4
4
|
module TestJavaClass
|
5
5
|
module TestClassFile
|
6
|
-
|
6
|
+
|
7
7
|
class TestReferences < Test::Unit::TestCase
|
8
|
-
|
8
|
+
|
9
9
|
def setup
|
10
10
|
@refs = JavaClass::ClassFile::JavaClassHeader.new(load_class('references/ReferencesTest')).references
|
11
11
|
end
|
12
|
-
|
12
|
+
|
13
13
|
def test_referenced_fields
|
14
|
-
fields = @refs.referenced_fields
|
14
|
+
fields = @refs.referenced_fields
|
15
15
|
assert_equal(0, fields.size)
|
16
|
-
|
17
|
-
fields = @refs.referenced_fields(
|
16
|
+
|
17
|
+
fields = @refs.referenced_fields(:include_own)
|
18
18
|
assert_equal(1, fields.size)
|
19
19
|
assert_equal('ReferencesTest', fields[0].class_name)
|
20
20
|
assert_equal('ReferencesTest', fields[0].class_name.to_classname)
|
21
21
|
assert_equal('field:LReferencesTest;', fields[0].signature)
|
22
22
|
end
|
23
|
-
|
23
|
+
|
24
24
|
def test_referenced_methods
|
25
|
-
methods = @refs.referenced_methods
|
25
|
+
methods = @refs.referenced_methods
|
26
26
|
assert_equal(1, methods.size) # ctor init
|
27
27
|
assert_equal('java/lang/Object', methods[0].class_name)
|
28
28
|
assert_equal('java.lang.Object', methods[0].class_name.to_classname)
|
29
|
-
|
30
|
-
methods = @refs.referenced_methods(
|
31
|
-
assert_equal(2, methods.size)
|
29
|
+
|
30
|
+
methods = @refs.referenced_methods(:include_own)
|
31
|
+
assert_equal(2, methods.size)
|
32
32
|
assert_equal('java/lang/Object', methods[0].class_name)
|
33
33
|
assert_equal('ReferencesTest', methods[1].class_name)
|
34
34
|
assert_equal('x:()V', methods[1].signature)
|
35
35
|
end
|
36
|
-
|
36
|
+
|
37
37
|
def test_used_classes
|
38
38
|
classes = @refs.used_classes
|
39
39
|
assert_equal(1, classes.size)
|
40
40
|
assert_equal('java/lang/Object', classes[0].class_name)
|
41
41
|
assert_equal('java.lang.Object', classes[0].class_name.to_classname)
|
42
42
|
end
|
43
|
-
|
43
|
+
|
44
44
|
end
|
45
|
-
|
45
|
+
|
46
46
|
end
|
47
47
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/setup'
|
2
|
+
require 'javaclass/string_hexdump'
|
3
|
+
|
4
|
+
class TestStringHexdump < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def test_hexdump_line
|
7
|
+
assert_equal("00000000h: #{' '*16}; \n", ''.hexdump)
|
8
|
+
assert_equal("00000000h: 61 #{' '*15}; a\n", 'a'.hexdump)
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_hexdump_non_printable
|
12
|
+
assert_equal("00000000h: 01 02 03 04 05 06 07 08 09 0A #{' '*6}; ..........\n", "\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a".hexdump)
|
13
|
+
assert_equal("00000000h: FF FE FC #{' '*13}; ...\n", "\xff\xfe\xfc".hexdump)
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_hexdump_more_lines
|
17
|
+
assert_equal("00000000h: 00 00 ; ..\n00000002h: 00 00 ; ..\n", "\x00\x00\x00\x00".hexdump(2));
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_hexdump_whitespace
|
21
|
+
assert_equal("00000000h: 20 00 65 00 #{' '*12}; .e.\n", " \x00e\x00".hexdump);
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
data/test/test_string_ux.rb
CHANGED
@@ -1,127 +1,39 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/setup'
|
2
2
|
require 'javaclass/string_ux'
|
3
3
|
|
4
|
-
class
|
5
|
-
|
4
|
+
class TestStringUx < Test::Unit::TestCase
|
5
|
+
|
6
6
|
def test_u1
|
7
7
|
assert_equal(49, "1".u1(0))
|
8
8
|
assert_equal(49, "212".u1(1))
|
9
9
|
assert_equal(50, "212".u1(2))
|
10
|
+
|
11
|
+
assert_equal(0, "\x00".u1(0))
|
12
|
+
assert_equal(7, "\x07".u1(0))
|
13
|
+
assert_equal(10, "\x0A".u1(0))
|
14
|
+
assert_equal(255, "\xFF".u1(0))
|
10
15
|
end
|
11
|
-
|
16
|
+
|
12
17
|
def test_u2
|
13
18
|
assert_equal(49*256+50, "12".u2(0))
|
14
19
|
assert_equal(49*256+50, "312".u2(1))
|
20
|
+
|
21
|
+
assert_equal([49*256+50, 49*256+51], "1213".u2rep(2))
|
15
22
|
end
|
16
|
-
|
23
|
+
|
17
24
|
def test_u4
|
18
25
|
assert_equal(1, "\0\0\0\1".u4(0))
|
19
26
|
assert_equal(256**4-2, "\xff\xff\xff\xfe".u4(0))
|
20
27
|
end
|
21
|
-
|
28
|
+
|
22
29
|
def test_single
|
23
|
-
assert_in_delta(3.14159, "@I\x0f\xd0".single(0), 0.0000002)
|
24
|
-
# assert_in_delta(3.14159, "@I\x0f\xef\xbf\xbd ".single(0), 0.0000002)
|
30
|
+
assert_in_delta(3.14159, "@I\x0f\xd0".single(0), 0.0000002)
|
31
|
+
# assert_in_delta(3.14159, "@I\x0f\xef\xbf\xbd ".single(0), 0.0000002)
|
25
32
|
end
|
26
|
-
|
33
|
+
|
27
34
|
def test_double
|
28
|
-
# assert_in_delta(3.14159265258981, "@\t!\xef\xbf\xbd\x54!\xef\xbf\xbd ".double(0), 0.00000000000001)
|
29
|
-
assert_in_delta(3.14157056614432, "@\t!\xef\xbf\xbd\x54!\xef\xbf\xbd ".double(0), 0.00000000000001)
|
35
|
+
# assert_in_delta(3.14159265258981, "@\t!\xef\xbf\xbd\x54!\xef\xbf\xbd ".double(0), 0.00000000000001)
|
36
|
+
assert_in_delta(3.14157056614432, "@\t!\xef\xbf\xbd\x54!\xef\xbf\xbd ".double(0), 0.00000000000001)
|
30
37
|
end
|
31
|
-
|
32
|
-
# --- fake methods for zentest ---
|
33
|
-
def test_capitalize() assert(true); end
|
34
|
-
def test_capitalize_bang() assert(true); end
|
35
|
-
def test_casecmp() assert(true); end
|
36
|
-
def test_center() assert(true); end
|
37
|
-
def test_chomp() assert(true); end
|
38
|
-
def test_chomp_bang() assert(true); end
|
39
|
-
def test_chop() assert(true); end
|
40
|
-
def test_chop_bang() assert(true); end
|
41
|
-
def test_concat() assert(true); end
|
42
|
-
def test_count() assert(true); end
|
43
|
-
def test_crypt() assert(true); end
|
44
|
-
def test_delete() assert(true); end
|
45
|
-
def test_delete_bang() assert(true); end
|
46
|
-
def test_downcase() assert(true); end
|
47
|
-
def test_downcase_bang() assert(true); end
|
48
|
-
def test_dump() assert(true); end
|
49
|
-
def test_each() assert(true); end
|
50
|
-
def test_each_byte() assert(true); end
|
51
|
-
def test_each_line() assert(true); end
|
52
|
-
def test_empty_eh() assert(true); end
|
53
|
-
def test_ends_with() assert(true); end
|
54
|
-
def test_ensure_end() assert(true); end
|
55
|
-
def test_eql_eh() assert(true); end
|
56
|
-
def test_equals2() assert(true); end
|
57
|
-
def test_equalstilde() assert(true); end
|
58
|
-
def test_gsub() assert(true); end
|
59
|
-
def test_gsub_bang() assert(true); end
|
60
|
-
def test_hash() assert(true); end
|
61
|
-
def test_hex() assert(true); end
|
62
|
-
def test_include_eh() assert(true); end
|
63
|
-
def test_index() assert(true); end
|
64
|
-
def test_index_equals() assert(true); end
|
65
|
-
def test_insert() assert(true); end
|
66
|
-
def test_inspect() assert(true); end
|
67
|
-
def test_intern() assert(true); end
|
68
|
-
def test_lchop() assert(true); end
|
69
|
-
def test_length() assert(true); end
|
70
|
-
def test_ljust() assert(true); end
|
71
|
-
def test_lstrip() assert(true); end
|
72
|
-
def test_lstrip_bang() assert(true); end
|
73
|
-
def test_lt2() assert(true); end
|
74
|
-
def test_match() assert(true); end
|
75
|
-
def test_next() assert(true); end
|
76
|
-
def test_next_bang() assert(true); end
|
77
|
-
def test_oct() assert(true); end
|
78
|
-
def test_percent() assert(true); end
|
79
|
-
def test_plus() assert(true); end
|
80
|
-
def test_replace() assert(true); end
|
81
|
-
def test_reverse() assert(true); end
|
82
|
-
def test_reverse_bang() assert(true); end
|
83
|
-
def test_rindex() assert(true); end
|
84
|
-
def test_rjust() assert(true); end
|
85
|
-
def test_rstrip() assert(true); end
|
86
|
-
def test_rstrip_bang() assert(true); end
|
87
|
-
def test_scan() assert(true); end
|
88
|
-
def test_size() assert(true); end
|
89
|
-
def test_slice() assert(true); end
|
90
|
-
def test_slice_bang() assert(true); end
|
91
|
-
def test_spaceship() assert(true); end
|
92
|
-
def test_split() assert(true); end
|
93
|
-
def test_squeeze() assert(true); end
|
94
|
-
def test_squeeze_bang() assert(true); end
|
95
|
-
def test_starts_with() assert(true); end
|
96
|
-
def test_strip() assert(true); end
|
97
|
-
def test_strip_bang() assert(true); end
|
98
|
-
def test_sub() assert(true); end
|
99
|
-
def test_sub_bang() assert(true); end
|
100
|
-
def test_succ() assert(true); end
|
101
|
-
def test_succ_bang() assert(true); end
|
102
|
-
def test_sum() assert(true); end
|
103
|
-
def test_swapcase() assert(true); end
|
104
|
-
def test_swapcase_bang() assert(true); end
|
105
|
-
def test_times() assert(true); end
|
106
|
-
def test_to_f() assert(true); end
|
107
|
-
def test_to_i() assert(true); end
|
108
|
-
def test_to_s() assert(true); end
|
109
|
-
def test_to_str() assert(true); end
|
110
|
-
def test_to_sym() assert(true); end
|
111
|
-
def test_tr() assert(true); end
|
112
|
-
def test_tr_bang() assert(true); end
|
113
|
-
def test_tr_s() assert(true); end
|
114
|
-
def test_tr_s_bang() assert(true); end
|
115
|
-
def test_u8() assert(true); end
|
116
|
-
def test_unpack() assert(true); end
|
117
|
-
def test_upcase() assert(true); end
|
118
|
-
def test_upcase_bang() assert(true); end
|
119
|
-
def test_upto() assert(true); end
|
120
|
-
|
121
|
-
def test_class_yaml_new() assert(true); end
|
122
|
-
def test_is_binary_data_eh() assert(true); end
|
123
|
-
def test_is_complex_yaml_eh() assert(true); end
|
124
|
-
def test_taguri() assert(true); end
|
125
|
-
def test_taguri_equals() assert(true); end
|
126
|
-
def test_to_yaml() assert(true); end
|
38
|
+
|
127
39
|
end
|
@@ -0,0 +1,112 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/setup'
|
2
|
+
require 'javaclass/classpath/tracking_classpath'
|
3
|
+
require File.dirname(__FILE__) + '/test_folder_classpath'
|
4
|
+
require File.dirname(__FILE__) + '/test_composite_classpath'
|
5
|
+
|
6
|
+
module TestJavaClass
|
7
|
+
module TestClasspath
|
8
|
+
|
9
|
+
class TestTrackingFolderClasspath < TestFolderClasspath
|
10
|
+
# extend TestFolderClasspath to execute all tests again
|
11
|
+
|
12
|
+
def setup
|
13
|
+
super
|
14
|
+
@original = @cpe
|
15
|
+
@cpe = JavaClass::Classpath::TrackingClasspath.new(@cpe)
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_reset_access
|
19
|
+
@cpe.mark_accessed('ClassVersionTest10')
|
20
|
+
assert_equal(1, @cpe.accessed('ClassVersionTest10'))
|
21
|
+
@cpe.reset_access
|
22
|
+
assert_equal(0, @cpe.accessed('ClassVersionTest10'))
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_mark_accessed
|
26
|
+
assert_equal(0, @cpe.accessed)
|
27
|
+
assert_equal(0, @cpe.accessed('ClassVersionTest10'))
|
28
|
+
assert_equal(1, @cpe.mark_accessed('ClassVersionTest10'))
|
29
|
+
assert_equal(1, @cpe.accessed('ClassVersionTest10'))
|
30
|
+
assert_equal(0, @cpe.accessed('ClassVersionTest11'))
|
31
|
+
assert_equal(1, @cpe.accessed)
|
32
|
+
|
33
|
+
assert_equal(2, @cpe.mark_accessed('ClassVersionTest10'))
|
34
|
+
assert_nil(@cpe.mark_accessed('NonExistingClass'))
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_load_binary_tracked
|
38
|
+
assert_equal(0, @cpe.accessed('ClassVersionTest10'))
|
39
|
+
@cpe.load_binary('ClassVersionTest10')
|
40
|
+
assert_equal(1, @cpe.accessed('ClassVersionTest10'))
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_load_tracked
|
44
|
+
class << @original
|
45
|
+
def load(name)
|
46
|
+
load_binary(name)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
assert_equal(0, @cpe.accessed('ClassVersionTest10'))
|
50
|
+
@cpe.load('ClassVersionTest10')
|
51
|
+
assert_equal(1, @cpe.accessed('ClassVersionTest10'))
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_all_accessed
|
55
|
+
@cpe.mark_accessed('package/ClassVersionTest11')
|
56
|
+
@cpe.mark_accessed('ClassVersionTest10')
|
57
|
+
assert_equal(['ClassVersionTest10.class', 'package/ClassVersionTest11.class'], @cpe.all_accessed)
|
58
|
+
end
|
59
|
+
|
60
|
+
def test_class_new_invalud
|
61
|
+
assert_raise(ArgumentError){
|
62
|
+
JavaClass::Classpath::TrackingClasspath.new('123')
|
63
|
+
}
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
67
|
+
|
68
|
+
class TestTrackingCompositeClasspath < TestCompositeClasspath
|
69
|
+
# extend TestCompositeClasspath to execute all tests again
|
70
|
+
|
71
|
+
def test_reset_access
|
72
|
+
@cpe.mark_accessed('package/ClassVersionTest11.class')
|
73
|
+
assert_equal(1, @cpe.accessed('package/ClassVersionTest11.class'))
|
74
|
+
@cpe.reset_access
|
75
|
+
assert_equal(0, @cpe.accessed('package/ClassVersionTest11.class'))
|
76
|
+
end
|
77
|
+
|
78
|
+
def test_mark_accessed
|
79
|
+
assert_equal(0, @cpe.accessed)
|
80
|
+
assert_equal(0, @cpe.accessed('ClassVersionTest10'))
|
81
|
+
assert_equal(1, @cpe.mark_accessed('ClassVersionTest10'))
|
82
|
+
assert_equal(1, @cpe.accessed('ClassVersionTest10'))
|
83
|
+
assert_equal(0, @cpe.accessed('ClassVersionTest11'))
|
84
|
+
assert_equal(1, @cpe.accessed)
|
85
|
+
|
86
|
+
assert_equal(2, @cpe.mark_accessed('ClassVersionTest10'))
|
87
|
+
assert_nil(@cpe.mark_accessed('NonExistingClass'))
|
88
|
+
end
|
89
|
+
|
90
|
+
def test_mark_accessed_elements
|
91
|
+
@cpe.mark_accessed('ClassVersionTest10')
|
92
|
+
|
93
|
+
assert_equal(0, @cpe.elements[0].accessed)
|
94
|
+
assert_equal(1, @cpe.elements[1].accessed)
|
95
|
+
end
|
96
|
+
|
97
|
+
def test_load_binary_tracked
|
98
|
+
assert_equal(0, @cpe.accessed('ClassVersionTest10'))
|
99
|
+
@cpe.load_binary('ClassVersionTest10')
|
100
|
+
assert_equal(1, @cpe.accessed('ClassVersionTest10'))
|
101
|
+
end
|
102
|
+
|
103
|
+
def test_all_accessed
|
104
|
+
@cpe.mark_accessed('ClassVersionTest11')
|
105
|
+
@cpe.mark_accessed('ClassVersionTest10')
|
106
|
+
assert_equal(['ClassVersionTest10.class', 'ClassVersionTest11.class'], @cpe.all_accessed)
|
107
|
+
end
|
108
|
+
|
109
|
+
end
|
110
|
+
|
111
|
+
end
|
112
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/setup'
|
2
|
+
require 'javaclass/classpath/folder_classpath'
|
3
|
+
require 'javaclass/dsl/loading_classpath'
|
4
|
+
require 'javaclass/analyse/transitive_dependencies'
|
5
|
+
|
6
|
+
module TestJavaClass
|
7
|
+
module TestAnalyse
|
8
|
+
|
9
|
+
class TestTransitiveDependencies < Test::Unit::TestCase
|
10
|
+
|
11
|
+
def setup
|
12
|
+
@cpe = JavaClass::Dsl::LoadingClasspath.new(
|
13
|
+
JavaClass::Classpath::FolderClasspath.new("#{TEST_DATA_PATH}/transitive_dependencies"))
|
14
|
+
@cpe.extend(JavaClass::Analyse::TransitiveDependencies)
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_transitive_dependency_tree_not_exist
|
18
|
+
tree = @cpe.transitive_dependency_tree('NotExisting'.to_javaname)
|
19
|
+
assert_equal(1, tree.size)
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_transitive_dependency_tree
|
23
|
+
tree = @cpe.transitive_dependency_tree('Start'.to_javaname)
|
24
|
+
assert_equal(4, tree.size)
|
25
|
+
assert_equal(['Start', ['A', ['B', 'C']]], tree.to_a)
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/logging_folder_classpath'
|
2
|
+
require 'javaclass/classpath/jar_classpath'
|
3
|
+
|
4
|
+
module JavaClass
|
5
|
+
module Classpath
|
6
|
+
|
7
|
+
# Add a method +used_unpacked_folder?+ to see if the load_binary of the unpacked folder was called.
|
8
|
+
class JarClasspath
|
9
|
+
|
10
|
+
# Helper method to assert it the cache was called.
|
11
|
+
def used_unpacked_folder?
|
12
|
+
result = @delegate.was_called
|
13
|
+
@delegate.was_called = false # reset flag
|
14
|
+
result
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
module TestJavaClass
|
22
|
+
module TestClasspath
|
23
|
+
|
24
|
+
class TestUnpackingJarClasspath < Test::Unit::TestCase
|
25
|
+
|
26
|
+
def setup
|
27
|
+
JavaClass.unpack_jars!(:unpack)
|
28
|
+
@cpe = JavaClass::Classpath::JarClasspath.new("#{TEST_DATA_PATH}/jar_classpath/JarClasspathTest.jar")
|
29
|
+
end
|
30
|
+
|
31
|
+
def teardown
|
32
|
+
JavaClass.unpack_jars!(false)
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_load_binary
|
36
|
+
assert_equal(load_class('class_version/ClassVersionTest10'), @cpe.load_binary('ClassVersionTest10'))
|
37
|
+
assert(@cpe.used_unpacked_folder?)
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/setup'
|
2
|
+
require 'javaclass/gems/zip_file'
|
3
|
+
|
4
|
+
module TestJavaClass
|
5
|
+
module TestGems
|
6
|
+
|
7
|
+
class TestZipFile < Test::Unit::TestCase
|
8
|
+
|
9
|
+
def setup
|
10
|
+
@folder = "#{TEST_DATA_PATH}/zip_file"
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_patch_for_invalid_flags
|
14
|
+
assert_two_directories('commons-math-2.2-broken.zip')
|
15
|
+
assert_two_directories('regenerated-with-7zip.zip')
|
16
|
+
assert_two_directories('regenerated-with-jar.zip')
|
17
|
+
end
|
18
|
+
|
19
|
+
def assert_two_directories(zip_name)
|
20
|
+
zip = JavaClass::Gems::ZipFile.new(File.join(@folder, zip_name))
|
21
|
+
number = 0
|
22
|
+
zip.entries { |entry|
|
23
|
+
assert_not_nil(entry)
|
24
|
+
assert(!entry.file?)
|
25
|
+
number += 1
|
26
|
+
}
|
27
|
+
assert_equal(2, number)
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|