javaclass 0.0.3 → 0.0.4
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 +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
|