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.
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