javaclass 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (175) hide show
  1. data/Rakefile +67 -56
  2. data/Readme.txt +42 -39
  3. data/example_task.rb +172 -0
  4. data/examples/check_interface_names.rb +44 -0
  5. data/examples/corpus.rb +19 -0
  6. data/examples/count_classes_in_modules.rb +38 -0
  7. data/examples/cumulative_dependencies.rb +39 -0
  8. data/examples/find_all_imported_types.rb +44 -0
  9. data/examples/find_referenced_modules.rb +53 -0
  10. data/examples/find_unreferenced_classes.rb +65 -0
  11. data/examples/generate_class_lists.rb +67 -43
  12. data/examples/profiler_scratchpad.rb +33 -0
  13. data/examples/simple_usage.rb +42 -0
  14. data/history.txt +29 -7
  15. data/javaclass.gemspec +31 -0
  16. data/lib/javaclass/adder_tree.rb +92 -0
  17. data/lib/javaclass/analyse/dependencies.rb +52 -0
  18. data/lib/javaclass/{metric/metrics.txt → analyse/ideas.txt} +2 -2
  19. data/lib/javaclass/analyse/transitive_dependencies.rb +52 -0
  20. data/lib/javaclass/classfile/access_flag_constants.rb +24 -0
  21. data/lib/javaclass/classfile/access_flags.rb +49 -26
  22. data/lib/javaclass/classfile/class_format_error.rb +37 -0
  23. data/lib/javaclass/classfile/class_magic.rb +16 -8
  24. data/lib/javaclass/classfile/class_version.rb +19 -25
  25. data/lib/javaclass/classfile/constant_pool.rb +110 -45
  26. data/lib/javaclass/classfile/constants/base.rb +33 -12
  27. data/lib/javaclass/classfile/constants/double_reference.rb +55 -41
  28. data/lib/javaclass/classfile/constants/single_reference.rb +29 -21
  29. data/lib/javaclass/classfile/constants/value.rb +43 -33
  30. data/lib/javaclass/classfile/java_class_header.rb +72 -46
  31. data/lib/javaclass/classfile/java_class_header_as_java_name.rb +33 -0
  32. data/lib/javaclass/classfile/java_class_header_shortcuts.rb +19 -0
  33. data/lib/javaclass/classfile/references.rb +21 -19
  34. data/lib/javaclass/classlist/class_entry.rb +26 -27
  35. data/lib/javaclass/classlist/jar_searcher.rb +34 -25
  36. data/lib/javaclass/classlist/list.rb +31 -31
  37. data/lib/javaclass/classlist/package_entry.rb +25 -24
  38. data/lib/javaclass/classpath/any_classpath.rb +48 -0
  39. data/lib/javaclass/classpath/class_not_found_error.rb +20 -0
  40. data/lib/javaclass/classpath/classpaths.txt +2 -2
  41. data/lib/javaclass/classpath/composite_classpath.rb +56 -54
  42. data/lib/javaclass/classpath/convention_classpath.rb +38 -0
  43. data/lib/javaclass/classpath/eclipse_classpath.rb +74 -0
  44. data/lib/javaclass/classpath/factory.rb +65 -0
  45. data/lib/javaclass/classpath/file_classpath.rb +47 -0
  46. data/lib/javaclass/classpath/folder_classpath.rb +42 -44
  47. data/lib/javaclass/classpath/jar_classpath.rb +91 -52
  48. data/lib/javaclass/classpath/java_home_classpath.rb +24 -13
  49. data/lib/javaclass/classpath/maven_classpath.rb +44 -0
  50. data/lib/javaclass/classpath/temporary_unpacker.rb +111 -0
  51. data/lib/javaclass/classpath/tracking_classpath.rb +144 -0
  52. data/lib/javaclass/classscanner/ideas.txt +3 -0
  53. data/lib/javaclass/classscanner/imported_types.rb +29 -0
  54. data/lib/javaclass/classscanner/scanners.rb +29 -0
  55. data/lib/javaclass/delegate_directive.rb +15 -0
  56. data/lib/javaclass/dsl/caching_classpath.rb +38 -0
  57. data/lib/javaclass/dsl/classpath_analysers.rb +27 -0
  58. data/lib/javaclass/dsl/java_name_factory.rb +79 -0
  59. data/lib/javaclass/dsl/loader.rb +42 -0
  60. data/lib/javaclass/dsl/loading_classpath.rb +53 -0
  61. data/lib/javaclass/dsl/mixin.rb +54 -0
  62. data/lib/javaclass/gems/zip_file.rb +154 -0
  63. data/lib/javaclass/java_language.rb +50 -0
  64. data/lib/javaclass/java_name.rb +329 -55
  65. data/lib/javaclass/java_name_scanner.rb +95 -0
  66. data/lib/javaclass/resources/iso_3166_countries.txt +240 -0
  67. data/lib/javaclass/resources/jdk0_packages.txt +6 -0
  68. data/lib/javaclass/resources/jdk1_packages.txt +6 -0
  69. data/lib/javaclass/resources/jdk2_packages.txt +4 -0
  70. data/lib/javaclass/resources/jdk3_packages.txt +6 -0
  71. data/lib/javaclass/resources/jdk4_packages.txt +22 -0
  72. data/lib/javaclass/resources/jdk5_packages.txt +5 -0
  73. data/lib/javaclass/resources/jdk6_packages.txt +7 -0
  74. data/lib/javaclass/resources/jdk7_packages.txt +0 -0
  75. data/lib/javaclass/resources/jdk_packages.txt +53 -0
  76. data/lib/javaclass/resources/reserved_words.txt +50 -0
  77. data/lib/javaclass/string_hexdump.rb +76 -0
  78. data/lib/javaclass/string_ux.rb +21 -10
  79. data/lib/javaclass.rb +16 -41
  80. data/license.txt +28 -0
  81. data/planned.txt +13 -0
  82. data/test/data/Object_102.class +0 -0
  83. data/test/data/Runnable_102.class +0 -0
  84. data/test/data/access_flags/AccessFlagsTestAnnotation.class +0 -0
  85. data/test/data/access_flags/AccessFlagsTestAnnotation.java +3 -0
  86. data/test/data/access_flags/AccessFlagsTestEnum$1.class +0 -0
  87. data/test/data/access_flags/AccessFlagsTestEnum.class +0 -0
  88. data/test/data/access_flags/AccessFlagsTestEnum.java +6 -0
  89. data/test/data/access_flags/AccessFlagsTestInner$1.class +0 -0
  90. data/test/data/access_flags/AccessFlagsTestInner$2.class +0 -0
  91. data/test/data/access_flags/AccessFlagsTestInner.class +0 -0
  92. data/test/data/access_flags/AccessFlagsTestInner.java +13 -0
  93. data/test/data/access_flags/AccessFlagsTestPackage.class +0 -0
  94. data/test/data/access_flags/AccessFlagsTestPackage.java +1 -1
  95. data/test/data/api/packagename/AccessFlagsTestPublic.class +0 -0
  96. data/test/data/class_version/ClassVersionTest17.class +0 -0
  97. data/test/data/class_version/make.bat +6 -2
  98. data/test/data/eclipse_classpath/classes/ClassVersionTest12.class +0 -0
  99. data/test/data/eclipse_classpath/lib/JarClasspathTest.jar +0 -0
  100. data/test/data/eclipse_classpath/test-classes/ClassVersionTest13.class +0 -0
  101. data/test/data/folder_classpath/{JarClasspathTestFolder → classes}/ClassVersionTest10.class +0 -0
  102. data/test/data/folder_classpath/{JarClasspathTestFolder → classes}/package/ClassVersionTest11.class +0 -0
  103. data/test/data/jar_classpath/JarClasspathTest.jar +0 -0
  104. data/test/data/jar_classpath/JarClasspathTest.zip +0 -0
  105. data/test/data/jar_classpath/JarClasspathTestManifest.jar +0 -0
  106. data/test/data/jar_classpath/JarClasspathTestMultiManifest.jar +0 -0
  107. data/test/data/jar_classpath/make.bat +6 -2
  108. data/test/data/jar_searcher/BrokenRunnable_102.class +0 -0
  109. data/test/data/java_home_classpath/jdk118/lib/classes.zip +0 -0
  110. data/test/data/java_name_scanner/META-INF/MANIFEST.MF +12 -0
  111. data/test/data/java_name_scanner/plugin.xml +18 -0
  112. data/test/data/maven_classpath/module/pom.xml +8 -0
  113. data/test/data/maven_classpath/module/target/classes/ClassVersionTest12.class +0 -0
  114. data/test/data/maven_classpath/pom.xml +8 -0
  115. data/test/data/maven_classpath/target/classes/ClassVersionTest10.class +0 -0
  116. data/test/data/maven_classpath/target/test-classes/ClassVersionTest11.class +0 -0
  117. data/test/data/transitive_dependencies/A.class +0 -0
  118. data/test/data/transitive_dependencies/A.java +5 -0
  119. data/test/data/transitive_dependencies/B.class +0 -0
  120. data/test/data/transitive_dependencies/B.java +3 -0
  121. data/test/data/transitive_dependencies/C.class +0 -0
  122. data/test/data/transitive_dependencies/C.java +3 -0
  123. data/test/data/transitive_dependencies/Start.class +0 -0
  124. data/test/data/transitive_dependencies/Start.java +4 -0
  125. data/test/data/transitive_dependencies/make.bat +3 -0
  126. data/test/data/zip_file/commons-math-2.2-broken.zip +0 -0
  127. data/test/data/zip_file/regenerated-with-7zip.zip +0 -0
  128. data/test/data/zip_file/regenerated-with-jar.zip +0 -0
  129. data/test/dot_classpath.rb +33 -0
  130. data/test/logging_folder_classpath.rb +19 -0
  131. data/test/setup.rb +1 -1
  132. data/test/test_access_flags.rb +58 -32
  133. data/test/test_adder_tree.rb +78 -0
  134. data/test/test_any_classpath.rb +39 -0
  135. data/test/test_base.rb +9 -7
  136. data/test/test_caching_classpath.rb +41 -0
  137. data/test/test_class_entry.rb +60 -60
  138. data/test/test_class_magic.rb +31 -0
  139. data/test/test_class_version.rb +25 -25
  140. data/test/test_composite_classpath.rb +22 -23
  141. data/test/test_constant_pool.rb +37 -13
  142. data/test/test_convention_classpath.rb +39 -0
  143. data/test/test_eclipse_classpath.rb +73 -0
  144. data/test/test_factory.rb +61 -0
  145. data/test/test_folder_classpath.rb +26 -10
  146. data/test/test_imported_types.rb +34 -0
  147. data/test/test_jar_classpath.rb +29 -14
  148. data/test/test_jar_searcher.rb +27 -14
  149. data/test/test_java_class_header.rb +22 -10
  150. data/test/test_java_class_header_as_java_name.rb +41 -0
  151. data/test/test_java_home_classpath.rb +17 -11
  152. data/test/test_java_name.rb +204 -64
  153. data/test/test_java_name_factory.rb +52 -0
  154. data/test/test_java_name_scanner.rb +24 -0
  155. data/test/test_javaclass_api.rb +43 -0
  156. data/test/test_list.rb +58 -44
  157. data/test/test_load_directive.rb +34 -0
  158. data/test/test_maven_classpath.rb +46 -0
  159. data/test/test_package_entry.rb +27 -22
  160. data/test/test_references.rb +14 -14
  161. data/test/test_string_hexdump.rb +24 -0
  162. data/test/test_string_ux.rb +18 -106
  163. data/test/test_tracking_classpath.rb +112 -0
  164. data/test/test_transitive_dependencies.rb +31 -0
  165. data/test/test_unpacking_jar_classpath.rb +43 -0
  166. data/test/test_zip_file.rb +33 -0
  167. data/test/ts_all_tests.rb +80 -18
  168. data/thanks.txt +2 -0
  169. metadata +151 -22
  170. data/lib/javaclass/classpath/port_ClassPathEntry.java +0 -202
  171. data/lib/javaclass/classpath/port_ClassPathEntryFactory.java +0 -311
  172. data/lib/javaclass/classpath/port_DirectoryRepository.java +0 -24
  173. data/lib/javaclass/metric/ccd.rb +0 -68
  174. data/lib/javaclass/metric/class_usage.rb +0 -41
  175. 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
@@ -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', true, 2);
12
+ pkg.add_class('packagename.PublicClass', :public, 2);
13
13
  assert_equal(1, pkg.size)
14
- pkg.add_class('packagename.PublicInterface', true, 2);
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', true, 2);
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', true, 2);
33
- pkg.add_class('packagename.PublicInterface', true, 2);
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', true, 3)
44
- pkg.add_class('packagename.SomeClass', true, 3)
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', true, 2);
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
@@ -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(false)
14
+ fields = @refs.referenced_fields
15
15
  assert_equal(0, fields.size)
16
-
17
- fields = @refs.referenced_fields(true)
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(false)
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(true)
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
@@ -1,127 +1,39 @@
1
1
  require File.dirname(__FILE__) + '/setup'
2
2
  require 'javaclass/string_ux'
3
3
 
4
- class TestString < Test::Unit::TestCase
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